From 0e2001d50f5e7d1438feb6bc590bd3d7cd3e8513 Mon Sep 17 00:00:00 2001 From: Andrey Markelov Date: Mon, 11 May 2026 10:05:44 -0700 Subject: [PATCH] Spec update 2026-05-11 (merged namespace approach) Generated from merged spec where each namespace is a single .stone file. This produces identical Rust output to the flat multi-file approach. Co-Authored-By: Claude Opus 4.6 --- dropbox-api-spec | 2 +- src/generated/async_routes/account.rs | 18 + src/generated/async_routes/account_id.rs | 13 + src/generated/async_routes/check.rs | 4 +- src/generated/async_routes/files.rs | 368 +- src/generated/async_routes/mod.rs | 4 + src/generated/async_routes/paper.rs | 35 +- src/generated/async_routes/riviera.rs | 89 + src/generated/async_routes/sharing.rs | 89 +- src/generated/async_routes/team.rs | 100 +- src/generated/async_routes/users.rs | 2 +- src/generated/sync_routes/account.rs | 21 + src/generated/sync_routes/account_id.rs | 13 + src/generated/sync_routes/check.rs | 4 +- src/generated/sync_routes/files.rs | 376 +- src/generated/sync_routes/mod.rs | 4 + src/generated/sync_routes/paper.rs | 37 +- src/generated/sync_routes/riviera.rs | 97 + src/generated/sync_routes/sharing.rs | 94 +- src/generated/sync_routes/team.rs | 108 +- src/generated/sync_routes/users.rs | 2 +- src/generated/types/account.rs | 406 + src/generated/types/account_id.rs | 10 + src/generated/types/auth.rs | 190 + src/generated/types/check.rs | 68 + src/generated/types/common.rs | 138 +- src/generated/types/dbx_async.rs | 2 +- src/generated/types/file_properties.rs | 13 +- src/generated/types/file_requests.rs | 130 +- src/generated/types/files.rs | 1197 +- src/generated/types/mod.rs | 4 + src/generated/types/paper.rs | 420 +- src/generated/types/riviera.rs | 1148 + src/generated/types/sharing.rs | 1856 +- src/generated/types/team.rs | 856 +- src/generated/types/team_log.rs | 93785 +++++++++++++-------- src/generated/types/team_policies.rs | 427 +- src/generated/types/users.rs | 201 +- 38 files changed, 66505 insertions(+), 35826 deletions(-) create mode 100644 src/generated/async_routes/account_id.rs create mode 100644 src/generated/async_routes/riviera.rs create mode 100644 src/generated/sync_routes/account_id.rs create mode 100644 src/generated/sync_routes/riviera.rs create mode 100644 src/generated/types/account_id.rs create mode 100644 src/generated/types/riviera.rs diff --git a/dropbox-api-spec b/dropbox-api-spec index c8364404..f7104495 160000 --- a/dropbox-api-spec +++ b/dropbox-api-spec @@ -1 +1 @@ -Subproject commit c8364404953d875801d496a81f786c5545f78223 +Subproject commit f7104495e2fbb21b281d9aa58089d3d1816c9ca9 diff --git a/src/generated/async_routes/account.rs b/src/generated/async_routes/account.rs index 1096f622..c4585ba4 100644 --- a/src/generated/async_routes/account.rs +++ b/src/generated/async_routes/account.rs @@ -11,6 +11,24 @@ #[allow(unused_imports)] pub use crate::generated::types::account::*; +/// This lovely endpoint gets the account photo of a given user. +pub fn get_photo<'a>( + client: &'a impl crate::async_client_trait::UserAuthClient, + arg: &'a AccountPhotoGetArg, + range_start: Option, + range_end: Option, +) -> impl std::future::Future, crate::Error>> + Send + 'a { + crate::client_helpers::request_with_body( + client, + crate::client_trait_common::Endpoint::Content, + crate::client_trait_common::Style::Download, + "account/get_photo", + arg, + None, + range_start, + range_end) +} + /// Sets a user's profile photo. pub fn set_profile_photo<'a>( client: &'a impl crate::async_client_trait::UserAuthClient, diff --git a/src/generated/async_routes/account_id.rs b/src/generated/async_routes/account_id.rs new file mode 100644 index 00000000..cf4d2d34 --- /dev/null +++ b/src/generated/async_routes/account_id.rs @@ -0,0 +1,13 @@ +// DO NOT EDIT +// This file was @generated by Stone + +#![allow( + clippy::too_many_arguments, + clippy::large_enum_variant, + clippy::result_large_err, + clippy::doc_markdown, +)] + +#[allow(unused_imports)] +pub use crate::generated::types::account_id::*; + diff --git a/src/generated/async_routes/check.rs b/src/generated/async_routes/check.rs index 9a08f4f0..9c81df95 100644 --- a/src/generated/async_routes/check.rs +++ b/src/generated/async_routes/check.rs @@ -24,7 +24,7 @@ pub use crate::generated::types::check::*; pub fn app<'a>( client: &'a impl crate::async_client_trait::AppAuthClient, arg: &'a EchoArg, -) -> impl std::future::Future>> + Send + 'a { +) -> impl std::future::Future>> + Send + 'a { crate::client_helpers::request( client, crate::client_trait_common::Endpoint::Api, @@ -46,7 +46,7 @@ pub fn app<'a>( pub fn user<'a>( client: &'a impl crate::async_client_trait::UserAuthClient, arg: &'a EchoArg, -) -> impl std::future::Future>> + Send + 'a { +) -> impl std::future::Future>> + Send + 'a { crate::client_helpers::request( client, crate::client_trait_common::Endpoint::Api, diff --git a/src/generated/async_routes/files.rs b/src/generated/async_routes/files.rs index 1593d966..66c6df57 100644 --- a/src/generated/async_routes/files.rs +++ b/src/generated/async_routes/files.rs @@ -18,7 +18,7 @@ pub use crate::generated::types::files::*; /// *PREVIEW*: This function may change or disappear without notice. #[cfg(feature = "unstable")] #[cfg_attr(docsrs, doc(cfg(feature = "unstable")))] -#[deprecated(note = "replaced by get_metadata")] +#[deprecated] pub fn alpha_get_metadata<'a>( client: &'a impl crate::async_client_trait::UserAuthClient, arg: &'a AlphaGetMetadataArg, @@ -34,14 +34,14 @@ pub fn alpha_get_metadata<'a>( /// Create a new file with the contents provided in the request. Note that the behavior of this /// alpha endpoint is unstable and subject to change. Do not use this to upload a file larger than -/// 150 MB. Instead, create an upload session with +/// 150 MiB. Instead, create an upload session with /// [`upload_session_start()`](crate::files::upload_session_start). /// /// # Stability /// *PREVIEW*: This function may change or disappear without notice. #[cfg(feature = "unstable")] #[cfg_attr(docsrs, doc(cfg(feature = "unstable")))] -#[deprecated(note = "replaced by upload")] +#[deprecated] pub fn alpha_upload<'a>( client: &'a impl crate::async_client_trait::UserAuthClient, arg: &'a UploadArg, @@ -58,7 +58,7 @@ pub fn alpha_upload<'a>( /// Copy a file or folder to a different location in the user's Dropbox. If the source path is a /// folder all its contents will be copied. -#[deprecated(note = "replaced by copy_v2")] +#[deprecated] pub fn copy<'a>( client: &'a impl crate::async_client_trait::UserAuthClient, arg: &'a RelocationArg, @@ -90,7 +90,7 @@ pub fn copy_v2<'a>( /// Copy multiple files or folders to different locations at once in the user's Dropbox. This route /// will return job ID immediately and do the async copy job in background. Please use /// [`copy_batch_check()`](crate::files::copy_batch_check) to check the job status. -#[deprecated(note = "replaced by copy_batch_v2")] +#[deprecated] pub fn copy_batch<'a>( client: &'a impl crate::async_client_trait::UserAuthClient, arg: &'a RelocationBatchArg, @@ -125,7 +125,7 @@ pub fn copy_batch_v2<'a>( /// Returns the status of an asynchronous job for [`copy_batch()`](crate::files::copy_batch). If /// success, it returns list of results for each entry. -#[deprecated(note = "replaced by copy_batch_check_v2")] +#[deprecated] pub fn copy_batch_check<'a>( client: &'a impl crate::async_client_trait::UserAuthClient, arg: &'a crate::types::dbx_async::PollArg, @@ -186,7 +186,7 @@ pub fn copy_reference_save<'a>( } /// Create a folder at a given path. -#[deprecated(note = "replaced by create_folder_v2")] +#[deprecated] pub fn create_folder<'a>( client: &'a impl crate::async_client_trait::UserAuthClient, arg: &'a CreateFolderArg, @@ -217,7 +217,7 @@ pub fn create_folder_v2<'a>( /// Create multiple folders at once. This route is asynchronous for large batches, which returns a /// job ID immediately and runs the create folder batch asynchronously. Otherwise, creates the /// folders and returns the result synchronously for smaller inputs. You can force asynchronous -/// behaviour by using the [`CreateFolderBatchArg::force_async`](CreateFolderBatchArg) flag. Use +/// behaviour by using the CreateFolderBatchArg.force_async flag. Use /// [`create_folder_batch_check()`](crate::files::create_folder_batch_check) to check the job /// status. pub fn create_folder_batch<'a>( @@ -251,9 +251,9 @@ pub fn create_folder_batch_check<'a>( /// Delete the file or folder at a given path. If the path is a folder, all its contents will be /// deleted too. A successful response indicates that the file or folder was deleted. The returned -/// metadata will be the corresponding [`FileMetadata`] or [`FolderMetadata`] for the item at time -/// of deletion, and not a [`DeletedMetadata`] object. -#[deprecated(note = "replaced by delete_v2")] +/// metadata will be the corresponding FileMetadata or FolderMetadata for the item at time of +/// deletion, and not a DeletedMetadata object. +#[deprecated] pub fn delete<'a>( client: &'a impl crate::async_client_trait::UserAuthClient, arg: &'a DeleteArg, @@ -269,8 +269,8 @@ pub fn delete<'a>( /// Delete the file or folder at a given path. If the path is a folder, all its contents will be /// deleted too. A successful response indicates that the file or folder was deleted. The returned -/// metadata will be the corresponding [`FileMetadata`] or [`FolderMetadata`] for the item at time -/// of deletion, and not a [`DeletedMetadata`] object. +/// metadata will be the corresponding FileMetadata or FolderMetadata for the item at time of +/// deletion, and not a DeletedMetadata object. pub fn delete_v2<'a>( client: &'a impl crate::async_client_trait::UserAuthClient, arg: &'a DeleteArg, @@ -355,8 +355,7 @@ pub fn download_zip<'a>( } /// Export a file from a user's Dropbox. This route only supports exporting files that cannot be -/// downloaded directly and whose [`ExportResult::file_metadata`](ExportResult) has -/// [`ExportInfo::export_as`](ExportInfo) populated. +/// downloaded directly and whose ExportResult.file_metadata has ExportInfo.export_as populated. /// /// # Stability /// *PREVIEW*: This function may change or disappear without notice. @@ -409,9 +408,8 @@ pub fn get_metadata<'a>( /// Get a preview for a file. Currently, PDF previews are generated for files with the following /// extensions: .ai, .doc, .docm, .docx, .eps, .gdoc, .gslides, .odp, .odt, .pps, .ppsm, .ppsx, -/// .ppt, .pptm, .pptx, .rtf. HTML previews are generated for files with the following extensions: -/// .csv, .ods, .xls, .xlsm, .gsheet, .xlsx. Other formats will return an unsupported extension -/// error. +/// .ppt, .pptm, .pptx, .rtf. HTML previews are generated for .csv, .ods, .xls, .xlsm, .gsheet, +/// .xlsx. Other formats will return an unsupported extension error. pub fn get_preview<'a>( client: &'a impl crate::async_client_trait::UserAuthClient, arg: &'a PreviewArg, @@ -445,42 +443,28 @@ pub fn get_temporary_link<'a>( None) } -/// Get a one-time use temporary upload link to upload a file to a Dropbox location. -/// -/// This endpoint acts as a delayed [`upload()`](crate::files::upload). The returned temporary -/// upload link may be used to make a POST request with the data to be uploaded. The upload will -/// then be perfomed with the [`CommitInfo`] previously provided to -/// [`get_temporary_upload_link()`](crate::files::get_temporary_upload_link) but evaluated only upon -/// consumption. Hence, errors stemming from invalid [`CommitInfo`] with respect to the state of the -/// user's Dropbox will only be communicated at consumption time. Additionally, these errors are -/// surfaced as generic HTTP 409 Conflict responses, potentially hiding issue details. The maximum -/// temporary upload link duration is 4 hours. Upon consumption or expiration, a new link will have -/// to be generated. Multiple links may exist for a specific upload path at any given time. -/// -/// The POST request on the temporary upload link must have its Content-Type set to -/// "application/octet-stream". -/// -/// Example temporary upload link consumption request: -/// -/// curl -X POST https://content.dropboxapi.com/apitul/1/bNi2uIYF51cVBND --header "Content-Type: -/// application/octet-stream" --data-binary @local_file.txt -/// -/// A successful temporary upload link consumption request returns the content hash of the uploaded -/// data in JSON format. -/// -/// Example successful temporary upload link consumption response: {"content-hash": -/// "599d71033d700ac892a0e48fa61b125d2f5994"} -/// -/// An unsuccessful temporary upload link consumption request returns any of the following status -/// codes: -/// -/// HTTP 400 Bad Request: Content-Type is not one of application/octet-stream and text/plain or -/// request is invalid. HTTP 409 Conflict: The temporary upload link does not exist or is currently -/// unavailable, the upload failed, or another error happened. HTTP 410 Gone: The temporary upload -/// link is expired or consumed. -/// -/// Example unsuccessful temporary upload link consumption response: Temporary upload link has been -/// recently consumed. +/// Get a one-time use temporary upload link to upload a file to a Dropbox location. This endpoint +/// acts as a delayed upload(). The returned temporary upload link may be used to make a POST +/// request with the data to be uploaded. The upload will then be perfomed with the CommitInfo +/// previously provided to getTemporaryUploadLink() but evaluated only upon consumption. Hence, +/// errors stemming from invalid CommitInfo with respect to the state of the user's Dropbox will +/// only be communicated at consumption time. Additionally, these errors are surfaced as generic +/// HTTP 409 Conflict responses, potentially hiding issue details. The maximum temporary upload link +/// duration is 4 hours. Upon consumption or expiration, a new link will have to be generated. +/// Multiple links may exist for a specific upload path at any given time. The POST request on the +/// temporary upload link must have its Content-Type set to "application/octet-stream". Example +/// temporary upload link consumption request: curl -X POST +/// https://content.dropboxapi.com/apitul/1/bNi2uIYF51cVBND --header "Content-Type: +/// application/octet-stream" --data-binary @local_file.txt A successful temporary upload link +/// consumption request returns the content hash of the uploaded data in JSON format. Example +/// successful temporary upload link consumption response: {"content-hash": +/// "599d71033d700ac892a0e48fa61b125d2f5994"} An unsuccessful temporary upload link consumption +/// request returns any of the following status codes: HTTP 400 Bad Request: Content-Type is not +/// one of application/octet-stream and text/plain or request is invalid. HTTP 409 Conflict: The +/// temporary upload link does not exist or is currently unavailable, the upload failed, or another +/// error happened. HTTP 410 Gone: The temporary upload link is expired or consumed. Example +/// unsuccessful temporary upload link consumption response: Temporary upload link has been recently +/// consumed. pub fn get_temporary_upload_link<'a>( client: &'a impl crate::async_client_trait::UserAuthClient, arg: &'a GetTemporaryUploadLinkArg, @@ -571,22 +555,20 @@ pub fn get_thumbnail_batch<'a>( } /// Starts returning the contents of a folder. If the result's -/// [`ListFolderResult::has_more`](ListFolderResult) field is `true`, call +/// [`ListFolderResult::has_more`](ListFolderResult) field is true, call /// [`list_folder_continue()`](crate::files::list_folder_continue) with the returned -/// [`ListFolderResult::cursor`](ListFolderResult) to retrieve more entries. If you're using -/// [`ListFolderArg::recursive`](ListFolderArg) set to `true` to keep a local cache of the contents -/// of a Dropbox account, iterate through each entry in order and process them as follows to keep -/// your local state in sync: For each [`FileMetadata`], store the new entry at the given path in -/// your local state. If the required parent folders don't exist yet, create them. If there's -/// already something else at the given path, replace it and remove all its children. For each -/// [`FolderMetadata`], store the new entry at the given path in your local state. If the required -/// parent folders don't exist yet, create them. If there's already something else at the given -/// path, replace it but leave the children as they are. Check the new entry's -/// [`FolderSharingInfo::read_only`](FolderSharingInfo) and set all its children's read-only -/// statuses to match. For each [`DeletedMetadata`], if your local state has something at the given -/// path, remove it and all its children. If there's nothing at the given path, ignore this entry. -/// Note: [`auth::RateLimitError`](crate::types::auth::RateLimitError) may be returned if multiple -/// [`list_folder()`](crate::files::list_folder) or +/// ListFolderResult.cursor to retrieve more entries. If you're using ListFolderArg.recursive set to +/// true to keep a local cache of the contents of a Dropbox account, iterate through each entry in +/// order and process them as follows to keep your local state in sync: For each FileMetadata, store +/// the new entry at the given path in your local state. If the required parent folders don't exist +/// yet, create them. If there's already something else at the given path, replace it and remove all +/// its children. For each FolderMetadata, store the new entry at the given path in your local +/// state. If the required parent folders don't exist yet, create them. If there's already something +/// else at the given path, replace it but leave the children as they are. Check the new entry's +/// FolderSharingInfo.read_only and set all its children's read-only statuses to match. For each +/// DeletedMetadata, if your local state has something at the given path, remove it and all its +/// children. If there's nothing at the given path, ignore this entry. Note: auth.RateLimitError may +/// be returned if multiple [`list_folder()`](crate::files::list_folder) or /// [`list_folder_continue()`](crate::files::list_folder_continue) calls with same parameters are /// made simultaneously by same API app for same user. If your app implements retry logic, please /// hold off the retry until the previous request finishes. @@ -604,22 +586,20 @@ pub fn list_folder<'a>( } /// Starts returning the contents of a folder. If the result's -/// [`ListFolderResult::has_more`](ListFolderResult) field is `true`, call +/// [`ListFolderResult::has_more`](ListFolderResult) field is true, call /// [`list_folder_continue()`](crate::files::list_folder_continue) with the returned -/// [`ListFolderResult::cursor`](ListFolderResult) to retrieve more entries. If you're using -/// [`ListFolderArg::recursive`](ListFolderArg) set to `true` to keep a local cache of the contents -/// of a Dropbox account, iterate through each entry in order and process them as follows to keep -/// your local state in sync: For each [`FileMetadata`], store the new entry at the given path in -/// your local state. If the required parent folders don't exist yet, create them. If there's -/// already something else at the given path, replace it and remove all its children. For each -/// [`FolderMetadata`], store the new entry at the given path in your local state. If the required -/// parent folders don't exist yet, create them. If there's already something else at the given -/// path, replace it but leave the children as they are. Check the new entry's -/// [`FolderSharingInfo::read_only`](FolderSharingInfo) and set all its children's read-only -/// statuses to match. For each [`DeletedMetadata`], if your local state has something at the given -/// path, remove it and all its children. If there's nothing at the given path, ignore this entry. -/// Note: [`auth::RateLimitError`](crate::types::auth::RateLimitError) may be returned if multiple -/// [`list_folder()`](crate::files::list_folder) or +/// ListFolderResult.cursor to retrieve more entries. If you're using ListFolderArg.recursive set to +/// true to keep a local cache of the contents of a Dropbox account, iterate through each entry in +/// order and process them as follows to keep your local state in sync: For each FileMetadata, store +/// the new entry at the given path in your local state. If the required parent folders don't exist +/// yet, create them. If there's already something else at the given path, replace it and remove all +/// its children. For each FolderMetadata, store the new entry at the given path in your local +/// state. If the required parent folders don't exist yet, create them. If there's already something +/// else at the given path, replace it but leave the children as they are. Check the new entry's +/// FolderSharingInfo.read_only and set all its children's read-only statuses to match. For each +/// DeletedMetadata, if your local state has something at the given path, remove it and all its +/// children. If there's nothing at the given path, ignore this entry. Note: auth.RateLimitError may +/// be returned if multiple [`list_folder()`](crate::files::list_folder) or /// [`list_folder_continue()`](crate::files::list_folder_continue) calls with same parameters are /// made simultaneously by same API app for same user. If your app implements retry logic, please /// hold off the retry until the previous request finishes. @@ -690,8 +670,6 @@ pub fn list_folder_get_latest_cursor<'a>( /// [`list_folder_continue()`](crate::files::list_folder_continue), this call gives you a /// low-latency way to monitor an account for file changes. The connection will block until there /// are changes available or a timeout occurs. This endpoint is useful mostly for client-side apps. -/// If you're looking for server-side notifications, check out our [webhooks -/// documentation](https://www.dropbox.com/developers/reference/webhooks). pub fn list_folder_longpoll<'a>( client: &'a impl crate::async_client_trait::NoauthClient, arg: &'a ListFolderLongpollArg, @@ -708,10 +686,10 @@ pub fn list_folder_longpoll<'a>( /// Returns revisions for files based on a file path or a file id. The file path or file id is /// identified from the latest file entry at the given file path or id. This end point allows your /// app to query either by file path or file id by setting the mode parameter appropriately. In the -/// [`ListRevisionsMode::Path`] (default) mode, all revisions at the same file path as the latest -/// file entry are returned. If revisions with the same file id are desired, then mode must be set -/// to [`ListRevisionsMode::Id`]. The [`ListRevisionsMode::Id`] mode is useful to retrieve revisions -/// for a given file across moves or renames. +/// ListRevisionsMode.path (default) mode, all revisions at the same file path as the latest file +/// entry are returned. If revisions with the same file id are desired, then mode must be set to +/// ListRevisionsMode.id. The ListRevisionsMode.id mode is useful to retrieve revisions for a given +/// file across moves or renames. pub fn list_revisions<'a>( client: &'a impl crate::async_client_trait::UserAuthClient, arg: &'a ListRevisionsArg, @@ -743,7 +721,7 @@ pub fn lock_file_batch<'a>( /// Move a file or folder to a different location in the user's Dropbox. If the source path is a /// folder all its contents will be moved. -#[deprecated(note = "replaced by move_v2")] +#[deprecated] pub fn do_move<'a>( client: &'a impl crate::async_client_trait::UserAuthClient, arg: &'a RelocationArg, @@ -775,7 +753,7 @@ pub fn move_v2<'a>( /// Move multiple files or folders to different locations at once in the user's Dropbox. This route /// will return job ID immediately and do the async moving job in background. Please use /// [`move_batch_check()`](crate::files::move_batch_check) to check the job status. -#[deprecated(note = "replaced by move_batch_v2")] +#[deprecated] pub fn move_batch<'a>( client: &'a impl crate::async_client_trait::UserAuthClient, arg: &'a RelocationBatchArg, @@ -811,7 +789,7 @@ pub fn move_batch_v2<'a>( /// Returns the status of an asynchronous job for [`move_batch()`](crate::files::move_batch). If /// success, it returns list of results for each entry. -#[deprecated(note = "replaced by move_batch_check_v2")] +#[deprecated] pub fn move_batch_check<'a>( client: &'a impl crate::async_client_trait::UserAuthClient, arg: &'a crate::types::dbx_async::PollArg, @@ -897,6 +875,8 @@ pub fn permanently_delete<'a>( None) } +/// Add property groups to a Dropbox file. See templates/add_for_user or templates/add_for_team to +/// create new templates. #[deprecated] pub fn properties_add<'a>( client: &'a impl crate::async_client_trait::UserAuthClient, @@ -911,6 +891,8 @@ pub fn properties_add<'a>( None) } +/// Overwrite property groups associated with a file. This endpoint should be used instead of +/// properties/update when property groups are being overwritten rather than updated via a "delta". #[deprecated] pub fn properties_overwrite<'a>( client: &'a impl crate::async_client_trait::UserAuthClient, @@ -925,47 +907,9 @@ pub fn properties_overwrite<'a>( None) } -#[deprecated] -pub fn properties_remove<'a>( - client: &'a impl crate::async_client_trait::UserAuthClient, - arg: &'a crate::types::file_properties::RemovePropertiesArg, -) -> impl std::future::Future>> + Send + 'a { - crate::client_helpers::request( - client, - crate::client_trait_common::Endpoint::Api, - crate::client_trait_common::Style::Rpc, - "files/properties/remove", - arg, - None) -} - -#[deprecated] -pub fn properties_template_get<'a>( - client: &'a impl crate::async_client_trait::UserAuthClient, - arg: &'a crate::types::file_properties::GetTemplateArg, -) -> impl std::future::Future>> + Send + 'a { - crate::client_helpers::request( - client, - crate::client_trait_common::Endpoint::Api, - crate::client_trait_common::Style::Rpc, - "files/properties/template/get", - arg, - None) -} - -#[deprecated] -pub fn properties_template_list( - client: &impl crate::async_client_trait::UserAuthClient, -) -> impl std::future::Future>> + Send + '_ { - crate::client_helpers::request( - client, - crate::client_trait_common::Endpoint::Api, - crate::client_trait_common::Style::Rpc, - "files/properties/template/list", - &(), - None) -} - +/// Add, update or remove properties associated with the supplied file and templates. This endpoint +/// should be used instead of properties/overwrite when property groups are being updated via a +/// "delta" instead of overwriting all properties of a file. #[deprecated] pub fn properties_update<'a>( client: &'a impl crate::async_client_trait::UserAuthClient, @@ -996,8 +940,6 @@ pub fn restore<'a>( /// Save the data from a specified URL into a file in user's Dropbox. Note that the transfer from /// the URL must complete within 15 minutes, or the operation will time out and the job will fail. -/// If the given path already exists, the file will be renamed to avoid the conflict (e.g. myfile -/// (1).txt). pub fn save_url<'a>( client: &'a impl crate::async_client_trait::UserAuthClient, arg: &'a SaveUrlArg, @@ -1154,11 +1096,11 @@ pub fn unlock_file_batch<'a>( } /// Create a new file with the contents provided in the request. Do not use this to upload a file -/// larger than 150 MB. Instead, create an upload session with +/// larger than 150 MiB. Instead, create an upload session with /// [`upload_session_start()`](crate::files::upload_session_start). Calls to this endpoint will /// count as data transport calls for any Dropbox Business teams with a limit on the number of data -/// transport calls allowed per month. For more information, see the [Data transport limit -/// page](https://www.dropbox.com/developers/reference/data-transport-limit). +/// transport calls allowed per month. For more information, see the Data transport limit page +/// https://www.dropbox.com/developers/reference/data-transport-limit. pub fn upload<'a>( client: &'a impl crate::async_client_trait::UserAuthClient, arg: &'a UploadArg, @@ -1173,12 +1115,12 @@ pub fn upload<'a>( Some(crate::client_helpers::Body::from(body))) } -/// Append more data to an upload session. A single request should not upload more than 150 MB. The -/// maximum size of a file one can upload to an upload session is 350 GB. Calls to this endpoint -/// will count as data transport calls for any Dropbox Business teams with a limit on the number of -/// data transport calls allowed per month. For more information, see the [Data transport limit -/// page](https://www.dropbox.com/developers/reference/data-transport-limit). -#[deprecated(note = "replaced by upload_session_append_v2")] +/// Append more data to an upload session. A single request should not upload more than 150 MiB. The +/// maximum size of a file one can upload to an upload session is 2^41 - 2^22 (2,199,019,061,248) +/// bytes. Calls to this endpoint will count as data transport calls for any Dropbox Business teams +/// with a limit on the number of data transport calls allowed per month. For more information, see +/// the Data transport limit page https://www.dropbox.com/developers/reference/data-transport-limit. +#[deprecated] pub fn upload_session_append<'a>( client: &'a impl crate::async_client_trait::UserAuthClient, arg: &'a UploadSessionCursor, @@ -1194,11 +1136,11 @@ pub fn upload_session_append<'a>( } /// Append more data to an upload session. When the parameter close is set, this call will close the -/// session. A single request should not upload more than 150 MB. The maximum size of a file one can -/// upload to an upload session is 350 GB. Calls to this endpoint will count as data transport calls -/// for any Dropbox Business teams with a limit on the number of data transport calls allowed per -/// month. For more information, see the [Data transport limit -/// page](https://www.dropbox.com/developers/reference/data-transport-limit). +/// session. A single request should not upload more than 150 MiB. The maximum size of a file one +/// can upload to an upload session is 2^41 - 2^22 (2,199,019,061,248) bytes. Calls to this endpoint +/// will count as data transport calls for any Dropbox Business teams with a limit on the number of +/// data transport calls allowed per month. For more information, see the Data transport limit page +/// https://www.dropbox.com/developers/reference/data-transport-limit. pub fn upload_session_append_v2<'a>( client: &'a impl crate::async_client_trait::UserAuthClient, arg: &'a UploadSessionAppendArg, @@ -1213,12 +1155,36 @@ pub fn upload_session_append_v2<'a>( Some(crate::client_helpers::Body::from(body))) } +/// Append more data to multiple upload sessions. Each piece of file content to append to each +/// upload session should be concatenated in the request body, in the order delineated by +/// [`UploadSessionAppendBatchArg::entries`](UploadSessionAppendBatchArg) and their individual +/// lengths indicated by +/// [`UploadSessionAppendBatchArgEntry::length`](UploadSessionAppendBatchArgEntry). A single request +/// should not upload more than 150 MiB. The maximum size of a file one can upload to an upload +/// session is 2^41 - 2^22 (2,199,019,061,248) bytes. Calls to this endpoint will count as data +/// transport calls for any Dropbox Business teams with a limit on the number of data transport +/// calls allowed per month. For more information, see the Data transport limit page +/// https://www.dropbox.com/developers/reference/data-transport-limit. +pub fn upload_session_append_batch<'a>( + client: &'a impl crate::async_client_trait::UserAuthClient, + arg: &'a UploadSessionAppendBatchArg, + body: bytes::Bytes, +) -> impl std::future::Future>> + Send + 'a { + crate::client_helpers::request( + client, + crate::client_trait_common::Endpoint::Content, + crate::client_trait_common::Style::Upload, + "files/upload_session/append_batch", + arg, + Some(crate::client_helpers::Body::from(body))) +} + /// Finish an upload session and save the uploaded data to the given file path. A single request -/// should not upload more than 150 MB. The maximum size of a file one can upload to an upload -/// session is 350 GB. Calls to this endpoint will count as data transport calls for any Dropbox -/// Business teams with a limit on the number of data transport calls allowed per month. For more -/// information, see the [Data transport limit -/// page](https://www.dropbox.com/developers/reference/data-transport-limit). +/// should not upload more than 150 MiB. The maximum size of a file one can upload to an upload +/// session is 2^41 - 2^22 (2,199,019,061,248) bytes. Calls to this endpoint will count as data +/// transport calls for any Dropbox Business teams with a limit on the number of data transport +/// calls allowed per month. For more information, see the Data transport limit page +/// https://www.dropbox.com/developers/reference/data-transport-limit. pub fn upload_session_finish<'a>( client: &'a impl crate::async_client_trait::UserAuthClient, arg: &'a UploadSessionFinishArg, @@ -1244,16 +1210,16 @@ pub fn upload_session_finish<'a>( /// [`UploadSessionAppendArg::close`](UploadSessionAppendArg) needs to be true for the last /// [`upload_session_start()`](crate::files::upload_session_start) or /// [`upload_session_append_v2()`](crate::files::upload_session_append_v2) call. The maximum size of -/// a file one can upload to an upload session is 350 GB. This route will return a job_id -/// immediately and do the async commit job in background. Use +/// a file one can upload to an upload session is 2^41 - 2^22 (2,199,019,061,248) bytes. This route +/// will return a job_id immediately and do the async commit job in background. Use /// [`upload_session_finish_batch_check()`](crate::files::upload_session_finish_batch_check) to /// check the job status. For the same account, this route should be executed serially. That means /// you should not start the next job before current job finishes. We allow up to 1000 entries in a /// single request. Calls to this endpoint will count as data transport calls for any Dropbox /// Business teams with a limit on the number of data transport calls allowed per month. For more -/// information, see the [Data transport limit -/// page](https://www.dropbox.com/developers/reference/data-transport-limit). -#[deprecated(note = "replaced by upload_session_finish_batch_v2")] +/// information, see the Data transport limit page +/// https://www.dropbox.com/developers/reference/data-transport-limit. +#[deprecated] pub fn upload_session_finish_batch<'a>( client: &'a impl crate::async_client_trait::UserAuthClient, arg: &'a UploadSessionFinishBatchArg, @@ -1278,11 +1244,11 @@ pub fn upload_session_finish_batch<'a>( /// [`UploadSessionAppendArg::close`](UploadSessionAppendArg) needs to be true for the last /// [`upload_session_start()`](crate::files::upload_session_start) or /// [`upload_session_append_v2()`](crate::files::upload_session_append_v2) call of each upload -/// session. The maximum size of a file one can upload to an upload session is 350 GB. We allow up -/// to 1000 entries in a single request. Calls to this endpoint will count as data transport calls -/// for any Dropbox Business teams with a limit on the number of data transport calls allowed per -/// month. For more information, see the [Data transport limit -/// page](https://www.dropbox.com/developers/reference/data-transport-limit). +/// session. The maximum size of a file one can upload to an upload session is 2^41 - 2^22 +/// (2,199,019,061,248) bytes. We allow up to 1000 entries in a single request. Calls to this +/// endpoint will count as data transport calls for any Dropbox Business teams with a limit on the +/// number of data transport calls allowed per month. For more information, see the Data transport +/// limit page https://www.dropbox.com/developers/reference/data-transport-limit. pub fn upload_session_finish_batch_v2<'a>( client: &'a impl crate::async_client_trait::UserAuthClient, arg: &'a UploadSessionFinishBatchArg, @@ -1313,37 +1279,42 @@ pub fn upload_session_finish_batch_check<'a>( } /// Upload sessions allow you to upload a single file in one or more requests, for example where the -/// size of the file is greater than 150 MB. This call starts a new upload session with the given -/// data. You can then use [`upload_session_append_v2()`](crate::files::upload_session_append_v2) to -/// add more data and [`upload_session_finish()`](crate::files::upload_session_finish) to save all -/// the data to a file in Dropbox. A single request should not upload more than 150 MB. The maximum -/// size of a file one can upload to an upload session is 350 GB. An upload session can be used for -/// a maximum of 7 days. Attempting to use an +/// size of the file is greater than 150 MiB. This call starts a new upload session with the given +/// data. You can then use [`upload_session_append_v2()`](crate::files::upload_session_append_v2) or +/// [`upload_session_append_batch()`](crate::files::upload_session_append_batch) to add more data, +/// then [`upload_session_finish()`](crate::files::upload_session_finish) or +/// [`upload_session_finish_batch_v2()`](crate::files::upload_session_finish_batch_v2) to save all +/// the data to a file in Dropbox. A single request should not upload more than 150 MiB. The maximum +/// size of a file one can upload to an upload session is 2^41 - 2^22 (2,199,019,061,248) bytes. An +/// upload session can be used for a maximum of 7 days. Attempting to use a /// [`UploadSessionStartResult::session_id`](UploadSessionStartResult) with -/// [`upload_session_append_v2()`](crate::files::upload_session_append_v2) or -/// [`upload_session_finish()`](crate::files::upload_session_finish) more than 7 days after its -/// creation will return a [`UploadSessionLookupError::NotFound`]. Calls to this endpoint will count -/// as data transport calls for any Dropbox Business teams with a limit on the number of data -/// transport calls allowed per month. For more information, see the [Data transport limit -/// page](https://www.dropbox.com/developers/reference/data-transport-limit). By default, upload -/// sessions require you to send content of the file in sequential order via consecutive -/// [`upload_session_start()`](crate::files::upload_session_start), -/// [`upload_session_append_v2()`](crate::files::upload_session_append_v2), -/// [`upload_session_finish()`](crate::files::upload_session_finish) calls. For better performance, -/// you can instead optionally use a [`UploadSessionType::Concurrent`] upload session. To start a -/// new concurrent session, set [`UploadSessionStartArg::session_type`](UploadSessionStartArg) to -/// [`UploadSessionType::Concurrent`]. After that, you can send file data in concurrent -/// [`upload_session_append_v2()`](crate::files::upload_session_append_v2) requests. Finally finish -/// the session with [`upload_session_finish()`](crate::files::upload_session_finish). There are -/// couple of constraints with concurrent sessions to make them work. You can not send data with -/// [`upload_session_start()`](crate::files::upload_session_start) or +/// [`upload_session_append_v2()`](crate::files::upload_session_append_v2) or other upload session +/// routes more than 7 days after its creation will return [`UploadSessionLookupError::NotFound`]. +/// Calls to this endpoint will count as data transport calls for any Dropbox Business teams with a +/// limit on the number of data transport calls allowed per month. For more information, see the +/// Data transport limit page https://www.dropbox.com/developers/reference/data-transport-limit. By +/// default, upload sessions require you to send content of the file in sequential order via +/// consecutive [`upload_session_start()`](crate::files::upload_session_start), +/// [`upload_session_append_v2()`](crate::files::upload_session_append_v2), and +/// [`upload_session_finish()`](crate::files::upload_session_finish) calls (or their batch +/// variants). For better performance, you can optionally set +/// [`UploadSessionStartArg::session_type`](UploadSessionStartArg) to +/// [`UploadSessionType::Concurrent`] to start a concurrent upload session. Concurrent upload +/// sessions may upload file data in concurrent +/// [`upload_session_append_v2()`](crate::files::upload_session_append_v2) requests, with a few +/// caveats. After all of the requests are complete, finish the session with +/// [`upload_session_finish()`](crate::files::upload_session_finish) as normal. You can not send +/// data in a [`upload_session_start()`](crate::files::upload_session_start) or /// [`upload_session_finish()`](crate::files::upload_session_finish) call, only with -/// [`upload_session_append_v2()`](crate::files::upload_session_append_v2) call. Also data uploaded -/// in [`upload_session_append_v2()`](crate::files::upload_session_append_v2) call must be multiple -/// of 4194304 bytes (except for last -/// [`upload_session_append_v2()`](crate::files::upload_session_append_v2) with -/// [`UploadSessionStartArg::close`](UploadSessionStartArg) to `true`, that may contain any -/// remaining data). +/// [`upload_session_append_v2()`](crate::files::upload_session_append_v2) or +/// [`upload_session_append_batch()`](crate::files::upload_session_append_batch). Also, the length +/// of the uploaded data in a call to +/// [`upload_session_append_v2()`](crate::files::upload_session_append_v2) or +/// [`upload_session_append_batch()`](crate::files::upload_session_append_batch) must be a multiple +/// of 2^22 (4,194,304) bytes, except for the final append request with +/// [`UploadSessionAppendArg::close`](UploadSessionAppendArg) or +/// [`UploadSessionAppendBatchArgEntry::close`](UploadSessionAppendBatchArgEntry) set to true that +/// may contain any remaining data. pub fn upload_session_start<'a>( client: &'a impl crate::async_client_trait::UserAuthClient, arg: &'a UploadSessionStartArg, @@ -1358,10 +1329,11 @@ pub fn upload_session_start<'a>( Some(crate::client_helpers::Body::from(body))) } -/// This route starts batch of upload_sessions. Please refer to `upload_session/start` usage. Calls -/// to this endpoint will count as data transport calls for any Dropbox Business teams with a limit -/// on the number of data transport calls allowed per month. For more information, see the [Data -/// transport limit page](https://www.dropbox.com/developers/reference/data-transport-limit). +/// Start a batch of upload sessions. See +/// [`upload_session_start()`](crate::files::upload_session_start). Calls to this endpoint will +/// count as data transport calls for any Dropbox Business teams with a limit on the number of data +/// transport calls allowed per month. For more information, see the Data transport limit page +/// https://www.dropbox.com/developers/reference/data-transport-limit. pub fn upload_session_start_batch<'a>( client: &'a impl crate::async_client_trait::UserAuthClient, arg: &'a UploadSessionStartBatchArg, diff --git a/src/generated/async_routes/mod.rs b/src/generated/async_routes/mod.rs index 389b483c..451a6f01 100644 --- a/src/generated/async_routes/mod.rs +++ b/src/generated/async_routes/mod.rs @@ -12,6 +12,8 @@ if_feature! { "dbx_account", pub mod account; } +if_feature! { "dbx_account_id", pub mod account_id; } + if_feature! { "dbx_async", pub mod dbx_async; } pub mod auth; @@ -32,6 +34,8 @@ if_feature! { "dbx_openid", pub mod openid; } if_feature! { "dbx_paper", pub mod paper; } +if_feature! { "dbx_riviera", pub mod riviera; } + if_feature! { "dbx_secondary_emails", pub mod secondary_emails; } if_feature! { "dbx_seen_state", pub mod seen_state; } diff --git a/src/generated/async_routes/paper.rs b/src/generated/async_routes/paper.rs index dcfe75cf..b54eeaca 100644 --- a/src/generated/async_routes/paper.rs +++ b/src/generated/async_routes/paper.rs @@ -122,17 +122,16 @@ pub fn docs_folder_users_list_continue<'a>( None) } -/// Retrieves folder information for the given Paper doc. This includes: - folder sharing policy; -/// permissions for subfolders are set by the top-level folder. - full 'filepath', i.e. the list -/// of folders (both folderId and folderName) from the root folder to the folder directly -/// containing the Paper doc. -/// -/// If the Paper doc is not in any folder (aka unfiled) the response will be empty. Note that this -/// endpoint will continue to work for content created by users on the older version of Paper. To -/// check which version of Paper a user is on, use /users/features/get_values. If the paper_as_files -/// feature is enabled, then the user is running the new version of Paper. Refer to the [Paper -/// Migration Guide](https://www.dropbox.com/lp/developers/reference/paper-migration-guide) for -/// migration information. +/// Retrieves folder information for the given Paper doc. This includes: - folder sharing policy; +/// permissions for subfolders are set by the top-level folder. - full 'filepath', i.e. the list of +/// folders (both folderId and folderName) from the root folder to the folder directly containing +/// the Paper doc. If the Paper doc is not in any folder (aka unfiled) the response will be empty. +/// Note that this endpoint will continue to work for content created by users on the older version +/// of Paper. To check which version of Paper a user is on, use /users/features/get_values. If the +/// paper_as_files feature is enabled, then the user is running the new version of Paper. Refer to +/// the [Paper Migration +/// Guide](https://www.dropbox.com/lp/developers/reference/paper-migration-guide) for migration +/// information. #[deprecated] pub fn docs_get_folder_info<'a>( client: &'a impl crate::async_client_trait::UserAuthClient, @@ -147,6 +146,20 @@ pub fn docs_get_folder_info<'a>( None) } +/// Returns metadata for a Paper doc or Cloud Doc. +pub fn docs_get_metadata<'a>( + client: &'a impl crate::async_client_trait::UserAuthClient, + arg: &'a GetDocMetadataArg, +) -> impl std::future::Future>> + Send + 'a { + crate::client_helpers::request( + client, + crate::client_trait_common::Endpoint::Api, + crate::client_trait_common::Style::Rpc, + "paper/docs/get_metadata", + arg, + None) +} + /// Return the list of all Paper docs according to the argument specifications. To iterate over /// through the full pagination, pass the cursor to /// [`docs_list_continue()`](crate::paper::docs_list_continue). Note that this endpoint will diff --git a/src/generated/async_routes/riviera.rs b/src/generated/async_routes/riviera.rs new file mode 100644 index 00000000..661a05a6 --- /dev/null +++ b/src/generated/async_routes/riviera.rs @@ -0,0 +1,89 @@ +// DO NOT EDIT +// This file was @generated by Stone + +#![allow( + clippy::too_many_arguments, + clippy::large_enum_variant, + clippy::result_large_err, + clippy::doc_markdown, +)] + +#[allow(unused_imports)] +pub use crate::generated::types::riviera::*; + +/// Asynchronous transcript generation for audio and video files. +/// +/// # Stability +/// *PREVIEW*: This function may change or disappear without notice. +#[cfg(feature = "unstable")] +#[cfg_attr(docsrs, doc(cfg(feature = "unstable")))] +pub fn get_transcript_async<'a>( + client: &'a impl crate::async_client_trait::UserAuthClient, + arg: &'a GetTranscriptArgs, +) -> impl std::future::Future>> + Send + 'a { + crate::client_helpers::request( + client, + crate::client_trait_common::Endpoint::Api, + crate::client_trait_common::Style::Rpc, + "riviera/get_transcript_async", + arg, + None) +} + +/// Asynchronous transcript generation for audio and video files. +/// +/// # Stability +/// *PREVIEW*: This function may change or disappear without notice. +#[cfg(feature = "unstable")] +#[cfg_attr(docsrs, doc(cfg(feature = "unstable")))] +pub fn get_transcript_async_app_auth<'a>( + client: &'a impl crate::async_client_trait::AppAuthClient, + arg: &'a GetTranscriptArgs, +) -> impl std::future::Future>> + Send + 'a { + crate::client_helpers::request( + client, + crate::client_trait_common::Endpoint::Api, + crate::client_trait_common::Style::Rpc, + "riviera/get_transcript_async", + arg, + None) +} + +/// Returns the status or result of specified get_transcript_async task. +/// +/// # Stability +/// *PREVIEW*: This function may change or disappear without notice. +#[cfg(feature = "unstable")] +#[cfg_attr(docsrs, doc(cfg(feature = "unstable")))] +pub fn get_transcript_async_check<'a>( + client: &'a impl crate::async_client_trait::UserAuthClient, + arg: &'a crate::types::dbx_async::PollArg, +) -> impl std::future::Future>> + Send + 'a { + crate::client_helpers::request( + client, + crate::client_trait_common::Endpoint::Api, + crate::client_trait_common::Style::Rpc, + "riviera/get_transcript_async/check", + arg, + None) +} + +/// Returns the status or result of specified get_transcript_async task. +/// +/// # Stability +/// *PREVIEW*: This function may change or disappear without notice. +#[cfg(feature = "unstable")] +#[cfg_attr(docsrs, doc(cfg(feature = "unstable")))] +pub fn get_transcript_async_check_app_auth<'a>( + client: &'a impl crate::async_client_trait::AppAuthClient, + arg: &'a crate::types::dbx_async::PollArg, +) -> impl std::future::Future>> + Send + 'a { + crate::client_helpers::request( + client, + crate::client_trait_common::Endpoint::Api, + crate::client_trait_common::Style::Rpc, + "riviera/get_transcript_async/check", + arg, + None) +} + diff --git a/src/generated/async_routes/sharing.rs b/src/generated/async_routes/sharing.rs index cc6f0776..78ff42e3 100644 --- a/src/generated/async_routes/sharing.rs +++ b/src/generated/async_routes/sharing.rs @@ -87,8 +87,8 @@ pub fn check_share_job_status<'a>( /// Previously, it was technically possible to break a shared link by moving or renaming the /// corresponding file or folder. In the future, this will no longer be the case, so your app /// shouldn't rely on this behavior. Instead, if your app needs to revoke a shared link, use -/// [`revoke_shared_link()`](crate::sharing::revoke_shared_link). -#[deprecated(note = "replaced by create_shared_link_with_settings")] +/// revoke_shared_link. DEPRECATED: Use create_shared_link_with_settings instead. +#[deprecated] pub fn create_shared_link<'a>( client: &'a impl crate::async_client_trait::UserAuthClient, arg: &'a CreateSharedLinkArg, @@ -103,8 +103,8 @@ pub fn create_shared_link<'a>( } /// Create a shared link with custom settings. If no settings are given then the default visibility -/// is [`RequestedVisibility::Public`] (The resolved visibility, though, may depend on other aspects -/// such as team and shared folder settings). +/// is RequestedVisibility.public (The resolved visibility, though, may depend on other aspects such +/// as team and shared folder settings). pub fn create_shared_link_with_settings<'a>( client: &'a impl crate::async_client_trait::UserAuthClient, arg: &'a CreateSharedLinkWithSettingsArg, @@ -160,7 +160,8 @@ pub fn get_folder_metadata<'a>( None) } -/// Download the shared link's file from a user's Dropbox. +/// Download the shared link's file from a user's Dropbox. This is a download-style endpoint that +/// returns the file content. pub fn get_shared_link_file<'a>( client: &'a impl crate::async_client_trait::UserAuthClient, arg: &'a GetSharedLinkFileArg, @@ -178,11 +179,30 @@ pub fn get_shared_link_file<'a>( range_end) } +/// Download the shared link's file from a user's Dropbox. This is a download-style endpoint that +/// returns the file content. +pub fn get_shared_link_file_app_auth<'a>( + client: &'a impl crate::async_client_trait::AppAuthClient, + arg: &'a GetSharedLinkFileArg, + range_start: Option, + range_end: Option, +) -> impl std::future::Future, crate::Error>> + Send + 'a { + crate::client_helpers::request_with_body( + client, + crate::client_trait_common::Endpoint::Content, + crate::client_trait_common::Style::Download, + "sharing/get_shared_link_file", + arg, + None, + range_start, + range_end) +} + /// Get the shared link's metadata. pub fn get_shared_link_metadata<'a>( client: &'a impl crate::async_client_trait::UserAuthClient, arg: &'a GetSharedLinkMetadataArg, -) -> impl std::future::Future>> + Send + 'a { +) -> impl std::future::Future>> + Send + 'a { crate::client_helpers::request( client, crate::client_trait_common::Endpoint::Api, @@ -196,7 +216,7 @@ pub fn get_shared_link_metadata<'a>( pub fn get_shared_link_metadata_app_auth<'a>( client: &'a impl crate::async_client_trait::AppAuthClient, arg: &'a GetSharedLinkMetadataArg, -) -> impl std::future::Future>> + Send + 'a { +) -> impl std::future::Future>> + Send + 'a { crate::client_helpers::request( client, crate::client_trait_common::Endpoint::Api, @@ -209,8 +229,9 @@ pub fn get_shared_link_metadata_app_auth<'a>( /// Returns a list of [`LinkMetadata`] objects for this user, including collection links. If no path /// is given, returns a list of all shared links for the current user, including collection links, /// up to a maximum of 1000 links. If a non-empty path is given, returns a list of all shared links -/// that allow access to the given path. Collection links are never returned in this case. -#[deprecated(note = "replaced by list_shared_links")] +/// that allow access to the given path. Collection links are never returned in this case. +/// DEPRECATED: Use list_shared_links instead. +#[deprecated] pub fn get_shared_links<'a>( client: &'a impl crate::async_client_trait::UserAuthClient, arg: &'a GetSharedLinksArg, @@ -365,8 +386,7 @@ pub fn list_mountable_folders_continue<'a>( None) } -/// Returns a list of all files shared with current user. Does not include files the user has -/// received via shared folders, and does not include unclaimed invitations. +/// Returns a list of all files shared with current user. pub fn list_received_files<'a>( client: &'a impl crate::async_client_trait::UserAuthClient, arg: &'a ListFilesArg, @@ -398,11 +418,9 @@ pub fn list_received_files_continue<'a>( /// List shared links of this user. If no path is given, returns a list of all shared links for the /// current user. For members of business teams using team space and member folders, returns all /// shared links in the team member's home folder unless the team space ID is specified in the -/// request header. For more information, refer to the [Namespace -/// Guide](https://www.dropbox.com/developers/reference/namespace-guide). If a non-empty path is -/// given, returns a list of all shared links that allow access to the given path - direct links to -/// the given path and links to parent folders of the given path. Links to parent folders can be -/// suppressed by setting direct_only to true. +/// request header. If a non-empty path is given, returns a list of all shared links that allow +/// access to the given path - direct links to the given path and links to parent folders of the +/// given path. Links to parent folders can be suppressed by setting direct_only to true. pub fn list_shared_links<'a>( client: &'a impl crate::async_client_trait::UserAuthClient, arg: &'a ListSharedLinksArg, @@ -418,10 +436,9 @@ pub fn list_shared_links<'a>( /// Modify the shared link's settings. If the requested visibility conflict with the shared links /// policy of the team or the shared folder (in case the linked file is part of a shared folder) -/// then the [`LinkPermissions::resolved_visibility`](LinkPermissions) of the returned -/// [`SharedLinkMetadata`] will reflect the actual visibility of the shared link and the -/// [`LinkPermissions::requested_visibility`](LinkPermissions) will reflect the requested -/// visibility. +/// then the LinkPermissions.resolved_visibility of the returned SharedLinkMetadata will reflect the +/// actual visibility of the shared link and the LinkPermissions.requested_visibility will reflect +/// the requested visibility. pub fn modify_shared_link_settings<'a>( client: &'a impl crate::async_client_trait::UserAuthClient, arg: &'a ModifySharedLinkSettingsArgs, @@ -450,8 +467,22 @@ pub fn mount_folder<'a>( None) } -/// The current user relinquishes their membership in the designated file. Note that the current -/// user may still have inherited access to this file through the parent folder. +/// Removes all self-removable access from a file or folder for the current user. Best-effort and +/// idempotent: attempts to drop link-visitor associations and explicit ACL membership. +pub fn relinquish_access<'a>( + client: &'a impl crate::async_client_trait::UserAuthClient, + arg: &'a RelinquishAccessArg, +) -> impl std::future::Future>> + Send + 'a { + crate::client_helpers::request( + client, + crate::client_trait_common::Endpoint::Api, + crate::client_trait_common::Style::Rpc, + "sharing/relinquish_access", + arg, + None) +} + +/// The current user relinquishes their membership in the designated file. pub fn relinquish_file_membership<'a>( client: &'a impl crate::async_client_trait::UserAuthClient, arg: &'a RelinquishFileMembershipArg, @@ -483,7 +514,7 @@ pub fn relinquish_folder_membership<'a>( } /// Identical to remove_file_member_2 but with less information returned. -#[deprecated(note = "replaced by remove_file_member_2")] +#[deprecated] pub fn remove_file_member<'a>( client: &'a impl crate::async_client_trait::UserAuthClient, arg: &'a RemoveFileMemberArg, @@ -528,9 +559,8 @@ pub fn remove_folder_member<'a>( /// Revoke a shared link. Note that even after revoking a shared link to a file, the file may be /// accessible if there are shared links leading to any of the file parent folders. To list all -/// shared links that enable access to a specific file, you can use the -/// [`list_shared_links()`](crate::sharing::list_shared_links) with the file as the -/// [`ListSharedLinksArg::path`](ListSharedLinksArg) argument. +/// shared links that enable access to a specific file, you can use the list_shared_links with the +/// file as the ListSharedLinksArg.path argument. pub fn revoke_shared_link<'a>( client: &'a impl crate::async_client_trait::UserAuthClient, arg: &'a RevokeSharedLinkArg, @@ -623,9 +653,10 @@ pub fn unshare_file<'a>( None) } -/// Allows a shared folder owner to unshare the folder. You'll need to call -/// [`check_job_status()`](crate::sharing::check_job_status) to determine if the action has -/// completed successfully. +/// Allows a shared folder owner to unshare the folder. Unshare will not work in following cases: +/// The shared folder contains shared folders OR the shared folder is inside another shared folder. +/// You'll need to call [`check_job_status()`](crate::sharing::check_job_status) to determine if the +/// action has completed successfully. pub fn unshare_folder<'a>( client: &'a impl crate::async_client_trait::UserAuthClient, arg: &'a UnshareFolderArg, diff --git a/src/generated/async_routes/team.rs b/src/generated/async_routes/team.rs index 6cc276f2..61a7c5d9 100644 --- a/src/generated/async_routes/team.rs +++ b/src/generated/async_routes/team.rs @@ -40,7 +40,7 @@ pub fn devices_list_members_devices<'a>( } /// List all device sessions of a team. Permission : Team member file access. -#[deprecated(note = "replaced by devices_list_members_devices")] +#[deprecated] pub fn devices_list_team_devices<'a>( client: &'a impl crate::async_client_trait::TeamAuthClient, arg: &'a ListTeamDevicesArg, @@ -82,9 +82,9 @@ pub fn devices_revoke_device_session_batch<'a>( None) } -/// Get the values for one or more featues. This route allows you to check your account's capability -/// for what feature you can access or what value you have for certain features. Permission : Team -/// information. +/// Get the values for one or more features. This route allows you to check your account's +/// capability for what feature you can access or what value you have for certain features. +/// Permission : Team information. pub fn features_get_values<'a>( client: &'a impl crate::async_client_trait::TeamAuthClient, arg: &'a FeaturesGetValuesBatchArg, @@ -435,7 +435,7 @@ pub fn linked_apps_list_members_linked_apps<'a>( /// List all applications linked to the team members' accounts. Note, this endpoint doesn't list any /// team-linked applications. -#[deprecated(note = "replaced by linked_apps_list_members_linked_apps")] +#[deprecated] pub fn linked_apps_list_team_linked_apps<'a>( client: &'a impl crate::async_client_trait::TeamAuthClient, arg: &'a ListTeamAppsArg, @@ -565,7 +565,7 @@ pub fn member_space_limits_remove_custom_quota<'a>( None) } -/// Set users custom quota. Custom quota has to be at least 15GB. A maximum of 1000 members can be +/// Set users custom quota. Custom quota has to be at least 2GB. A maximum of 1000 members can be /// specified in a single call. Note: to apply a custom space limit, a team admin needs to set a /// member space limit for the team first. (the team admin can check the settings here: /// https://www.dropbox.com/team/admin/settings/space). @@ -609,10 +609,7 @@ pub fn members_add<'a>( /// Dropbox account will be created with the given email address, and that account will be invited /// to the team. If a personal Dropbox account exists with the email address specified in the call, /// this call will create a placeholder Dropbox account for the user on the team and send an email -/// inviting the user to migrate their existing personal account onto the team. Team member -/// management apps are required to set an initial given_name and surname for a user to use in the -/// team invitation and for 'Perform as team member' actions taken on the user before they become -/// 'active'. +/// inviting the user to migrate their existing personal account onto the team. pub fn members_add_v2<'a>( client: &'a impl crate::async_client_trait::TeamAuthClient, arg: &'a MembersAddV2Arg, @@ -656,6 +653,23 @@ pub fn members_add_job_status_get_v2<'a>( None) } +/// Permanently delete the files of a user who has been removed from the team. After permanent +/// deletion, those files will not be available to be transferred to another team member. Permission +/// : Team member management Exactly one of team_member_id, email, or external_id must be provided +/// to identify the user account. +pub fn members_delete_former_member_files<'a>( + client: &'a impl crate::async_client_trait::TeamAuthClient, + arg: &'a MembersFormerMemberArg, +) -> impl std::future::Future>> + Send + 'a { + crate::client_helpers::request( + client, + crate::client_trait_common::Endpoint::Api, + crate::client_trait_common::Style::Rpc, + "team/members/delete_former_member_files", + arg, + None) +} + /// Deletes a team member's profile photo. Permission : Team member management. pub fn members_delete_profile_photo<'a>( client: &'a impl crate::async_client_trait::TeamAuthClient, @@ -844,8 +858,9 @@ pub fn members_recover<'a>( /// [`members_add()`](crate::team::members_add) while a user is still recoverable on your team will /// return with [`MemberAddResult::UserAlreadyOnTeam`]. Accounts can have their files transferred /// via the admin console for a limited time, based on the version history length associated with -/// the team (180 days for most teams). This endpoint may initiate an asynchronous job. To obtain -/// the final result of the job, the client should periodically poll +/// the team (180 days for most teams). Accounts can have their stacks transferred through the admin +/// console. This only transfers stacks that they have created. This endpoint may initiate an +/// asynchronous job. To obtain the final result of the job, the client should periodically poll /// [`members_remove_job_status_get()`](crate::team::members_remove_job_status_get). pub fn members_remove<'a>( client: &'a impl crate::async_client_trait::TeamAuthClient, @@ -1112,35 +1127,6 @@ pub fn properties_template_get<'a>( None) } -/// Permission : Team member file access. The scope for the route is files.team_metadata.write. -#[deprecated] -pub fn properties_template_list( - client: &impl crate::async_client_trait::TeamAuthClient, -) -> impl std::future::Future>> + Send + '_ { - crate::client_helpers::request( - client, - crate::client_trait_common::Endpoint::Api, - crate::client_trait_common::Style::Rpc, - "team/properties/template/list", - &(), - None) -} - -/// Permission : Team member file access. -#[deprecated] -pub fn properties_template_update<'a>( - client: &'a impl crate::async_client_trait::TeamAuthClient, - arg: &'a crate::types::file_properties::UpdateTemplateArg, -) -> impl std::future::Future>> + Send + 'a { - crate::client_helpers::request( - client, - crate::client_trait_common::Endpoint::Api, - crate::client_trait_common::Style::Rpc, - "team/properties/template/update", - arg, - None) -} - /// Retrieves reporting data about a team's user activity. Deprecated: Will be removed on July 1st /// 2021. #[deprecated] @@ -1306,8 +1292,9 @@ pub fn team_folder_activate<'a>( } /// Sets an active team folder's status to archived and removes all folder and file members. This -/// endpoint cannot be used for teams that have a shared team space. Permission : Team member file -/// access. +/// endpoint cannot be used for teams that have a shared team space. This route will either finish +/// synchronously, or return a job ID and do the async archive job in background. Please use +/// team_folder/archive/check to check the job status. Permission : Team member file access. pub fn team_folder_archive<'a>( client: &'a impl crate::async_client_trait::TeamAuthClient, arg: &'a TeamFolderArchiveArg, @@ -1321,8 +1308,12 @@ pub fn team_folder_archive<'a>( None) } -/// Returns the status of an asynchronous job for archiving a team folder. Permission : Team member -/// file access. +/// Returns the status of an asynchronous job for archiving a team folder. The job may show '.tag' +/// as complete, but the team folder could still be in the process of archiving (indicated by +/// [`TeamFolderMetadata::status`](TeamFolderMetadata) with 'archive_in_progress'). To confirm that +/// the team folder is fully archived, check the field +/// [`TeamFolderMetadata::status`](TeamFolderMetadata) in the response for the value 'archived'. +/// Permission : Team member file access. pub fn team_folder_archive_check<'a>( client: &'a impl crate::async_client_trait::TeamAuthClient, arg: &'a crate::types::dbx_async::PollArg, @@ -1423,6 +1414,25 @@ pub fn team_folder_rename<'a>( None) } +/// Sets an inactive team folder's status to active. Permission: Team member file access. +/// +/// # Stability +/// *PREVIEW*: This function may change or disappear without notice. +#[cfg(feature = "unstable")] +#[cfg_attr(docsrs, doc(cfg(feature = "unstable")))] +pub fn team_folder_restore<'a>( + client: &'a impl crate::async_client_trait::TeamAuthClient, + arg: &'a TeamFolderIdArg, +) -> impl std::future::Future>> + Send + 'a { + crate::client_helpers::request( + client, + crate::client_trait_common::Endpoint::Api, + crate::client_trait_common::Style::Rpc, + "team/team_folder/restore", + arg, + None) +} + /// Updates the sync settings on a team folder or its contents. Use of this endpoint requires that /// the team has team selective sync enabled. pub fn team_folder_update_sync_settings<'a>( diff --git a/src/generated/async_routes/users.rs b/src/generated/async_routes/users.rs index 39c34c5f..8a8fde61 100644 --- a/src/generated/async_routes/users.rs +++ b/src/generated/async_routes/users.rs @@ -39,7 +39,7 @@ pub fn get_account<'a>( None) } -/// Get information about multiple user accounts. At most 300 accounts may be queried per request. +/// Get information about multiple user accounts. At most 300 accounts may be queried per request. pub fn get_account_batch<'a>( client: &'a impl crate::async_client_trait::UserAuthClient, arg: &'a GetAccountBatchArg, diff --git a/src/generated/sync_routes/account.rs b/src/generated/sync_routes/account.rs index 6737cec8..7621ef65 100644 --- a/src/generated/sync_routes/account.rs +++ b/src/generated/sync_routes/account.rs @@ -11,6 +11,27 @@ #[allow(unused_imports)] pub use crate::generated::types::account::*; +/// This lovely endpoint gets the account photo of a given user. +pub fn get_photo( + client: &impl crate::client_trait::UserAuthClient, + arg: &AccountPhotoGetArg, + range_start: Option, + range_end: Option, +) -> Result, crate::Error> { + crate::client_helpers::unwrap_async_body( + crate::client_helpers::request_with_body( + client, + crate::client_trait_common::Endpoint::Content, + crate::client_trait_common::Style::Download, + "account/get_photo", + arg, + None, + range_start, + range_end), + client, + ) +} + /// Sets a user's profile photo. pub fn set_profile_photo( client: &impl crate::client_trait::UserAuthClient, diff --git a/src/generated/sync_routes/account_id.rs b/src/generated/sync_routes/account_id.rs new file mode 100644 index 00000000..cf4d2d34 --- /dev/null +++ b/src/generated/sync_routes/account_id.rs @@ -0,0 +1,13 @@ +// DO NOT EDIT +// This file was @generated by Stone + +#![allow( + clippy::too_many_arguments, + clippy::large_enum_variant, + clippy::result_large_err, + clippy::doc_markdown, +)] + +#[allow(unused_imports)] +pub use crate::generated::types::account_id::*; + diff --git a/src/generated/sync_routes/check.rs b/src/generated/sync_routes/check.rs index cbf39acc..3cf89aaa 100644 --- a/src/generated/sync_routes/check.rs +++ b/src/generated/sync_routes/check.rs @@ -24,7 +24,7 @@ pub use crate::generated::types::check::*; pub fn app( client: &impl crate::client_trait::AppAuthClient, arg: &EchoArg, -) -> Result> { +) -> Result> { crate::client_helpers::unwrap_async( crate::client_helpers::request( client, @@ -48,7 +48,7 @@ pub fn app( pub fn user( client: &impl crate::client_trait::UserAuthClient, arg: &EchoArg, -) -> Result> { +) -> Result> { crate::client_helpers::unwrap_async( crate::client_helpers::request( client, diff --git a/src/generated/sync_routes/files.rs b/src/generated/sync_routes/files.rs index b349bb0a..2cadad88 100644 --- a/src/generated/sync_routes/files.rs +++ b/src/generated/sync_routes/files.rs @@ -18,7 +18,7 @@ pub use crate::generated::types::files::*; /// *PREVIEW*: This function may change or disappear without notice. #[cfg(feature = "unstable")] #[cfg_attr(docsrs, doc(cfg(feature = "unstable")))] -#[deprecated(note = "replaced by get_metadata")] +#[deprecated] pub fn alpha_get_metadata( client: &impl crate::client_trait::UserAuthClient, arg: &AlphaGetMetadataArg, @@ -36,14 +36,14 @@ pub fn alpha_get_metadata( /// Create a new file with the contents provided in the request. Note that the behavior of this /// alpha endpoint is unstable and subject to change. Do not use this to upload a file larger than -/// 150 MB. Instead, create an upload session with +/// 150 MiB. Instead, create an upload session with /// [`upload_session_start()`](crate::files::upload_session_start). /// /// # Stability /// *PREVIEW*: This function may change or disappear without notice. #[cfg(feature = "unstable")] #[cfg_attr(docsrs, doc(cfg(feature = "unstable")))] -#[deprecated(note = "replaced by upload")] +#[deprecated] pub fn alpha_upload( client: &impl crate::client_trait::UserAuthClient, arg: &UploadArg, @@ -62,7 +62,7 @@ pub fn alpha_upload( /// Copy a file or folder to a different location in the user's Dropbox. If the source path is a /// folder all its contents will be copied. -#[deprecated(note = "replaced by copy_v2")] +#[deprecated] pub fn copy( client: &impl crate::client_trait::UserAuthClient, arg: &RelocationArg, @@ -98,7 +98,7 @@ pub fn copy_v2( /// Copy multiple files or folders to different locations at once in the user's Dropbox. This route /// will return job ID immediately and do the async copy job in background. Please use /// [`copy_batch_check()`](crate::files::copy_batch_check) to check the job status. -#[deprecated(note = "replaced by copy_batch_v2")] +#[deprecated] pub fn copy_batch( client: &impl crate::client_trait::UserAuthClient, arg: &RelocationBatchArg, @@ -137,7 +137,7 @@ pub fn copy_batch_v2( /// Returns the status of an asynchronous job for [`copy_batch()`](crate::files::copy_batch). If /// success, it returns list of results for each entry. -#[deprecated(note = "replaced by copy_batch_check_v2")] +#[deprecated] pub fn copy_batch_check( client: &impl crate::client_trait::UserAuthClient, arg: &crate::types::dbx_async::PollArg, @@ -206,7 +206,7 @@ pub fn copy_reference_save( } /// Create a folder at a given path. -#[deprecated(note = "replaced by create_folder_v2")] +#[deprecated] pub fn create_folder( client: &impl crate::client_trait::UserAuthClient, arg: &CreateFolderArg, @@ -241,7 +241,7 @@ pub fn create_folder_v2( /// Create multiple folders at once. This route is asynchronous for large batches, which returns a /// job ID immediately and runs the create folder batch asynchronously. Otherwise, creates the /// folders and returns the result synchronously for smaller inputs. You can force asynchronous -/// behaviour by using the [`CreateFolderBatchArg::force_async`](CreateFolderBatchArg) flag. Use +/// behaviour by using the CreateFolderBatchArg.force_async flag. Use /// [`create_folder_batch_check()`](crate::files::create_folder_batch_check) to check the job /// status. pub fn create_folder_batch( @@ -279,9 +279,9 @@ pub fn create_folder_batch_check( /// Delete the file or folder at a given path. If the path is a folder, all its contents will be /// deleted too. A successful response indicates that the file or folder was deleted. The returned -/// metadata will be the corresponding [`FileMetadata`] or [`FolderMetadata`] for the item at time -/// of deletion, and not a [`DeletedMetadata`] object. -#[deprecated(note = "replaced by delete_v2")] +/// metadata will be the corresponding FileMetadata or FolderMetadata for the item at time of +/// deletion, and not a DeletedMetadata object. +#[deprecated] pub fn delete( client: &impl crate::client_trait::UserAuthClient, arg: &DeleteArg, @@ -299,8 +299,8 @@ pub fn delete( /// Delete the file or folder at a given path. If the path is a folder, all its contents will be /// deleted too. A successful response indicates that the file or folder was deleted. The returned -/// metadata will be the corresponding [`FileMetadata`] or [`FolderMetadata`] for the item at time -/// of deletion, and not a [`DeletedMetadata`] object. +/// metadata will be the corresponding FileMetadata or FolderMetadata for the item at time of +/// deletion, and not a DeletedMetadata object. pub fn delete_v2( client: &impl crate::client_trait::UserAuthClient, arg: &DeleteArg, @@ -397,8 +397,7 @@ pub fn download_zip( } /// Export a file from a user's Dropbox. This route only supports exporting files that cannot be -/// downloaded directly and whose [`ExportResult::file_metadata`](ExportResult) has -/// [`ExportInfo::export_as`](ExportInfo) populated. +/// downloaded directly and whose ExportResult.file_metadata has ExportInfo.export_as populated. /// /// # Stability /// *PREVIEW*: This function may change or disappear without notice. @@ -458,9 +457,8 @@ pub fn get_metadata( /// Get a preview for a file. Currently, PDF previews are generated for files with the following /// extensions: .ai, .doc, .docm, .docx, .eps, .gdoc, .gslides, .odp, .odt, .pps, .ppsm, .ppsx, -/// .ppt, .pptm, .pptx, .rtf. HTML previews are generated for files with the following extensions: -/// .csv, .ods, .xls, .xlsm, .gsheet, .xlsx. Other formats will return an unsupported extension -/// error. +/// .ppt, .pptm, .pptx, .rtf. HTML previews are generated for .csv, .ods, .xls, .xlsm, .gsheet, +/// .xlsx. Other formats will return an unsupported extension error. pub fn get_preview( client: &impl crate::client_trait::UserAuthClient, arg: &PreviewArg, @@ -499,42 +497,28 @@ pub fn get_temporary_link( ) } -/// Get a one-time use temporary upload link to upload a file to a Dropbox location. -/// -/// This endpoint acts as a delayed [`upload()`](crate::files::upload). The returned temporary -/// upload link may be used to make a POST request with the data to be uploaded. The upload will -/// then be perfomed with the [`CommitInfo`] previously provided to -/// [`get_temporary_upload_link()`](crate::files::get_temporary_upload_link) but evaluated only upon -/// consumption. Hence, errors stemming from invalid [`CommitInfo`] with respect to the state of the -/// user's Dropbox will only be communicated at consumption time. Additionally, these errors are -/// surfaced as generic HTTP 409 Conflict responses, potentially hiding issue details. The maximum -/// temporary upload link duration is 4 hours. Upon consumption or expiration, a new link will have -/// to be generated. Multiple links may exist for a specific upload path at any given time. -/// -/// The POST request on the temporary upload link must have its Content-Type set to -/// "application/octet-stream". -/// -/// Example temporary upload link consumption request: -/// -/// curl -X POST https://content.dropboxapi.com/apitul/1/bNi2uIYF51cVBND --header "Content-Type: -/// application/octet-stream" --data-binary @local_file.txt -/// -/// A successful temporary upload link consumption request returns the content hash of the uploaded -/// data in JSON format. -/// -/// Example successful temporary upload link consumption response: {"content-hash": -/// "599d71033d700ac892a0e48fa61b125d2f5994"} -/// -/// An unsuccessful temporary upload link consumption request returns any of the following status -/// codes: -/// -/// HTTP 400 Bad Request: Content-Type is not one of application/octet-stream and text/plain or -/// request is invalid. HTTP 409 Conflict: The temporary upload link does not exist or is currently -/// unavailable, the upload failed, or another error happened. HTTP 410 Gone: The temporary upload -/// link is expired or consumed. -/// -/// Example unsuccessful temporary upload link consumption response: Temporary upload link has been -/// recently consumed. +/// Get a one-time use temporary upload link to upload a file to a Dropbox location. This endpoint +/// acts as a delayed upload(). The returned temporary upload link may be used to make a POST +/// request with the data to be uploaded. The upload will then be perfomed with the CommitInfo +/// previously provided to getTemporaryUploadLink() but evaluated only upon consumption. Hence, +/// errors stemming from invalid CommitInfo with respect to the state of the user's Dropbox will +/// only be communicated at consumption time. Additionally, these errors are surfaced as generic +/// HTTP 409 Conflict responses, potentially hiding issue details. The maximum temporary upload link +/// duration is 4 hours. Upon consumption or expiration, a new link will have to be generated. +/// Multiple links may exist for a specific upload path at any given time. The POST request on the +/// temporary upload link must have its Content-Type set to "application/octet-stream". Example +/// temporary upload link consumption request: curl -X POST +/// https://content.dropboxapi.com/apitul/1/bNi2uIYF51cVBND --header "Content-Type: +/// application/octet-stream" --data-binary @local_file.txt A successful temporary upload link +/// consumption request returns the content hash of the uploaded data in JSON format. Example +/// successful temporary upload link consumption response: {"content-hash": +/// "599d71033d700ac892a0e48fa61b125d2f5994"} An unsuccessful temporary upload link consumption +/// request returns any of the following status codes: HTTP 400 Bad Request: Content-Type is not +/// one of application/octet-stream and text/plain or request is invalid. HTTP 409 Conflict: The +/// temporary upload link does not exist or is currently unavailable, the upload failed, or another +/// error happened. HTTP 410 Gone: The temporary upload link is expired or consumed. Example +/// unsuccessful temporary upload link consumption response: Temporary upload link has been recently +/// consumed. pub fn get_temporary_upload_link( client: &impl crate::client_trait::UserAuthClient, arg: &GetTemporaryUploadLinkArg, @@ -638,22 +622,20 @@ pub fn get_thumbnail_batch( } /// Starts returning the contents of a folder. If the result's -/// [`ListFolderResult::has_more`](ListFolderResult) field is `true`, call +/// [`ListFolderResult::has_more`](ListFolderResult) field is true, call /// [`list_folder_continue()`](crate::files::list_folder_continue) with the returned -/// [`ListFolderResult::cursor`](ListFolderResult) to retrieve more entries. If you're using -/// [`ListFolderArg::recursive`](ListFolderArg) set to `true` to keep a local cache of the contents -/// of a Dropbox account, iterate through each entry in order and process them as follows to keep -/// your local state in sync: For each [`FileMetadata`], store the new entry at the given path in -/// your local state. If the required parent folders don't exist yet, create them. If there's -/// already something else at the given path, replace it and remove all its children. For each -/// [`FolderMetadata`], store the new entry at the given path in your local state. If the required -/// parent folders don't exist yet, create them. If there's already something else at the given -/// path, replace it but leave the children as they are. Check the new entry's -/// [`FolderSharingInfo::read_only`](FolderSharingInfo) and set all its children's read-only -/// statuses to match. For each [`DeletedMetadata`], if your local state has something at the given -/// path, remove it and all its children. If there's nothing at the given path, ignore this entry. -/// Note: [`auth::RateLimitError`](crate::types::auth::RateLimitError) may be returned if multiple -/// [`list_folder()`](crate::files::list_folder) or +/// ListFolderResult.cursor to retrieve more entries. If you're using ListFolderArg.recursive set to +/// true to keep a local cache of the contents of a Dropbox account, iterate through each entry in +/// order and process them as follows to keep your local state in sync: For each FileMetadata, store +/// the new entry at the given path in your local state. If the required parent folders don't exist +/// yet, create them. If there's already something else at the given path, replace it and remove all +/// its children. For each FolderMetadata, store the new entry at the given path in your local +/// state. If the required parent folders don't exist yet, create them. If there's already something +/// else at the given path, replace it but leave the children as they are. Check the new entry's +/// FolderSharingInfo.read_only and set all its children's read-only statuses to match. For each +/// DeletedMetadata, if your local state has something at the given path, remove it and all its +/// children. If there's nothing at the given path, ignore this entry. Note: auth.RateLimitError may +/// be returned if multiple [`list_folder()`](crate::files::list_folder) or /// [`list_folder_continue()`](crate::files::list_folder_continue) calls with same parameters are /// made simultaneously by same API app for same user. If your app implements retry logic, please /// hold off the retry until the previous request finishes. @@ -673,22 +655,20 @@ pub fn list_folder( } /// Starts returning the contents of a folder. If the result's -/// [`ListFolderResult::has_more`](ListFolderResult) field is `true`, call +/// [`ListFolderResult::has_more`](ListFolderResult) field is true, call /// [`list_folder_continue()`](crate::files::list_folder_continue) with the returned -/// [`ListFolderResult::cursor`](ListFolderResult) to retrieve more entries. If you're using -/// [`ListFolderArg::recursive`](ListFolderArg) set to `true` to keep a local cache of the contents -/// of a Dropbox account, iterate through each entry in order and process them as follows to keep -/// your local state in sync: For each [`FileMetadata`], store the new entry at the given path in -/// your local state. If the required parent folders don't exist yet, create them. If there's -/// already something else at the given path, replace it and remove all its children. For each -/// [`FolderMetadata`], store the new entry at the given path in your local state. If the required -/// parent folders don't exist yet, create them. If there's already something else at the given -/// path, replace it but leave the children as they are. Check the new entry's -/// [`FolderSharingInfo::read_only`](FolderSharingInfo) and set all its children's read-only -/// statuses to match. For each [`DeletedMetadata`], if your local state has something at the given -/// path, remove it and all its children. If there's nothing at the given path, ignore this entry. -/// Note: [`auth::RateLimitError`](crate::types::auth::RateLimitError) may be returned if multiple -/// [`list_folder()`](crate::files::list_folder) or +/// ListFolderResult.cursor to retrieve more entries. If you're using ListFolderArg.recursive set to +/// true to keep a local cache of the contents of a Dropbox account, iterate through each entry in +/// order and process them as follows to keep your local state in sync: For each FileMetadata, store +/// the new entry at the given path in your local state. If the required parent folders don't exist +/// yet, create them. If there's already something else at the given path, replace it and remove all +/// its children. For each FolderMetadata, store the new entry at the given path in your local +/// state. If the required parent folders don't exist yet, create them. If there's already something +/// else at the given path, replace it but leave the children as they are. Check the new entry's +/// FolderSharingInfo.read_only and set all its children's read-only statuses to match. For each +/// DeletedMetadata, if your local state has something at the given path, remove it and all its +/// children. If there's nothing at the given path, ignore this entry. Note: auth.RateLimitError may +/// be returned if multiple [`list_folder()`](crate::files::list_folder) or /// [`list_folder_continue()`](crate::files::list_folder_continue) calls with same parameters are /// made simultaneously by same API app for same user. If your app implements retry logic, please /// hold off the retry until the previous request finishes. @@ -767,8 +747,6 @@ pub fn list_folder_get_latest_cursor( /// [`list_folder_continue()`](crate::files::list_folder_continue), this call gives you a /// low-latency way to monitor an account for file changes. The connection will block until there /// are changes available or a timeout occurs. This endpoint is useful mostly for client-side apps. -/// If you're looking for server-side notifications, check out our [webhooks -/// documentation](https://www.dropbox.com/developers/reference/webhooks). pub fn list_folder_longpoll( client: &impl crate::client_trait::NoauthClient, arg: &ListFolderLongpollArg, @@ -787,10 +765,10 @@ pub fn list_folder_longpoll( /// Returns revisions for files based on a file path or a file id. The file path or file id is /// identified from the latest file entry at the given file path or id. This end point allows your /// app to query either by file path or file id by setting the mode parameter appropriately. In the -/// [`ListRevisionsMode::Path`] (default) mode, all revisions at the same file path as the latest -/// file entry are returned. If revisions with the same file id are desired, then mode must be set -/// to [`ListRevisionsMode::Id`]. The [`ListRevisionsMode::Id`] mode is useful to retrieve revisions -/// for a given file across moves or renames. +/// ListRevisionsMode.path (default) mode, all revisions at the same file path as the latest file +/// entry are returned. If revisions with the same file id are desired, then mode must be set to +/// ListRevisionsMode.id. The ListRevisionsMode.id mode is useful to retrieve revisions for a given +/// file across moves or renames. pub fn list_revisions( client: &impl crate::client_trait::UserAuthClient, arg: &ListRevisionsArg, @@ -826,7 +804,7 @@ pub fn lock_file_batch( /// Move a file or folder to a different location in the user's Dropbox. If the source path is a /// folder all its contents will be moved. -#[deprecated(note = "replaced by move_v2")] +#[deprecated] pub fn do_move( client: &impl crate::client_trait::UserAuthClient, arg: &RelocationArg, @@ -862,7 +840,7 @@ pub fn move_v2( /// Move multiple files or folders to different locations at once in the user's Dropbox. This route /// will return job ID immediately and do the async moving job in background. Please use /// [`move_batch_check()`](crate::files::move_batch_check) to check the job status. -#[deprecated(note = "replaced by move_batch_v2")] +#[deprecated] pub fn move_batch( client: &impl crate::client_trait::UserAuthClient, arg: &RelocationBatchArg, @@ -902,7 +880,7 @@ pub fn move_batch_v2( /// Returns the status of an asynchronous job for [`move_batch()`](crate::files::move_batch). If /// success, it returns list of results for each entry. -#[deprecated(note = "replaced by move_batch_check_v2")] +#[deprecated] pub fn move_batch_check( client: &impl crate::client_trait::UserAuthClient, arg: &crate::types::dbx_async::PollArg, @@ -998,6 +976,8 @@ pub fn permanently_delete( ) } +/// Add property groups to a Dropbox file. See templates/add_for_user or templates/add_for_team to +/// create new templates. #[deprecated] pub fn properties_add( client: &impl crate::client_trait::UserAuthClient, @@ -1014,6 +994,8 @@ pub fn properties_add( ) } +/// Overwrite property groups associated with a file. This endpoint should be used instead of +/// properties/update when property groups are being overwritten rather than updated via a "delta". #[deprecated] pub fn properties_overwrite( client: &impl crate::client_trait::UserAuthClient, @@ -1030,53 +1012,9 @@ pub fn properties_overwrite( ) } -#[deprecated] -pub fn properties_remove( - client: &impl crate::client_trait::UserAuthClient, - arg: &crate::types::file_properties::RemovePropertiesArg, -) -> Result<(), crate::Error> { - crate::client_helpers::unwrap_async( - crate::client_helpers::request( - client, - crate::client_trait_common::Endpoint::Api, - crate::client_trait_common::Style::Rpc, - "files/properties/remove", - arg, - None) - ) -} - -#[deprecated] -pub fn properties_template_get( - client: &impl crate::client_trait::UserAuthClient, - arg: &crate::types::file_properties::GetTemplateArg, -) -> Result> { - crate::client_helpers::unwrap_async( - crate::client_helpers::request( - client, - crate::client_trait_common::Endpoint::Api, - crate::client_trait_common::Style::Rpc, - "files/properties/template/get", - arg, - None) - ) -} - -#[deprecated] -pub fn properties_template_list( - client: &impl crate::client_trait::UserAuthClient, -) -> Result> { - crate::client_helpers::unwrap_async( - crate::client_helpers::request( - client, - crate::client_trait_common::Endpoint::Api, - crate::client_trait_common::Style::Rpc, - "files/properties/template/list", - &(), - None) - ) -} - +/// Add, update or remove properties associated with the supplied file and templates. This endpoint +/// should be used instead of properties/overwrite when property groups are being updated via a +/// "delta" instead of overwriting all properties of a file. #[deprecated] pub fn properties_update( client: &impl crate::client_trait::UserAuthClient, @@ -1111,8 +1049,6 @@ pub fn restore( /// Save the data from a specified URL into a file in user's Dropbox. Note that the transfer from /// the URL must complete within 15 minutes, or the operation will time out and the job will fail. -/// If the given path already exists, the file will be renamed to avoid the conflict (e.g. myfile -/// (1).txt). pub fn save_url( client: &impl crate::client_trait::UserAuthClient, arg: &SaveUrlArg, @@ -1287,11 +1223,11 @@ pub fn unlock_file_batch( } /// Create a new file with the contents provided in the request. Do not use this to upload a file -/// larger than 150 MB. Instead, create an upload session with +/// larger than 150 MiB. Instead, create an upload session with /// [`upload_session_start()`](crate::files::upload_session_start). Calls to this endpoint will /// count as data transport calls for any Dropbox Business teams with a limit on the number of data -/// transport calls allowed per month. For more information, see the [Data transport limit -/// page](https://www.dropbox.com/developers/reference/data-transport-limit). +/// transport calls allowed per month. For more information, see the Data transport limit page +/// https://www.dropbox.com/developers/reference/data-transport-limit. pub fn upload( client: &impl crate::client_trait::UserAuthClient, arg: &UploadArg, @@ -1308,12 +1244,12 @@ pub fn upload( ) } -/// Append more data to an upload session. A single request should not upload more than 150 MB. The -/// maximum size of a file one can upload to an upload session is 350 GB. Calls to this endpoint -/// will count as data transport calls for any Dropbox Business teams with a limit on the number of -/// data transport calls allowed per month. For more information, see the [Data transport limit -/// page](https://www.dropbox.com/developers/reference/data-transport-limit). -#[deprecated(note = "replaced by upload_session_append_v2")] +/// Append more data to an upload session. A single request should not upload more than 150 MiB. The +/// maximum size of a file one can upload to an upload session is 2^41 - 2^22 (2,199,019,061,248) +/// bytes. Calls to this endpoint will count as data transport calls for any Dropbox Business teams +/// with a limit on the number of data transport calls allowed per month. For more information, see +/// the Data transport limit page https://www.dropbox.com/developers/reference/data-transport-limit. +#[deprecated] pub fn upload_session_append( client: &impl crate::client_trait::UserAuthClient, arg: &UploadSessionCursor, @@ -1331,11 +1267,11 @@ pub fn upload_session_append( } /// Append more data to an upload session. When the parameter close is set, this call will close the -/// session. A single request should not upload more than 150 MB. The maximum size of a file one can -/// upload to an upload session is 350 GB. Calls to this endpoint will count as data transport calls -/// for any Dropbox Business teams with a limit on the number of data transport calls allowed per -/// month. For more information, see the [Data transport limit -/// page](https://www.dropbox.com/developers/reference/data-transport-limit). +/// session. A single request should not upload more than 150 MiB. The maximum size of a file one +/// can upload to an upload session is 2^41 - 2^22 (2,199,019,061,248) bytes. Calls to this endpoint +/// will count as data transport calls for any Dropbox Business teams with a limit on the number of +/// data transport calls allowed per month. For more information, see the Data transport limit page +/// https://www.dropbox.com/developers/reference/data-transport-limit. pub fn upload_session_append_v2( client: &impl crate::client_trait::UserAuthClient, arg: &UploadSessionAppendArg, @@ -1352,12 +1288,38 @@ pub fn upload_session_append_v2( ) } +/// Append more data to multiple upload sessions. Each piece of file content to append to each +/// upload session should be concatenated in the request body, in the order delineated by +/// [`UploadSessionAppendBatchArg::entries`](UploadSessionAppendBatchArg) and their individual +/// lengths indicated by +/// [`UploadSessionAppendBatchArgEntry::length`](UploadSessionAppendBatchArgEntry). A single request +/// should not upload more than 150 MiB. The maximum size of a file one can upload to an upload +/// session is 2^41 - 2^22 (2,199,019,061,248) bytes. Calls to this endpoint will count as data +/// transport calls for any Dropbox Business teams with a limit on the number of data transport +/// calls allowed per month. For more information, see the Data transport limit page +/// https://www.dropbox.com/developers/reference/data-transport-limit. +pub fn upload_session_append_batch( + client: &impl crate::client_trait::UserAuthClient, + arg: &UploadSessionAppendBatchArg, + body: &[u8], +) -> Result> { + crate::client_helpers::unwrap_async( + crate::client_helpers::request( + client, + crate::client_trait_common::Endpoint::Content, + crate::client_trait_common::Style::Upload, + "files/upload_session/append_batch", + arg, + Some(crate::client_helpers::Body::from(body))) + ) +} + /// Finish an upload session and save the uploaded data to the given file path. A single request -/// should not upload more than 150 MB. The maximum size of a file one can upload to an upload -/// session is 350 GB. Calls to this endpoint will count as data transport calls for any Dropbox -/// Business teams with a limit on the number of data transport calls allowed per month. For more -/// information, see the [Data transport limit -/// page](https://www.dropbox.com/developers/reference/data-transport-limit). +/// should not upload more than 150 MiB. The maximum size of a file one can upload to an upload +/// session is 2^41 - 2^22 (2,199,019,061,248) bytes. Calls to this endpoint will count as data +/// transport calls for any Dropbox Business teams with a limit on the number of data transport +/// calls allowed per month. For more information, see the Data transport limit page +/// https://www.dropbox.com/developers/reference/data-transport-limit. pub fn upload_session_finish( client: &impl crate::client_trait::UserAuthClient, arg: &UploadSessionFinishArg, @@ -1385,16 +1347,16 @@ pub fn upload_session_finish( /// [`UploadSessionAppendArg::close`](UploadSessionAppendArg) needs to be true for the last /// [`upload_session_start()`](crate::files::upload_session_start) or /// [`upload_session_append_v2()`](crate::files::upload_session_append_v2) call. The maximum size of -/// a file one can upload to an upload session is 350 GB. This route will return a job_id -/// immediately and do the async commit job in background. Use +/// a file one can upload to an upload session is 2^41 - 2^22 (2,199,019,061,248) bytes. This route +/// will return a job_id immediately and do the async commit job in background. Use /// [`upload_session_finish_batch_check()`](crate::files::upload_session_finish_batch_check) to /// check the job status. For the same account, this route should be executed serially. That means /// you should not start the next job before current job finishes. We allow up to 1000 entries in a /// single request. Calls to this endpoint will count as data transport calls for any Dropbox /// Business teams with a limit on the number of data transport calls allowed per month. For more -/// information, see the [Data transport limit -/// page](https://www.dropbox.com/developers/reference/data-transport-limit). -#[deprecated(note = "replaced by upload_session_finish_batch_v2")] +/// information, see the Data transport limit page +/// https://www.dropbox.com/developers/reference/data-transport-limit. +#[deprecated] pub fn upload_session_finish_batch( client: &impl crate::client_trait::UserAuthClient, arg: &UploadSessionFinishBatchArg, @@ -1421,11 +1383,11 @@ pub fn upload_session_finish_batch( /// [`UploadSessionAppendArg::close`](UploadSessionAppendArg) needs to be true for the last /// [`upload_session_start()`](crate::files::upload_session_start) or /// [`upload_session_append_v2()`](crate::files::upload_session_append_v2) call of each upload -/// session. The maximum size of a file one can upload to an upload session is 350 GB. We allow up -/// to 1000 entries in a single request. Calls to this endpoint will count as data transport calls -/// for any Dropbox Business teams with a limit on the number of data transport calls allowed per -/// month. For more information, see the [Data transport limit -/// page](https://www.dropbox.com/developers/reference/data-transport-limit). +/// session. The maximum size of a file one can upload to an upload session is 2^41 - 2^22 +/// (2,199,019,061,248) bytes. We allow up to 1000 entries in a single request. Calls to this +/// endpoint will count as data transport calls for any Dropbox Business teams with a limit on the +/// number of data transport calls allowed per month. For more information, see the Data transport +/// limit page https://www.dropbox.com/developers/reference/data-transport-limit. pub fn upload_session_finish_batch_v2( client: &impl crate::client_trait::UserAuthClient, arg: &UploadSessionFinishBatchArg, @@ -1460,37 +1422,42 @@ pub fn upload_session_finish_batch_check( } /// Upload sessions allow you to upload a single file in one or more requests, for example where the -/// size of the file is greater than 150 MB. This call starts a new upload session with the given -/// data. You can then use [`upload_session_append_v2()`](crate::files::upload_session_append_v2) to -/// add more data and [`upload_session_finish()`](crate::files::upload_session_finish) to save all -/// the data to a file in Dropbox. A single request should not upload more than 150 MB. The maximum -/// size of a file one can upload to an upload session is 350 GB. An upload session can be used for -/// a maximum of 7 days. Attempting to use an +/// size of the file is greater than 150 MiB. This call starts a new upload session with the given +/// data. You can then use [`upload_session_append_v2()`](crate::files::upload_session_append_v2) or +/// [`upload_session_append_batch()`](crate::files::upload_session_append_batch) to add more data, +/// then [`upload_session_finish()`](crate::files::upload_session_finish) or +/// [`upload_session_finish_batch_v2()`](crate::files::upload_session_finish_batch_v2) to save all +/// the data to a file in Dropbox. A single request should not upload more than 150 MiB. The maximum +/// size of a file one can upload to an upload session is 2^41 - 2^22 (2,199,019,061,248) bytes. An +/// upload session can be used for a maximum of 7 days. Attempting to use a /// [`UploadSessionStartResult::session_id`](UploadSessionStartResult) with -/// [`upload_session_append_v2()`](crate::files::upload_session_append_v2) or -/// [`upload_session_finish()`](crate::files::upload_session_finish) more than 7 days after its -/// creation will return a [`UploadSessionLookupError::NotFound`]. Calls to this endpoint will count -/// as data transport calls for any Dropbox Business teams with a limit on the number of data -/// transport calls allowed per month. For more information, see the [Data transport limit -/// page](https://www.dropbox.com/developers/reference/data-transport-limit). By default, upload -/// sessions require you to send content of the file in sequential order via consecutive -/// [`upload_session_start()`](crate::files::upload_session_start), -/// [`upload_session_append_v2()`](crate::files::upload_session_append_v2), -/// [`upload_session_finish()`](crate::files::upload_session_finish) calls. For better performance, -/// you can instead optionally use a [`UploadSessionType::Concurrent`] upload session. To start a -/// new concurrent session, set [`UploadSessionStartArg::session_type`](UploadSessionStartArg) to -/// [`UploadSessionType::Concurrent`]. After that, you can send file data in concurrent -/// [`upload_session_append_v2()`](crate::files::upload_session_append_v2) requests. Finally finish -/// the session with [`upload_session_finish()`](crate::files::upload_session_finish). There are -/// couple of constraints with concurrent sessions to make them work. You can not send data with -/// [`upload_session_start()`](crate::files::upload_session_start) or +/// [`upload_session_append_v2()`](crate::files::upload_session_append_v2) or other upload session +/// routes more than 7 days after its creation will return [`UploadSessionLookupError::NotFound`]. +/// Calls to this endpoint will count as data transport calls for any Dropbox Business teams with a +/// limit on the number of data transport calls allowed per month. For more information, see the +/// Data transport limit page https://www.dropbox.com/developers/reference/data-transport-limit. By +/// default, upload sessions require you to send content of the file in sequential order via +/// consecutive [`upload_session_start()`](crate::files::upload_session_start), +/// [`upload_session_append_v2()`](crate::files::upload_session_append_v2), and +/// [`upload_session_finish()`](crate::files::upload_session_finish) calls (or their batch +/// variants). For better performance, you can optionally set +/// [`UploadSessionStartArg::session_type`](UploadSessionStartArg) to +/// [`UploadSessionType::Concurrent`] to start a concurrent upload session. Concurrent upload +/// sessions may upload file data in concurrent +/// [`upload_session_append_v2()`](crate::files::upload_session_append_v2) requests, with a few +/// caveats. After all of the requests are complete, finish the session with +/// [`upload_session_finish()`](crate::files::upload_session_finish) as normal. You can not send +/// data in a [`upload_session_start()`](crate::files::upload_session_start) or /// [`upload_session_finish()`](crate::files::upload_session_finish) call, only with -/// [`upload_session_append_v2()`](crate::files::upload_session_append_v2) call. Also data uploaded -/// in [`upload_session_append_v2()`](crate::files::upload_session_append_v2) call must be multiple -/// of 4194304 bytes (except for last -/// [`upload_session_append_v2()`](crate::files::upload_session_append_v2) with -/// [`UploadSessionStartArg::close`](UploadSessionStartArg) to `true`, that may contain any -/// remaining data). +/// [`upload_session_append_v2()`](crate::files::upload_session_append_v2) or +/// [`upload_session_append_batch()`](crate::files::upload_session_append_batch). Also, the length +/// of the uploaded data in a call to +/// [`upload_session_append_v2()`](crate::files::upload_session_append_v2) or +/// [`upload_session_append_batch()`](crate::files::upload_session_append_batch) must be a multiple +/// of 2^22 (4,194,304) bytes, except for the final append request with +/// [`UploadSessionAppendArg::close`](UploadSessionAppendArg) or +/// [`UploadSessionAppendBatchArgEntry::close`](UploadSessionAppendBatchArgEntry) set to true that +/// may contain any remaining data. pub fn upload_session_start( client: &impl crate::client_trait::UserAuthClient, arg: &UploadSessionStartArg, @@ -1507,10 +1474,11 @@ pub fn upload_session_start( ) } -/// This route starts batch of upload_sessions. Please refer to `upload_session/start` usage. Calls -/// to this endpoint will count as data transport calls for any Dropbox Business teams with a limit -/// on the number of data transport calls allowed per month. For more information, see the [Data -/// transport limit page](https://www.dropbox.com/developers/reference/data-transport-limit). +/// Start a batch of upload sessions. See +/// [`upload_session_start()`](crate::files::upload_session_start). Calls to this endpoint will +/// count as data transport calls for any Dropbox Business teams with a limit on the number of data +/// transport calls allowed per month. For more information, see the Data transport limit page +/// https://www.dropbox.com/developers/reference/data-transport-limit. pub fn upload_session_start_batch( client: &impl crate::client_trait::UserAuthClient, arg: &UploadSessionStartBatchArg, diff --git a/src/generated/sync_routes/mod.rs b/src/generated/sync_routes/mod.rs index 389b483c..451a6f01 100644 --- a/src/generated/sync_routes/mod.rs +++ b/src/generated/sync_routes/mod.rs @@ -12,6 +12,8 @@ if_feature! { "dbx_account", pub mod account; } +if_feature! { "dbx_account_id", pub mod account_id; } + if_feature! { "dbx_async", pub mod dbx_async; } pub mod auth; @@ -32,6 +34,8 @@ if_feature! { "dbx_openid", pub mod openid; } if_feature! { "dbx_paper", pub mod paper; } +if_feature! { "dbx_riviera", pub mod riviera; } + if_feature! { "dbx_secondary_emails", pub mod secondary_emails; } if_feature! { "dbx_seen_state", pub mod seen_state; } diff --git a/src/generated/sync_routes/paper.rs b/src/generated/sync_routes/paper.rs index 774b51fe..9797e40c 100644 --- a/src/generated/sync_routes/paper.rs +++ b/src/generated/sync_routes/paper.rs @@ -133,17 +133,16 @@ pub fn docs_folder_users_list_continue( ) } -/// Retrieves folder information for the given Paper doc. This includes: - folder sharing policy; -/// permissions for subfolders are set by the top-level folder. - full 'filepath', i.e. the list -/// of folders (both folderId and folderName) from the root folder to the folder directly -/// containing the Paper doc. -/// -/// If the Paper doc is not in any folder (aka unfiled) the response will be empty. Note that this -/// endpoint will continue to work for content created by users on the older version of Paper. To -/// check which version of Paper a user is on, use /users/features/get_values. If the paper_as_files -/// feature is enabled, then the user is running the new version of Paper. Refer to the [Paper -/// Migration Guide](https://www.dropbox.com/lp/developers/reference/paper-migration-guide) for -/// migration information. +/// Retrieves folder information for the given Paper doc. This includes: - folder sharing policy; +/// permissions for subfolders are set by the top-level folder. - full 'filepath', i.e. the list of +/// folders (both folderId and folderName) from the root folder to the folder directly containing +/// the Paper doc. If the Paper doc is not in any folder (aka unfiled) the response will be empty. +/// Note that this endpoint will continue to work for content created by users on the older version +/// of Paper. To check which version of Paper a user is on, use /users/features/get_values. If the +/// paper_as_files feature is enabled, then the user is running the new version of Paper. Refer to +/// the [Paper Migration +/// Guide](https://www.dropbox.com/lp/developers/reference/paper-migration-guide) for migration +/// information. #[deprecated] pub fn docs_get_folder_info( client: &impl crate::client_trait::UserAuthClient, @@ -160,6 +159,22 @@ pub fn docs_get_folder_info( ) } +/// Returns metadata for a Paper doc or Cloud Doc. +pub fn docs_get_metadata( + client: &impl crate::client_trait::UserAuthClient, + arg: &GetDocMetadataArg, +) -> Result> { + crate::client_helpers::unwrap_async( + crate::client_helpers::request( + client, + crate::client_trait_common::Endpoint::Api, + crate::client_trait_common::Style::Rpc, + "paper/docs/get_metadata", + arg, + None) + ) +} + /// Return the list of all Paper docs according to the argument specifications. To iterate over /// through the full pagination, pass the cursor to /// [`docs_list_continue()`](crate::paper::docs_list_continue). Note that this endpoint will diff --git a/src/generated/sync_routes/riviera.rs b/src/generated/sync_routes/riviera.rs new file mode 100644 index 00000000..823ebb35 --- /dev/null +++ b/src/generated/sync_routes/riviera.rs @@ -0,0 +1,97 @@ +// DO NOT EDIT +// This file was @generated by Stone + +#![allow( + clippy::too_many_arguments, + clippy::large_enum_variant, + clippy::result_large_err, + clippy::doc_markdown, +)] + +#[allow(unused_imports)] +pub use crate::generated::types::riviera::*; + +/// Asynchronous transcript generation for audio and video files. +/// +/// # Stability +/// *PREVIEW*: This function may change or disappear without notice. +#[cfg(feature = "unstable")] +#[cfg_attr(docsrs, doc(cfg(feature = "unstable")))] +pub fn get_transcript_async( + client: &impl crate::client_trait::UserAuthClient, + arg: &GetTranscriptArgs, +) -> Result> { + crate::client_helpers::unwrap_async( + crate::client_helpers::request( + client, + crate::client_trait_common::Endpoint::Api, + crate::client_trait_common::Style::Rpc, + "riviera/get_transcript_async", + arg, + None) + ) +} + +/// Asynchronous transcript generation for audio and video files. +/// +/// # Stability +/// *PREVIEW*: This function may change or disappear without notice. +#[cfg(feature = "unstable")] +#[cfg_attr(docsrs, doc(cfg(feature = "unstable")))] +pub fn get_transcript_async_app_auth( + client: &impl crate::client_trait::AppAuthClient, + arg: &GetTranscriptArgs, +) -> Result> { + crate::client_helpers::unwrap_async( + crate::client_helpers::request( + client, + crate::client_trait_common::Endpoint::Api, + crate::client_trait_common::Style::Rpc, + "riviera/get_transcript_async", + arg, + None) + ) +} + +/// Returns the status or result of specified get_transcript_async task. +/// +/// # Stability +/// *PREVIEW*: This function may change or disappear without notice. +#[cfg(feature = "unstable")] +#[cfg_attr(docsrs, doc(cfg(feature = "unstable")))] +pub fn get_transcript_async_check( + client: &impl crate::client_trait::UserAuthClient, + arg: &crate::types::dbx_async::PollArg, +) -> Result> { + crate::client_helpers::unwrap_async( + crate::client_helpers::request( + client, + crate::client_trait_common::Endpoint::Api, + crate::client_trait_common::Style::Rpc, + "riviera/get_transcript_async/check", + arg, + None) + ) +} + +/// Returns the status or result of specified get_transcript_async task. +/// +/// # Stability +/// *PREVIEW*: This function may change or disappear without notice. +#[cfg(feature = "unstable")] +#[cfg_attr(docsrs, doc(cfg(feature = "unstable")))] +pub fn get_transcript_async_check_app_auth( + client: &impl crate::client_trait::AppAuthClient, + arg: &crate::types::dbx_async::PollArg, +) -> Result> { + crate::client_helpers::unwrap_async( + crate::client_helpers::request( + client, + crate::client_trait_common::Endpoint::Api, + crate::client_trait_common::Style::Rpc, + "riviera/get_transcript_async/check", + arg, + None) + ) +} + diff --git a/src/generated/sync_routes/sharing.rs b/src/generated/sync_routes/sharing.rs index bffe4274..24494b4e 100644 --- a/src/generated/sync_routes/sharing.rs +++ b/src/generated/sync_routes/sharing.rs @@ -97,8 +97,8 @@ pub fn check_share_job_status( /// Previously, it was technically possible to break a shared link by moving or renaming the /// corresponding file or folder. In the future, this will no longer be the case, so your app /// shouldn't rely on this behavior. Instead, if your app needs to revoke a shared link, use -/// [`revoke_shared_link()`](crate::sharing::revoke_shared_link). -#[deprecated(note = "replaced by create_shared_link_with_settings")] +/// revoke_shared_link. DEPRECATED: Use create_shared_link_with_settings instead. +#[deprecated] pub fn create_shared_link( client: &impl crate::client_trait::UserAuthClient, arg: &CreateSharedLinkArg, @@ -115,8 +115,8 @@ pub fn create_shared_link( } /// Create a shared link with custom settings. If no settings are given then the default visibility -/// is [`RequestedVisibility::Public`] (The resolved visibility, though, may depend on other aspects -/// such as team and shared folder settings). +/// is RequestedVisibility.public (The resolved visibility, though, may depend on other aspects such +/// as team and shared folder settings). pub fn create_shared_link_with_settings( client: &impl crate::client_trait::UserAuthClient, arg: &CreateSharedLinkWithSettingsArg, @@ -180,7 +180,8 @@ pub fn get_folder_metadata( ) } -/// Download the shared link's file from a user's Dropbox. +/// Download the shared link's file from a user's Dropbox. This is a download-style endpoint that +/// returns the file content. pub fn get_shared_link_file( client: &impl crate::client_trait::UserAuthClient, arg: &GetSharedLinkFileArg, @@ -201,11 +202,33 @@ pub fn get_shared_link_file( ) } +/// Download the shared link's file from a user's Dropbox. This is a download-style endpoint that +/// returns the file content. +pub fn get_shared_link_file_app_auth( + client: &impl crate::client_trait::AppAuthClient, + arg: &GetSharedLinkFileArg, + range_start: Option, + range_end: Option, +) -> Result, crate::Error> { + crate::client_helpers::unwrap_async_body( + crate::client_helpers::request_with_body( + client, + crate::client_trait_common::Endpoint::Content, + crate::client_trait_common::Style::Download, + "sharing/get_shared_link_file", + arg, + None, + range_start, + range_end), + client, + ) +} + /// Get the shared link's metadata. pub fn get_shared_link_metadata( client: &impl crate::client_trait::UserAuthClient, arg: &GetSharedLinkMetadataArg, -) -> Result> { +) -> Result> { crate::client_helpers::unwrap_async( crate::client_helpers::request( client, @@ -221,7 +244,7 @@ pub fn get_shared_link_metadata( pub fn get_shared_link_metadata_app_auth( client: &impl crate::client_trait::AppAuthClient, arg: &GetSharedLinkMetadataArg, -) -> Result> { +) -> Result> { crate::client_helpers::unwrap_async( crate::client_helpers::request( client, @@ -236,8 +259,9 @@ pub fn get_shared_link_metadata_app_auth( /// Returns a list of [`LinkMetadata`] objects for this user, including collection links. If no path /// is given, returns a list of all shared links for the current user, including collection links, /// up to a maximum of 1000 links. If a non-empty path is given, returns a list of all shared links -/// that allow access to the given path. Collection links are never returned in this case. -#[deprecated(note = "replaced by list_shared_links")] +/// that allow access to the given path. Collection links are never returned in this case. +/// DEPRECATED: Use list_shared_links instead. +#[deprecated] pub fn get_shared_links( client: &impl crate::client_trait::UserAuthClient, arg: &GetSharedLinksArg, @@ -412,8 +436,7 @@ pub fn list_mountable_folders_continue( ) } -/// Returns a list of all files shared with current user. Does not include files the user has -/// received via shared folders, and does not include unclaimed invitations. +/// Returns a list of all files shared with current user. pub fn list_received_files( client: &impl crate::client_trait::UserAuthClient, arg: &ListFilesArg, @@ -449,11 +472,9 @@ pub fn list_received_files_continue( /// List shared links of this user. If no path is given, returns a list of all shared links for the /// current user. For members of business teams using team space and member folders, returns all /// shared links in the team member's home folder unless the team space ID is specified in the -/// request header. For more information, refer to the [Namespace -/// Guide](https://www.dropbox.com/developers/reference/namespace-guide). If a non-empty path is -/// given, returns a list of all shared links that allow access to the given path - direct links to -/// the given path and links to parent folders of the given path. Links to parent folders can be -/// suppressed by setting direct_only to true. +/// request header. If a non-empty path is given, returns a list of all shared links that allow +/// access to the given path - direct links to the given path and links to parent folders of the +/// given path. Links to parent folders can be suppressed by setting direct_only to true. pub fn list_shared_links( client: &impl crate::client_trait::UserAuthClient, arg: &ListSharedLinksArg, @@ -471,10 +492,9 @@ pub fn list_shared_links( /// Modify the shared link's settings. If the requested visibility conflict with the shared links /// policy of the team or the shared folder (in case the linked file is part of a shared folder) -/// then the [`LinkPermissions::resolved_visibility`](LinkPermissions) of the returned -/// [`SharedLinkMetadata`] will reflect the actual visibility of the shared link and the -/// [`LinkPermissions::requested_visibility`](LinkPermissions) will reflect the requested -/// visibility. +/// then the LinkPermissions.resolved_visibility of the returned SharedLinkMetadata will reflect the +/// actual visibility of the shared link and the LinkPermissions.requested_visibility will reflect +/// the requested visibility. pub fn modify_shared_link_settings( client: &impl crate::client_trait::UserAuthClient, arg: &ModifySharedLinkSettingsArgs, @@ -507,8 +527,24 @@ pub fn mount_folder( ) } -/// The current user relinquishes their membership in the designated file. Note that the current -/// user may still have inherited access to this file through the parent folder. +/// Removes all self-removable access from a file or folder for the current user. Best-effort and +/// idempotent: attempts to drop link-visitor associations and explicit ACL membership. +pub fn relinquish_access( + client: &impl crate::client_trait::UserAuthClient, + arg: &RelinquishAccessArg, +) -> Result> { + crate::client_helpers::unwrap_async( + crate::client_helpers::request( + client, + crate::client_trait_common::Endpoint::Api, + crate::client_trait_common::Style::Rpc, + "sharing/relinquish_access", + arg, + None) + ) +} + +/// The current user relinquishes their membership in the designated file. pub fn relinquish_file_membership( client: &impl crate::client_trait::UserAuthClient, arg: &RelinquishFileMembershipArg, @@ -544,7 +580,7 @@ pub fn relinquish_folder_membership( } /// Identical to remove_file_member_2 but with less information returned. -#[deprecated(note = "replaced by remove_file_member_2")] +#[deprecated] pub fn remove_file_member( client: &impl crate::client_trait::UserAuthClient, arg: &RemoveFileMemberArg, @@ -595,9 +631,8 @@ pub fn remove_folder_member( /// Revoke a shared link. Note that even after revoking a shared link to a file, the file may be /// accessible if there are shared links leading to any of the file parent folders. To list all -/// shared links that enable access to a specific file, you can use the -/// [`list_shared_links()`](crate::sharing::list_shared_links) with the file as the -/// [`ListSharedLinksArg::path`](ListSharedLinksArg) argument. +/// shared links that enable access to a specific file, you can use the list_shared_links with the +/// file as the ListSharedLinksArg.path argument. pub fn revoke_shared_link( client: &impl crate::client_trait::UserAuthClient, arg: &RevokeSharedLinkArg, @@ -702,9 +737,10 @@ pub fn unshare_file( ) } -/// Allows a shared folder owner to unshare the folder. You'll need to call -/// [`check_job_status()`](crate::sharing::check_job_status) to determine if the action has -/// completed successfully. +/// Allows a shared folder owner to unshare the folder. Unshare will not work in following cases: +/// The shared folder contains shared folders OR the shared folder is inside another shared folder. +/// You'll need to call [`check_job_status()`](crate::sharing::check_job_status) to determine if the +/// action has completed successfully. pub fn unshare_folder( client: &impl crate::client_trait::UserAuthClient, arg: &UnshareFolderArg, diff --git a/src/generated/sync_routes/team.rs b/src/generated/sync_routes/team.rs index 8d8439db..24edca20 100644 --- a/src/generated/sync_routes/team.rs +++ b/src/generated/sync_routes/team.rs @@ -44,7 +44,7 @@ pub fn devices_list_members_devices( } /// List all device sessions of a team. Permission : Team member file access. -#[deprecated(note = "replaced by devices_list_members_devices")] +#[deprecated] pub fn devices_list_team_devices( client: &impl crate::client_trait::TeamAuthClient, arg: &ListTeamDevicesArg, @@ -92,9 +92,9 @@ pub fn devices_revoke_device_session_batch( ) } -/// Get the values for one or more featues. This route allows you to check your account's capability -/// for what feature you can access or what value you have for certain features. Permission : Team -/// information. +/// Get the values for one or more features. This route allows you to check your account's +/// capability for what feature you can access or what value you have for certain features. +/// Permission : Team information. pub fn features_get_values( client: &impl crate::client_trait::TeamAuthClient, arg: &FeaturesGetValuesBatchArg, @@ -491,7 +491,7 @@ pub fn linked_apps_list_members_linked_apps( /// List all applications linked to the team members' accounts. Note, this endpoint doesn't list any /// team-linked applications. -#[deprecated(note = "replaced by linked_apps_list_members_linked_apps")] +#[deprecated] pub fn linked_apps_list_team_linked_apps( client: &impl crate::client_trait::TeamAuthClient, arg: &ListTeamAppsArg, @@ -639,7 +639,7 @@ pub fn member_space_limits_remove_custom_quota( ) } -/// Set users custom quota. Custom quota has to be at least 15GB. A maximum of 1000 members can be +/// Set users custom quota. Custom quota has to be at least 2GB. A maximum of 1000 members can be /// specified in a single call. Note: to apply a custom space limit, a team admin needs to set a /// member space limit for the team first. (the team admin can check the settings here: /// https://www.dropbox.com/team/admin/settings/space). @@ -687,10 +687,7 @@ pub fn members_add( /// Dropbox account will be created with the given email address, and that account will be invited /// to the team. If a personal Dropbox account exists with the email address specified in the call, /// this call will create a placeholder Dropbox account for the user on the team and send an email -/// inviting the user to migrate their existing personal account onto the team. Team member -/// management apps are required to set an initial given_name and surname for a user to use in the -/// team invitation and for 'Perform as team member' actions taken on the user before they become -/// 'active'. +/// inviting the user to migrate their existing personal account onto the team. pub fn members_add_v2( client: &impl crate::client_trait::TeamAuthClient, arg: &MembersAddV2Arg, @@ -740,6 +737,25 @@ pub fn members_add_job_status_get_v2( ) } +/// Permanently delete the files of a user who has been removed from the team. After permanent +/// deletion, those files will not be available to be transferred to another team member. Permission +/// : Team member management Exactly one of team_member_id, email, or external_id must be provided +/// to identify the user account. +pub fn members_delete_former_member_files( + client: &impl crate::client_trait::TeamAuthClient, + arg: &MembersFormerMemberArg, +) -> Result<(), crate::Error> { + crate::client_helpers::unwrap_async( + crate::client_helpers::request( + client, + crate::client_trait_common::Endpoint::Api, + crate::client_trait_common::Style::Rpc, + "team/members/delete_former_member_files", + arg, + None) + ) +} + /// Deletes a team member's profile photo. Permission : Team member management. pub fn members_delete_profile_photo( client: &impl crate::client_trait::TeamAuthClient, @@ -952,8 +968,9 @@ pub fn members_recover( /// [`members_add()`](crate::team::members_add) while a user is still recoverable on your team will /// return with [`MemberAddResult::UserAlreadyOnTeam`]. Accounts can have their files transferred /// via the admin console for a limited time, based on the version history length associated with -/// the team (180 days for most teams). This endpoint may initiate an asynchronous job. To obtain -/// the final result of the job, the client should periodically poll +/// the team (180 days for most teams). Accounts can have their stacks transferred through the admin +/// console. This only transfers stacks that they have created. This endpoint may initiate an +/// asynchronous job. To obtain the final result of the job, the client should periodically poll /// [`members_remove_job_status_get()`](crate::team::members_remove_job_status_get). pub fn members_remove( client: &impl crate::client_trait::TeamAuthClient, @@ -1256,39 +1273,6 @@ pub fn properties_template_get( ) } -/// Permission : Team member file access. The scope for the route is files.team_metadata.write. -#[deprecated] -pub fn properties_template_list( - client: &impl crate::client_trait::TeamAuthClient, -) -> Result> { - crate::client_helpers::unwrap_async( - crate::client_helpers::request( - client, - crate::client_trait_common::Endpoint::Api, - crate::client_trait_common::Style::Rpc, - "team/properties/template/list", - &(), - None) - ) -} - -/// Permission : Team member file access. -#[deprecated] -pub fn properties_template_update( - client: &impl crate::client_trait::TeamAuthClient, - arg: &crate::types::file_properties::UpdateTemplateArg, -) -> Result> { - crate::client_helpers::unwrap_async( - crate::client_helpers::request( - client, - crate::client_trait_common::Endpoint::Api, - crate::client_trait_common::Style::Rpc, - "team/properties/template/update", - arg, - None) - ) -} - /// Retrieves reporting data about a team's user activity. Deprecated: Will be removed on July 1st /// 2021. #[deprecated] @@ -1472,8 +1456,9 @@ pub fn team_folder_activate( } /// Sets an active team folder's status to archived and removes all folder and file members. This -/// endpoint cannot be used for teams that have a shared team space. Permission : Team member file -/// access. +/// endpoint cannot be used for teams that have a shared team space. This route will either finish +/// synchronously, or return a job ID and do the async archive job in background. Please use +/// team_folder/archive/check to check the job status. Permission : Team member file access. pub fn team_folder_archive( client: &impl crate::client_trait::TeamAuthClient, arg: &TeamFolderArchiveArg, @@ -1489,8 +1474,12 @@ pub fn team_folder_archive( ) } -/// Returns the status of an asynchronous job for archiving a team folder. Permission : Team member -/// file access. +/// Returns the status of an asynchronous job for archiving a team folder. The job may show '.tag' +/// as complete, but the team folder could still be in the process of archiving (indicated by +/// [`TeamFolderMetadata::status`](TeamFolderMetadata) with 'archive_in_progress'). To confirm that +/// the team folder is fully archived, check the field +/// [`TeamFolderMetadata::status`](TeamFolderMetadata) in the response for the value 'archived'. +/// Permission : Team member file access. pub fn team_folder_archive_check( client: &impl crate::client_trait::TeamAuthClient, arg: &crate::types::dbx_async::PollArg, @@ -1605,6 +1594,27 @@ pub fn team_folder_rename( ) } +/// Sets an inactive team folder's status to active. Permission: Team member file access. +/// +/// # Stability +/// *PREVIEW*: This function may change or disappear without notice. +#[cfg(feature = "unstable")] +#[cfg_attr(docsrs, doc(cfg(feature = "unstable")))] +pub fn team_folder_restore( + client: &impl crate::client_trait::TeamAuthClient, + arg: &TeamFolderIdArg, +) -> Result> { + crate::client_helpers::unwrap_async( + crate::client_helpers::request( + client, + crate::client_trait_common::Endpoint::Api, + crate::client_trait_common::Style::Rpc, + "team/team_folder/restore", + arg, + None) + ) +} + /// Updates the sync settings on a team folder or its contents. Use of this endpoint requires that /// the team has team selective sync enabled. pub fn team_folder_update_sync_settings( diff --git a/src/generated/sync_routes/users.rs b/src/generated/sync_routes/users.rs index fd283a5f..8bb47b51 100644 --- a/src/generated/sync_routes/users.rs +++ b/src/generated/sync_routes/users.rs @@ -43,7 +43,7 @@ pub fn get_account( ) } -/// Get information about multiple user accounts. At most 300 accounts may be queried per request. +/// Get information about multiple user accounts. At most 300 accounts may be queried per request. pub fn get_account_batch( client: &impl crate::client_trait::UserAuthClient, arg: &GetAccountBatchArg, diff --git a/src/generated/types/account.rs b/src/generated/types/account.rs index e656109e..7230a7e8 100644 --- a/src/generated/types/account.rs +++ b/src/generated/types/account.rs @@ -8,6 +8,334 @@ clippy::doc_markdown, )] +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct AccountPhotoGetArg { + /// Encoded ID of the user. Must start either with 'dbid:' or 'dbaphid:'. + pub dbx_account_id: String, + /// A string representing the size of the photo. + pub size: String, + /// True if the photo should be cropped and false otherwise. + pub circle_crop: bool, + /// True if we expect account photo to exist. + pub expect_account_photo: bool, +} + +impl AccountPhotoGetArg { + pub fn new( + dbx_account_id: String, + size: String, + circle_crop: bool, + expect_account_photo: bool, + ) -> Self { + AccountPhotoGetArg { + dbx_account_id, + size, + circle_crop, + expect_account_photo, + } + } +} + +const ACCOUNT_PHOTO_GET_ARG_FIELDS: &[&str] = &["dbx_account_id", + "size", + "circle_crop", + "expect_account_photo"]; +impl AccountPhotoGetArg { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_dbx_account_id = None; + let mut field_size = None; + let mut field_circle_crop = None; + let mut field_expect_account_photo = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "dbx_account_id" => { + if field_dbx_account_id.is_some() { + return Err(::serde::de::Error::duplicate_field("dbx_account_id")); + } + field_dbx_account_id = Some(map.next_value()?); + } + "size" => { + if field_size.is_some() { + return Err(::serde::de::Error::duplicate_field("size")); + } + field_size = Some(map.next_value()?); + } + "circle_crop" => { + if field_circle_crop.is_some() { + return Err(::serde::de::Error::duplicate_field("circle_crop")); + } + field_circle_crop = Some(map.next_value()?); + } + "expect_account_photo" => { + if field_expect_account_photo.is_some() { + return Err(::serde::de::Error::duplicate_field("expect_account_photo")); + } + field_expect_account_photo = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } + } + } + if optional && nothing { + return Ok(None); + } + let result = AccountPhotoGetArg { + dbx_account_id: field_dbx_account_id.ok_or_else(|| ::serde::de::Error::missing_field("dbx_account_id"))?, + size: field_size.ok_or_else(|| ::serde::de::Error::missing_field("size"))?, + circle_crop: field_circle_crop.ok_or_else(|| ::serde::de::Error::missing_field("circle_crop"))?, + expect_account_photo: field_expect_account_photo.ok_or_else(|| ::serde::de::Error::missing_field("expect_account_photo"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("dbx_account_id", &self.dbx_account_id)?; + s.serialize_field("size", &self.size)?; + s.serialize_field("circle_crop", &self.circle_crop)?; + s.serialize_field("expect_account_photo", &self.expect_account_photo)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for AccountPhotoGetArg { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = AccountPhotoGetArg; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a AccountPhotoGetArg struct") + } + fn visit_map>(self, map: V) -> Result { + AccountPhotoGetArg::internal_deserialize(map) + } + } + deserializer.deserialize_struct("AccountPhotoGetArg", ACCOUNT_PHOTO_GET_ARG_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for AccountPhotoGetArg { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("AccountPhotoGetArg", 4)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // variants may be added in the future +pub enum AccountPhotoGetError { + /// Indicates infrastructural failure. + ThumbnailError(ThumbnailError), + /// Account photo is missing (but we did not expect it to exist). + AccountPhotoMissing, + /// Account photo was expected to exist, but it's missing. + ExpectedAccountPhotoMissing, + /// Catch-all used for unrecognized values returned from the server. Encountering this value + /// typically indicates that this SDK version is out of date. + Other, +} + +impl<'de> ::serde::de::Deserialize<'de> for AccountPhotoGetError { + fn deserialize>(deserializer: D) -> Result { + // union deserializer + use serde::de::{self, MapAccess, Visitor}; + struct EnumVisitor; + impl<'de> Visitor<'de> for EnumVisitor { + type Value = AccountPhotoGetError; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a AccountPhotoGetError structure") + } + fn visit_map>(self, mut map: V) -> Result { + let tag: &str = match map.next_key()? { + Some(".tag") => map.next_value()?, + _ => return Err(de::Error::missing_field(".tag")) + }; + let value = match tag { + "thumbnail_error" => { + match map.next_key()? { + Some("thumbnail_error") => AccountPhotoGetError::ThumbnailError(map.next_value()?), + None => return Err(de::Error::missing_field("thumbnail_error")), + _ => return Err(de::Error::unknown_field(tag, VARIANTS)) + } + } + "account_photo_missing" => AccountPhotoGetError::AccountPhotoMissing, + "expected_account_photo_missing" => AccountPhotoGetError::ExpectedAccountPhotoMissing, + _ => AccountPhotoGetError::Other, + }; + crate::eat_json_fields(&mut map)?; + Ok(value) + } + } + const VARIANTS: &[&str] = &["thumbnail_error", + "account_photo_missing", + "expected_account_photo_missing", + "other"]; + deserializer.deserialize_struct("AccountPhotoGetError", VARIANTS, EnumVisitor) + } +} + +impl ::serde::ser::Serialize for AccountPhotoGetError { + fn serialize(&self, serializer: S) -> Result { + // union serializer + use serde::ser::SerializeStruct; + match self { + AccountPhotoGetError::ThumbnailError(x) => { + // union or polymporphic struct + let mut s = serializer.serialize_struct("AccountPhotoGetError", 2)?; + s.serialize_field(".tag", "thumbnail_error")?; + s.serialize_field("thumbnail_error", x)?; + s.end() + } + AccountPhotoGetError::AccountPhotoMissing => { + // unit + let mut s = serializer.serialize_struct("AccountPhotoGetError", 1)?; + s.serialize_field(".tag", "account_photo_missing")?; + s.end() + } + AccountPhotoGetError::ExpectedAccountPhotoMissing => { + // unit + let mut s = serializer.serialize_struct("AccountPhotoGetError", 1)?; + s.serialize_field(".tag", "expected_account_photo_missing")?; + s.end() + } + AccountPhotoGetError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) + } + } +} + +impl ::std::error::Error for AccountPhotoGetError { + fn source(&self) -> Option<&(dyn ::std::error::Error + 'static)> { + match self { + AccountPhotoGetError::ThumbnailError(inner) => Some(inner), + _ => None, + } + } +} + +impl ::std::fmt::Display for AccountPhotoGetError { + fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + match self { + AccountPhotoGetError::ThumbnailError(inner) => write!(f, "Indicates infrastructural failure: {}", inner), + AccountPhotoGetError::AccountPhotoMissing => f.write_str("Account photo is missing (but we did not expect it to exist)."), + AccountPhotoGetError::ExpectedAccountPhotoMissing => f.write_str("Account photo was expected to exist, but it's missing."), + _ => write!(f, "{:?}", *self), + } + } +} + +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct AccountPhotoGetResult { + /// The data returned by get_photo. + pub content_type: String, +} + +impl AccountPhotoGetResult { + pub fn new(content_type: String) -> Self { + AccountPhotoGetResult { + content_type, + } + } +} + +const ACCOUNT_PHOTO_GET_RESULT_FIELDS: &[&str] = &["content_type"]; +impl AccountPhotoGetResult { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_content_type = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "content_type" => { + if field_content_type.is_some() { + return Err(::serde::de::Error::duplicate_field("content_type")); + } + field_content_type = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } + } + } + if optional && nothing { + return Ok(None); + } + let result = AccountPhotoGetResult { + content_type: field_content_type.ok_or_else(|| ::serde::de::Error::missing_field("content_type"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("content_type", &self.content_type)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for AccountPhotoGetResult { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = AccountPhotoGetResult; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a AccountPhotoGetResult struct") + } + fn visit_map>(self, map: V) -> Result { + AccountPhotoGetResult::internal_deserialize(map) + } + } + deserializer.deserialize_struct("AccountPhotoGetResult", ACCOUNT_PHOTO_GET_RESULT_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for AccountPhotoGetResult { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("AccountPhotoGetResult", 1)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // variants may be added in the future pub enum PhotoSourceArg { @@ -363,3 +691,81 @@ impl ::serde::ser::Serialize for SetProfilePhotoResult { } } +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // variants may be added in the future +pub enum ThumbnailError { + /// Indicates permanent infrastructural failure. + PermanentFailure, + /// Indicates temporary infrastructural failure. + TemporaryFailure, + /// Catch-all used for unrecognized values returned from the server. Encountering this value + /// typically indicates that this SDK version is out of date. + Other, +} + +impl<'de> ::serde::de::Deserialize<'de> for ThumbnailError { + fn deserialize>(deserializer: D) -> Result { + // union deserializer + use serde::de::{self, MapAccess, Visitor}; + struct EnumVisitor; + impl<'de> Visitor<'de> for EnumVisitor { + type Value = ThumbnailError; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a ThumbnailError structure") + } + fn visit_map>(self, mut map: V) -> Result { + let tag: &str = match map.next_key()? { + Some(".tag") => map.next_value()?, + _ => return Err(de::Error::missing_field(".tag")) + }; + let value = match tag { + "permanent_failure" => ThumbnailError::PermanentFailure, + "temporary_failure" => ThumbnailError::TemporaryFailure, + _ => ThumbnailError::Other, + }; + crate::eat_json_fields(&mut map)?; + Ok(value) + } + } + const VARIANTS: &[&str] = &["permanent_failure", + "temporary_failure", + "other"]; + deserializer.deserialize_struct("ThumbnailError", VARIANTS, EnumVisitor) + } +} + +impl ::serde::ser::Serialize for ThumbnailError { + fn serialize(&self, serializer: S) -> Result { + // union serializer + use serde::ser::SerializeStruct; + match self { + ThumbnailError::PermanentFailure => { + // unit + let mut s = serializer.serialize_struct("ThumbnailError", 1)?; + s.serialize_field(".tag", "permanent_failure")?; + s.end() + } + ThumbnailError::TemporaryFailure => { + // unit + let mut s = serializer.serialize_struct("ThumbnailError", 1)?; + s.serialize_field(".tag", "temporary_failure")?; + s.end() + } + ThumbnailError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) + } + } +} + +impl ::std::error::Error for ThumbnailError { +} + +impl ::std::fmt::Display for ThumbnailError { + fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + match self { + ThumbnailError::PermanentFailure => f.write_str("Indicates permanent infrastructural failure."), + ThumbnailError::TemporaryFailure => f.write_str("Indicates temporary infrastructural failure."), + _ => write!(f, "{:?}", *self), + } + } +} + diff --git a/src/generated/types/account_id.rs b/src/generated/types/account_id.rs new file mode 100644 index 00000000..3f943e0d --- /dev/null +++ b/src/generated/types/account_id.rs @@ -0,0 +1,10 @@ +// DO NOT EDIT +// This file was @generated by Stone + +#![allow( + clippy::too_many_arguments, + clippy::large_enum_variant, + clippy::result_large_err, + clippy::doc_markdown, +)] + diff --git a/src/generated/types/auth.rs b/src/generated/types/auth.rs index ab47f74b..94d3b10d 100644 --- a/src/generated/types/auth.rs +++ b/src/generated/types/auth.rs @@ -16,6 +16,10 @@ pub enum AccessError { InvalidAccountType(InvalidAccountTypeError), /// Current account cannot access Paper. PaperAccessDenied(PaperAccessError), + /// Team doesn't have permission to access. + TeamAccessDenied, + /// Caller does not have permission to access the resource. + NoPermission(NoPermissionError), /// Catch-all used for unrecognized values returned from the server. Encountering this value /// typically indicates that this SDK version is out of date. Other, @@ -51,6 +55,14 @@ impl<'de> ::serde::de::Deserialize<'de> for AccessError { _ => return Err(de::Error::unknown_field(tag, VARIANTS)) } } + "team_access_denied" => AccessError::TeamAccessDenied, + "no_permission" => { + match map.next_key()? { + Some("no_permission") => AccessError::NoPermission(map.next_value()?), + None => return Err(de::Error::missing_field("no_permission")), + _ => return Err(de::Error::unknown_field(tag, VARIANTS)) + } + } _ => AccessError::Other, }; crate::eat_json_fields(&mut map)?; @@ -59,6 +71,8 @@ impl<'de> ::serde::de::Deserialize<'de> for AccessError { } const VARIANTS: &[&str] = &["invalid_account_type", "paper_access_denied", + "team_access_denied", + "no_permission", "other"]; deserializer.deserialize_struct("AccessError", VARIANTS, EnumVisitor) } @@ -83,6 +97,19 @@ impl ::serde::ser::Serialize for AccessError { s.serialize_field("paper_access_denied", x)?; s.end() } + AccessError::TeamAccessDenied => { + // unit + let mut s = serializer.serialize_struct("AccessError", 1)?; + s.serialize_field(".tag", "team_access_denied")?; + s.end() + } + AccessError::NoPermission(x) => { + // union or polymporphic struct + let mut s = serializer.serialize_struct("AccessError", 2)?; + s.serialize_field(".tag", "no_permission")?; + s.serialize_field("no_permission", x)?; + s.end() + } AccessError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) } } @@ -93,6 +120,7 @@ impl ::std::error::Error for AccessError { match self { AccessError::InvalidAccountType(inner) => Some(inner), AccessError::PaperAccessDenied(inner) => Some(inner), + AccessError::NoPermission(inner) => Some(inner), _ => None, } } @@ -103,6 +131,8 @@ impl ::std::fmt::Display for AccessError { match self { AccessError::InvalidAccountType(inner) => write!(f, "Current account type cannot access the resource: {}", inner), AccessError::PaperAccessDenied(inner) => write!(f, "Current account cannot access Paper: {}", inner), + AccessError::TeamAccessDenied => f.write_str("Team doesn't have permission to access."), + AccessError::NoPermission(inner) => write!(f, "Caller does not have permission to access the resource: {}", inner), _ => write!(f, "{:?}", *self), } } @@ -321,6 +351,75 @@ impl ::std::fmt::Display for InvalidAccountTypeError { } } +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // variants may be added in the future +pub enum NoPermissionError { + /// Current caller does not have permission to access the account information for one or more of + /// the specified account IDs. + UnauthorizedAccountIdUsage(UnauthorizedAccountIdUsageError), + /// Catch-all used for unrecognized values returned from the server. Encountering this value + /// typically indicates that this SDK version is out of date. + Other, +} + +impl<'de> ::serde::de::Deserialize<'de> for NoPermissionError { + fn deserialize>(deserializer: D) -> Result { + // union deserializer + use serde::de::{self, MapAccess, Visitor}; + struct EnumVisitor; + impl<'de> Visitor<'de> for EnumVisitor { + type Value = NoPermissionError; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a NoPermissionError structure") + } + fn visit_map>(self, mut map: V) -> Result { + let tag: &str = match map.next_key()? { + Some(".tag") => map.next_value()?, + _ => return Err(de::Error::missing_field(".tag")) + }; + let value = match tag { + "unauthorized_account_id_usage" => NoPermissionError::UnauthorizedAccountIdUsage(UnauthorizedAccountIdUsageError::internal_deserialize(&mut map)?), + _ => NoPermissionError::Other, + }; + crate::eat_json_fields(&mut map)?; + Ok(value) + } + } + const VARIANTS: &[&str] = &["unauthorized_account_id_usage", + "other"]; + deserializer.deserialize_struct("NoPermissionError", VARIANTS, EnumVisitor) + } +} + +impl ::serde::ser::Serialize for NoPermissionError { + fn serialize(&self, serializer: S) -> Result { + // union serializer + use serde::ser::SerializeStruct; + match self { + NoPermissionError::UnauthorizedAccountIdUsage(x) => { + // struct + let mut s = serializer.serialize_struct("NoPermissionError", 2)?; + s.serialize_field(".tag", "unauthorized_account_id_usage")?; + x.internal_serialize::(&mut s)?; + s.end() + } + NoPermissionError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) + } + } +} + +impl ::std::error::Error for NoPermissionError { +} + +impl ::std::fmt::Display for NoPermissionError { + fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + match self { + NoPermissionError::UnauthorizedAccountIdUsage(inner) => write!(f, "Current caller does not have permission to access the account information for one or more of the specified account IDs: {:?}", inner), + _ => write!(f, "{:?}", *self), + } + } +} + #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // variants may be added in the future pub enum PaperAccessError { @@ -950,3 +1049,94 @@ impl ::serde::ser::Serialize for TokenScopeError { } } +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct UnauthorizedAccountIdUsageError { + /// The account IDs that the caller does not have permission to use. + pub unauthorized_account_ids: Vec, +} + +impl UnauthorizedAccountIdUsageError { + pub fn new(unauthorized_account_ids: Vec) -> Self { + UnauthorizedAccountIdUsageError { + unauthorized_account_ids, + } + } +} + +const UNAUTHORIZED_ACCOUNT_ID_USAGE_ERROR_FIELDS: &[&str] = &["unauthorized_account_ids"]; +impl UnauthorizedAccountIdUsageError { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_unauthorized_account_ids = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "unauthorized_account_ids" => { + if field_unauthorized_account_ids.is_some() { + return Err(::serde::de::Error::duplicate_field("unauthorized_account_ids")); + } + field_unauthorized_account_ids = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } + } + } + if optional && nothing { + return Ok(None); + } + let result = UnauthorizedAccountIdUsageError { + unauthorized_account_ids: field_unauthorized_account_ids.ok_or_else(|| ::serde::de::Error::missing_field("unauthorized_account_ids"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("unauthorized_account_ids", &self.unauthorized_account_ids)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for UnauthorizedAccountIdUsageError { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = UnauthorizedAccountIdUsageError; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a UnauthorizedAccountIdUsageError struct") + } + fn visit_map>(self, map: V) -> Result { + UnauthorizedAccountIdUsageError::internal_deserialize(map) + } + } + deserializer.deserialize_struct("UnauthorizedAccountIdUsageError", UNAUTHORIZED_ACCOUNT_ID_USAGE_ERROR_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for UnauthorizedAccountIdUsageError { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("UnauthorizedAccountIdUsageError", 1)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + diff --git a/src/generated/types/check.rs b/src/generated/types/check.rs index 9d7d174c..681421c5 100644 --- a/src/generated/types/check.rs +++ b/src/generated/types/check.rs @@ -90,6 +90,74 @@ impl ::serde::ser::Serialize for EchoArg { } } +/// EchoError contains the error returned from the Dropbox servers. +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // variants may be added in the future +pub enum EchoError { + /// The request was successful. + UserRequested, + /// Catch-all used for unrecognized values returned from the server. Encountering this value + /// typically indicates that this SDK version is out of date. + Other, +} + +impl<'de> ::serde::de::Deserialize<'de> for EchoError { + fn deserialize>(deserializer: D) -> Result { + // union deserializer + use serde::de::{self, MapAccess, Visitor}; + struct EnumVisitor; + impl<'de> Visitor<'de> for EnumVisitor { + type Value = EchoError; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a EchoError structure") + } + fn visit_map>(self, mut map: V) -> Result { + let tag: &str = match map.next_key()? { + Some(".tag") => map.next_value()?, + _ => return Err(de::Error::missing_field(".tag")) + }; + let value = match tag { + "user_requested" => EchoError::UserRequested, + _ => EchoError::Other, + }; + crate::eat_json_fields(&mut map)?; + Ok(value) + } + } + const VARIANTS: &[&str] = &["user_requested", + "other"]; + deserializer.deserialize_struct("EchoError", VARIANTS, EnumVisitor) + } +} + +impl ::serde::ser::Serialize for EchoError { + fn serialize(&self, serializer: S) -> Result { + // union serializer + use serde::ser::SerializeStruct; + match self { + EchoError::UserRequested => { + // unit + let mut s = serializer.serialize_struct("EchoError", 1)?; + s.serialize_field(".tag", "user_requested")?; + s.end() + } + EchoError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) + } + } +} + +impl ::std::error::Error for EchoError { +} + +impl ::std::fmt::Display for EchoError { + fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + match self { + EchoError::UserRequested => f.write_str("The request was successful."), + _ => write!(f, "{:?}", *self), + } + } +} + /// EchoResult contains the result returned from the Dropbox servers. #[derive(Debug, Clone, PartialEq, Eq, Default)] #[non_exhaustive] // structs may have more fields added in the future. diff --git a/src/generated/types/common.rs b/src/generated/types/common.rs index 80032323..b7214afd 100644 --- a/src/generated/types/common.rs +++ b/src/generated/types/common.rs @@ -20,6 +20,108 @@ pub type OptionalNamePart = String; pub type SessionId = String; pub type SharedFolderId = NamespaceId; +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct DropboxDuration { + pub seconds: i64, + pub nanos: i32, +} + +impl DropboxDuration { + pub fn new(seconds: i64, nanos: i32) -> Self { + DropboxDuration { + seconds, + nanos, + } + } +} + +const DROPBOX_DURATION_FIELDS: &[&str] = &["seconds", + "nanos"]; +impl DropboxDuration { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_seconds = None; + let mut field_nanos = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "seconds" => { + if field_seconds.is_some() { + return Err(::serde::de::Error::duplicate_field("seconds")); + } + field_seconds = Some(map.next_value()?); + } + "nanos" => { + if field_nanos.is_some() { + return Err(::serde::de::Error::duplicate_field("nanos")); + } + field_nanos = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } + } + } + if optional && nothing { + return Ok(None); + } + let result = DropboxDuration { + seconds: field_seconds.ok_or_else(|| ::serde::de::Error::missing_field("seconds"))?, + nanos: field_nanos.ok_or_else(|| ::serde::de::Error::missing_field("nanos"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("seconds", &self.seconds)?; + s.serialize_field("nanos", &self.nanos)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for DropboxDuration { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = DropboxDuration; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a DropboxDuration struct") + } + fn visit_map>(self, map: V) -> Result { + DropboxDuration::internal_deserialize(map) + } + } + deserializer.deserialize_struct("DropboxDuration", DROPBOX_DURATION_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for DropboxDuration { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("DropboxDuration", 2)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // variants may be added in the future pub enum PathRoot { @@ -118,7 +220,7 @@ pub enum PathRootError { /// The root namespace id in Dropbox-API-Path-Root header is not valid. The value of this error /// is the user's latest root info. InvalidRoot(RootInfo), - /// You don't have permission to access the namespace id in Dropbox-API-Path-Root header. + /// You don't have permission to access the namespace id in Dropbox-API-Path-Root header. NoPermission, /// Catch-all used for unrecognized values returned from the server. Encountering this value /// typically indicates that this SDK version is out of date. @@ -192,7 +294,7 @@ impl ::std::fmt::Display for PathRootError { fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { match self { PathRootError::InvalidRoot(inner) => write!(f, "The root namespace id in Dropbox-API-Path-Root header is not valid. The value of this error is the user's latest root info: {:?}", inner), - PathRootError::NoPermission => f.write_str("You don't have permission to access the namespace id in Dropbox-API-Path-Root header."), + PathRootError::NoPermission => f.write_str("You don't have permission to access the namespace id in Dropbox-API-Path-Root header."), _ => write!(f, "{:?}", *self), } } @@ -252,7 +354,7 @@ impl ::serde::ser::Serialize for RootInfo { s.end() } RootInfo::User(x) => { - let mut s = serializer.serialize_struct("RootInfo", 3)?; + let mut s = serializer.serialize_struct("RootInfo", 4)?; s.serialize_field(".tag", "user")?; x.internal_serialize::(&mut s)?; s.end() @@ -267,7 +369,8 @@ impl ::serde::ser::Serialize for RootInfo { #[non_exhaustive] // structs may have more fields added in the future. pub struct TeamRootInfo { /// The namespace ID for user's root namespace. It will be the namespace ID of the shared team - /// root if the user is member of a team with a separate team root. Otherwise it will be same as + /// root if the user is member of a team with a separate team root, or the user root if user is + /// member of a team with separate distinct roots for users. Otherwise it will be the same as /// `home_namespace_id`. pub root_namespace_id: NamespaceId, /// The namespace ID for user's home namespace. @@ -398,11 +501,14 @@ impl From for RootInfo { #[non_exhaustive] // structs may have more fields added in the future. pub struct UserRootInfo { /// The namespace ID for user's root namespace. It will be the namespace ID of the shared team - /// root if the user is member of a team with a separate team root. Otherwise it will be same as + /// root if the user is member of a team with a separate team root, or the user root if user is + /// member of a team with separate distinct roots for users. Otherwise it will be the same as /// `home_namespace_id`. pub root_namespace_id: NamespaceId, /// The namespace ID for user's home namespace. pub home_namespace_id: NamespaceId, + /// The path for user's home directory under the distinct user root. + pub home_path: Option, } impl UserRootInfo { @@ -410,12 +516,19 @@ impl UserRootInfo { UserRootInfo { root_namespace_id, home_namespace_id, + home_path: None, } } + + pub fn with_home_path(mut self, value: String) -> Self { + self.home_path = Some(value); + self + } } const USER_ROOT_INFO_FIELDS: &[&str] = &["root_namespace_id", - "home_namespace_id"]; + "home_namespace_id", + "home_path"]; impl UserRootInfo { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, @@ -429,6 +542,7 @@ impl UserRootInfo { ) -> Result, V::Error> { let mut field_root_namespace_id = None; let mut field_home_namespace_id = None; + let mut field_home_path = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; @@ -445,6 +559,12 @@ impl UserRootInfo { } field_home_namespace_id = Some(map.next_value()?); } + "home_path" => { + if field_home_path.is_some() { + return Err(::serde::de::Error::duplicate_field("home_path")); + } + field_home_path = Some(map.next_value()?); + } _ => { // unknown field allowed and ignored map.next_value::<::serde_json::Value>()?; @@ -457,6 +577,7 @@ impl UserRootInfo { let result = UserRootInfo { root_namespace_id: field_root_namespace_id.ok_or_else(|| ::serde::de::Error::missing_field("root_namespace_id"))?, home_namespace_id: field_home_namespace_id.ok_or_else(|| ::serde::de::Error::missing_field("home_namespace_id"))?, + home_path: field_home_path.and_then(Option::flatten), }; Ok(Some(result)) } @@ -468,6 +589,9 @@ impl UserRootInfo { use serde::ser::SerializeStruct; s.serialize_field("root_namespace_id", &self.root_namespace_id)?; s.serialize_field("home_namespace_id", &self.home_namespace_id)?; + if let Some(val) = &self.home_path { + s.serialize_field("home_path", val)?; + } Ok(()) } } @@ -494,7 +618,7 @@ impl ::serde::ser::Serialize for UserRootInfo { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("UserRootInfo", 2)?; + let mut s = serializer.serialize_struct("UserRootInfo", 3)?; self.internal_serialize::(&mut s)?; s.end() } diff --git a/src/generated/types/dbx_async.rs b/src/generated/types/dbx_async.rs index 0aa446ba..e8476f4a 100644 --- a/src/generated/types/dbx_async.rs +++ b/src/generated/types/dbx_async.rs @@ -392,7 +392,7 @@ impl ::std::fmt::Display for PollError { /// Result returned by methods that poll for the status of an asynchronous job. Unions that extend /// this union should add a 'complete' field with a type of the information returned upon job -/// completion. See [`PollEmptyResult`] for an example. +/// completion. See [`PollEmptyResult`] for an example #[derive(Debug, Clone, PartialEq, Eq)] pub enum PollResultBase { /// The asynchronous job is still in progress. diff --git a/src/generated/types/file_properties.rs b/src/generated/types/file_properties.rs index 433fa8d9..18545bc5 100644 --- a/src/generated/types/file_properties.rs +++ b/src/generated/types/file_properties.rs @@ -8,9 +8,8 @@ clippy::doc_markdown, )] -//! This namespace contains helpers for property and template metadata endpoints. -//! -//! These endpoints enable you to tag arbitrary key/value data to Dropbox files. +//! This namespace contains helpers for property and template metadata endpoints. These endpoints +//! enable you to tag arbitrary key/value data to Dropbox files. //! //! The most basic unit in this namespace is the [`PropertyField`]. These fields encapsulate the //! actual key/value data. @@ -50,7 +49,7 @@ pub struct AddPropertiesArg { /// A unique identifier for the file or folder. pub path: PathOrId, /// The property groups which are to be added to a Dropbox file. No two groups in the input - /// should refer to the same template. + /// should refer to the same template. pub property_groups: Vec, } @@ -2539,8 +2538,6 @@ pub struct PropertyFieldTemplate { pub name: String, /// Description of the property field. Property field descriptions can be up to 1024 bytes. pub description: String, - /// Data type of the value of this property field. This type will be enforced upon property - /// creation and modifications. pub type_field: PropertyType, } @@ -2877,13 +2874,15 @@ impl ::serde::ser::Serialize for PropertyGroupTemplate { } } +/// Property routes #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. pub struct PropertyGroupUpdate { /// A unique identifier for a property template. pub template_id: TemplateId, /// Property fields to update. If the property field already exists, it is updated. If the - /// property field doesn't exist, the property group is added. + /// property field doesn't exist, it will be created as long as the property group already + /// exists. pub add_or_update_fields: Option>, /// Property fields to remove (by name), provided they exist. pub remove_fields: Option>, diff --git a/src/generated/types/file_requests.rs b/src/generated/types/file_requests.rs index 193f3d0a..4a1cf217 100644 --- a/src/generated/types/file_requests.rs +++ b/src/generated/types/file_requests.rs @@ -199,6 +199,8 @@ pub struct CreateFileRequestArgs { pub open: bool, /// A description of the file request. pub description: Option, + /// If this request was created from video project, its id. + pub video_project_id: Option, } impl CreateFileRequestArgs { @@ -209,6 +211,7 @@ impl CreateFileRequestArgs { deadline: None, open: true, description: None, + video_project_id: None, } } @@ -226,13 +229,19 @@ impl CreateFileRequestArgs { self.description = Some(value); self } + + pub fn with_video_project_id(mut self, value: String) -> Self { + self.video_project_id = Some(value); + self + } } const CREATE_FILE_REQUEST_ARGS_FIELDS: &[&str] = &["title", "destination", "deadline", "open", - "description"]; + "description", + "video_project_id"]; impl CreateFileRequestArgs { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, @@ -249,6 +258,7 @@ impl CreateFileRequestArgs { let mut field_deadline = None; let mut field_open = None; let mut field_description = None; + let mut field_video_project_id = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; @@ -283,6 +293,12 @@ impl CreateFileRequestArgs { } field_description = Some(map.next_value()?); } + "video_project_id" => { + if field_video_project_id.is_some() { + return Err(::serde::de::Error::duplicate_field("video_project_id")); + } + field_video_project_id = Some(map.next_value()?); + } _ => { // unknown field allowed and ignored map.next_value::<::serde_json::Value>()?; @@ -298,6 +314,7 @@ impl CreateFileRequestArgs { deadline: field_deadline.and_then(Option::flatten), open: field_open.unwrap_or(true), description: field_description.and_then(Option::flatten), + video_project_id: field_video_project_id.and_then(Option::flatten), }; Ok(Some(result)) } @@ -318,6 +335,9 @@ impl CreateFileRequestArgs { if let Some(val) = &self.description { s.serialize_field("description", val)?; } + if let Some(val) = &self.video_project_id { + s.serialize_field("video_project_id", val)?; + } Ok(()) } } @@ -344,7 +364,7 @@ impl ::serde::ser::Serialize for CreateFileRequestArgs { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("CreateFileRequestArgs", 5)?; + let mut s = serializer.serialize_struct("CreateFileRequestArgs", 6)?; self.internal_serialize::(&mut s)?; s.end() } @@ -372,6 +392,8 @@ pub enum CreateFileRequestError { /// There was an error validating the request. For example, the title was invalid, or there were /// disallowed characters in the destination path. ValidationError, + /// This user doesn't have permission to edit files in a destination folder + NoWritePermission, /// File requests are not available on the specified folder. InvalidLocation, /// The user has reached the rate limit for creating file requests. The limit is currently 4000 @@ -405,6 +427,7 @@ impl<'de> ::serde::de::Deserialize<'de> for CreateFileRequestError { "no_permission" => CreateFileRequestError::NoPermission, "email_unverified" => CreateFileRequestError::EmailUnverified, "validation_error" => CreateFileRequestError::ValidationError, + "no_write_permission" => CreateFileRequestError::NoWritePermission, "invalid_location" => CreateFileRequestError::InvalidLocation, "rate_limit" => CreateFileRequestError::RateLimit, _ => CreateFileRequestError::Other, @@ -421,6 +444,7 @@ impl<'de> ::serde::de::Deserialize<'de> for CreateFileRequestError { "no_permission", "email_unverified", "validation_error", + "no_write_permission", "invalid_location", "rate_limit"]; deserializer.deserialize_struct("CreateFileRequestError", VARIANTS, EnumVisitor) @@ -474,6 +498,12 @@ impl ::serde::ser::Serialize for CreateFileRequestError { s.serialize_field(".tag", "validation_error")?; s.end() } + CreateFileRequestError::NoWritePermission => { + // unit + let mut s = serializer.serialize_struct("CreateFileRequestError", 1)?; + s.serialize_field(".tag", "no_write_permission")?; + s.end() + } CreateFileRequestError::InvalidLocation => { // unit let mut s = serializer.serialize_struct("CreateFileRequestError", 1)?; @@ -503,6 +533,7 @@ impl ::std::fmt::Display for CreateFileRequestError { CreateFileRequestError::AppLacksAccess => f.write_str("This file request is not accessible to this app. Apps with the app folder permission can only access file requests in their app folder."), CreateFileRequestError::NoPermission => f.write_str("This user doesn't have permission to access or modify this file request."), CreateFileRequestError::ValidationError => f.write_str("There was an error validating the request. For example, the title was invalid, or there were disallowed characters in the destination path."), + CreateFileRequestError::NoWritePermission => f.write_str("This user doesn't have permission to edit files in a destination folder"), CreateFileRequestError::InvalidLocation => f.write_str("File requests are not available on the specified folder."), CreateFileRequestError::RateLimit => f.write_str("The user has reached the rate limit for creating file requests. The limit is currently 4000 file requests total."), _ => write!(f, "{:?}", *self), @@ -522,6 +553,7 @@ impl From for CreateFileRequestError { FileRequestError::NoPermission => CreateFileRequestError::NoPermission, FileRequestError::EmailUnverified => CreateFileRequestError::EmailUnverified, FileRequestError::ValidationError => CreateFileRequestError::ValidationError, + FileRequestError::NoWritePermission => CreateFileRequestError::NoWritePermission, } } } @@ -547,6 +579,8 @@ pub enum DeleteAllClosedFileRequestsError { /// There was an error validating the request. For example, the title was invalid, or there were /// disallowed characters in the destination path. ValidationError, + /// This user doesn't have permission to edit files in a destination folder + NoWritePermission, /// Catch-all used for unrecognized values returned from the server. Encountering this value /// typically indicates that this SDK version is out of date. Other, @@ -575,6 +609,7 @@ impl<'de> ::serde::de::Deserialize<'de> for DeleteAllClosedFileRequestsError { "no_permission" => DeleteAllClosedFileRequestsError::NoPermission, "email_unverified" => DeleteAllClosedFileRequestsError::EmailUnverified, "validation_error" => DeleteAllClosedFileRequestsError::ValidationError, + "no_write_permission" => DeleteAllClosedFileRequestsError::NoWritePermission, _ => DeleteAllClosedFileRequestsError::Other, }; crate::eat_json_fields(&mut map)?; @@ -588,7 +623,8 @@ impl<'de> ::serde::de::Deserialize<'de> for DeleteAllClosedFileRequestsError { "app_lacks_access", "no_permission", "email_unverified", - "validation_error"]; + "validation_error", + "no_write_permission"]; deserializer.deserialize_struct("DeleteAllClosedFileRequestsError", VARIANTS, EnumVisitor) } } @@ -640,6 +676,12 @@ impl ::serde::ser::Serialize for DeleteAllClosedFileRequestsError { s.serialize_field(".tag", "validation_error")?; s.end() } + DeleteAllClosedFileRequestsError::NoWritePermission => { + // unit + let mut s = serializer.serialize_struct("DeleteAllClosedFileRequestsError", 1)?; + s.serialize_field(".tag", "no_write_permission")?; + s.end() + } DeleteAllClosedFileRequestsError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) } } @@ -657,6 +699,7 @@ impl ::std::fmt::Display for DeleteAllClosedFileRequestsError { DeleteAllClosedFileRequestsError::AppLacksAccess => f.write_str("This file request is not accessible to this app. Apps with the app folder permission can only access file requests in their app folder."), DeleteAllClosedFileRequestsError::NoPermission => f.write_str("This user doesn't have permission to access or modify this file request."), DeleteAllClosedFileRequestsError::ValidationError => f.write_str("There was an error validating the request. For example, the title was invalid, or there were disallowed characters in the destination path."), + DeleteAllClosedFileRequestsError::NoWritePermission => f.write_str("This user doesn't have permission to edit files in a destination folder"), _ => write!(f, "{:?}", *self), } } @@ -674,6 +717,7 @@ impl From for DeleteAllClosedFileRequestsError { FileRequestError::NoPermission => DeleteAllClosedFileRequestsError::NoPermission, FileRequestError::EmailUnverified => DeleteAllClosedFileRequestsError::EmailUnverified, FileRequestError::ValidationError => DeleteAllClosedFileRequestsError::ValidationError, + FileRequestError::NoWritePermission => DeleteAllClosedFileRequestsError::NoWritePermission, } } } @@ -883,6 +927,8 @@ pub enum DeleteFileRequestError { /// There was an error validating the request. For example, the title was invalid, or there were /// disallowed characters in the destination path. ValidationError, + /// This user doesn't have permission to edit files in a destination folder + NoWritePermission, /// One or more file requests currently open. FileRequestOpen, /// Catch-all used for unrecognized values returned from the server. Encountering this value @@ -913,6 +959,7 @@ impl<'de> ::serde::de::Deserialize<'de> for DeleteFileRequestError { "no_permission" => DeleteFileRequestError::NoPermission, "email_unverified" => DeleteFileRequestError::EmailUnverified, "validation_error" => DeleteFileRequestError::ValidationError, + "no_write_permission" => DeleteFileRequestError::NoWritePermission, "file_request_open" => DeleteFileRequestError::FileRequestOpen, _ => DeleteFileRequestError::Other, }; @@ -928,6 +975,7 @@ impl<'de> ::serde::de::Deserialize<'de> for DeleteFileRequestError { "no_permission", "email_unverified", "validation_error", + "no_write_permission", "file_request_open"]; deserializer.deserialize_struct("DeleteFileRequestError", VARIANTS, EnumVisitor) } @@ -980,6 +1028,12 @@ impl ::serde::ser::Serialize for DeleteFileRequestError { s.serialize_field(".tag", "validation_error")?; s.end() } + DeleteFileRequestError::NoWritePermission => { + // unit + let mut s = serializer.serialize_struct("DeleteFileRequestError", 1)?; + s.serialize_field(".tag", "no_write_permission")?; + s.end() + } DeleteFileRequestError::FileRequestOpen => { // unit let mut s = serializer.serialize_struct("DeleteFileRequestError", 1)?; @@ -1003,6 +1057,7 @@ impl ::std::fmt::Display for DeleteFileRequestError { DeleteFileRequestError::AppLacksAccess => f.write_str("This file request is not accessible to this app. Apps with the app folder permission can only access file requests in their app folder."), DeleteFileRequestError::NoPermission => f.write_str("This user doesn't have permission to access or modify this file request."), DeleteFileRequestError::ValidationError => f.write_str("There was an error validating the request. For example, the title was invalid, or there were disallowed characters in the destination path."), + DeleteFileRequestError::NoWritePermission => f.write_str("This user doesn't have permission to edit files in a destination folder"), DeleteFileRequestError::FileRequestOpen => f.write_str("One or more file requests currently open."), _ => write!(f, "{:?}", *self), } @@ -1021,6 +1076,7 @@ impl From for DeleteFileRequestError { FileRequestError::NoPermission => DeleteFileRequestError::NoPermission, FileRequestError::EmailUnverified => DeleteFileRequestError::EmailUnverified, FileRequestError::ValidationError => DeleteFileRequestError::ValidationError, + FileRequestError::NoWritePermission => DeleteFileRequestError::NoWritePermission, } } } @@ -1142,6 +1198,8 @@ pub struct FileRequest { pub deadline: Option, /// A description of the file request. pub description: Option, + /// If this request was created from video project, its id. + pub video_project_id: Option, } impl FileRequest { @@ -1163,6 +1221,7 @@ impl FileRequest { destination: None, deadline: None, description: None, + video_project_id: None, } } @@ -1180,6 +1239,11 @@ impl FileRequest { self.description = Some(value); self } + + pub fn with_video_project_id(mut self, value: String) -> Self { + self.video_project_id = Some(value); + self + } } const FILE_REQUEST_FIELDS: &[&str] = &["id", @@ -1190,7 +1254,8 @@ const FILE_REQUEST_FIELDS: &[&str] = &["id", "file_count", "destination", "deadline", - "description"]; + "description", + "video_project_id"]; impl FileRequest { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, @@ -1211,6 +1276,7 @@ impl FileRequest { let mut field_destination = None; let mut field_deadline = None; let mut field_description = None; + let mut field_video_project_id = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; @@ -1269,6 +1335,12 @@ impl FileRequest { } field_description = Some(map.next_value()?); } + "video_project_id" => { + if field_video_project_id.is_some() { + return Err(::serde::de::Error::duplicate_field("video_project_id")); + } + field_video_project_id = Some(map.next_value()?); + } _ => { // unknown field allowed and ignored map.next_value::<::serde_json::Value>()?; @@ -1288,6 +1360,7 @@ impl FileRequest { destination: field_destination.and_then(Option::flatten), deadline: field_deadline.and_then(Option::flatten), description: field_description.and_then(Option::flatten), + video_project_id: field_video_project_id.and_then(Option::flatten), }; Ok(Some(result)) } @@ -1312,6 +1385,9 @@ impl FileRequest { if let Some(val) = &self.description { s.serialize_field("description", val)?; } + if let Some(val) = &self.video_project_id { + s.serialize_field("video_project_id", val)?; + } Ok(()) } } @@ -1338,7 +1414,7 @@ impl ::serde::ser::Serialize for FileRequest { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("FileRequest", 9)?; + let mut s = serializer.serialize_struct("FileRequest", 10)?; self.internal_serialize::(&mut s)?; s.end() } @@ -1349,8 +1425,7 @@ impl ::serde::ser::Serialize for FileRequest { pub struct FileRequestDeadline { /// The deadline for this file request. pub deadline: crate::types::common::DropboxTimestamp, - /// If set, allow uploads after the deadline has passed. These uploads will be marked - /// overdue. + /// If set, allow uploads after the deadline has passed. These uploads will be marked overdue. pub allow_late_uploads: Option, } @@ -1478,6 +1553,8 @@ pub enum FileRequestError { /// There was an error validating the request. For example, the title was invalid, or there were /// disallowed characters in the destination path. ValidationError, + /// This user doesn't have permission to edit files in a destination folder + NoWritePermission, /// Catch-all used for unrecognized values returned from the server. Encountering this value /// typically indicates that this SDK version is out of date. Other, @@ -1506,6 +1583,7 @@ impl<'de> ::serde::de::Deserialize<'de> for FileRequestError { "no_permission" => FileRequestError::NoPermission, "email_unverified" => FileRequestError::EmailUnverified, "validation_error" => FileRequestError::ValidationError, + "no_write_permission" => FileRequestError::NoWritePermission, _ => FileRequestError::Other, }; crate::eat_json_fields(&mut map)?; @@ -1519,7 +1597,8 @@ impl<'de> ::serde::de::Deserialize<'de> for FileRequestError { "app_lacks_access", "no_permission", "email_unverified", - "validation_error"]; + "validation_error", + "no_write_permission"]; deserializer.deserialize_struct("FileRequestError", VARIANTS, EnumVisitor) } } @@ -1571,6 +1650,12 @@ impl ::serde::ser::Serialize for FileRequestError { s.serialize_field(".tag", "validation_error")?; s.end() } + FileRequestError::NoWritePermission => { + // unit + let mut s = serializer.serialize_struct("FileRequestError", 1)?; + s.serialize_field(".tag", "no_write_permission")?; + s.end() + } FileRequestError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) } } @@ -1588,6 +1673,7 @@ impl ::std::fmt::Display for FileRequestError { FileRequestError::AppLacksAccess => f.write_str("This file request is not accessible to this app. Apps with the app folder permission can only access file requests in their app folder."), FileRequestError::NoPermission => f.write_str("This user doesn't have permission to access or modify this file request."), FileRequestError::ValidationError => f.write_str("There was an error validating the request. For example, the title was invalid, or there were disallowed characters in the destination path."), + FileRequestError::NoWritePermission => f.write_str("This user doesn't have permission to edit files in a destination folder"), _ => write!(f, "{:?}", *self), } } @@ -1784,6 +1870,8 @@ pub enum GetFileRequestError { /// There was an error validating the request. For example, the title was invalid, or there were /// disallowed characters in the destination path. ValidationError, + /// This user doesn't have permission to edit files in a destination folder + NoWritePermission, /// Catch-all used for unrecognized values returned from the server. Encountering this value /// typically indicates that this SDK version is out of date. Other, @@ -1812,6 +1900,7 @@ impl<'de> ::serde::de::Deserialize<'de> for GetFileRequestError { "no_permission" => GetFileRequestError::NoPermission, "email_unverified" => GetFileRequestError::EmailUnverified, "validation_error" => GetFileRequestError::ValidationError, + "no_write_permission" => GetFileRequestError::NoWritePermission, _ => GetFileRequestError::Other, }; crate::eat_json_fields(&mut map)?; @@ -1825,7 +1914,8 @@ impl<'de> ::serde::de::Deserialize<'de> for GetFileRequestError { "app_lacks_access", "no_permission", "email_unverified", - "validation_error"]; + "validation_error", + "no_write_permission"]; deserializer.deserialize_struct("GetFileRequestError", VARIANTS, EnumVisitor) } } @@ -1877,6 +1967,12 @@ impl ::serde::ser::Serialize for GetFileRequestError { s.serialize_field(".tag", "validation_error")?; s.end() } + GetFileRequestError::NoWritePermission => { + // unit + let mut s = serializer.serialize_struct("GetFileRequestError", 1)?; + s.serialize_field(".tag", "no_write_permission")?; + s.end() + } GetFileRequestError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) } } @@ -1894,6 +1990,7 @@ impl ::std::fmt::Display for GetFileRequestError { GetFileRequestError::AppLacksAccess => f.write_str("This file request is not accessible to this app. Apps with the app folder permission can only access file requests in their app folder."), GetFileRequestError::NoPermission => f.write_str("This user doesn't have permission to access or modify this file request."), GetFileRequestError::ValidationError => f.write_str("There was an error validating the request. For example, the title was invalid, or there were disallowed characters in the destination path."), + GetFileRequestError::NoWritePermission => f.write_str("This user doesn't have permission to edit files in a destination folder"), _ => write!(f, "{:?}", *self), } } @@ -1911,6 +2008,7 @@ impl From for GetFileRequestError { FileRequestError::NoPermission => GetFileRequestError::NoPermission, FileRequestError::EmailUnverified => GetFileRequestError::EmailUnverified, FileRequestError::ValidationError => GetFileRequestError::ValidationError, + FileRequestError::NoWritePermission => GetFileRequestError::NoWritePermission, } } } @@ -2850,6 +2948,8 @@ pub enum UpdateFileRequestError { /// There was an error validating the request. For example, the title was invalid, or there were /// disallowed characters in the destination path. ValidationError, + /// This user doesn't have permission to edit files in a destination folder + NoWritePermission, /// Catch-all used for unrecognized values returned from the server. Encountering this value /// typically indicates that this SDK version is out of date. Other, @@ -2878,6 +2978,7 @@ impl<'de> ::serde::de::Deserialize<'de> for UpdateFileRequestError { "no_permission" => UpdateFileRequestError::NoPermission, "email_unverified" => UpdateFileRequestError::EmailUnverified, "validation_error" => UpdateFileRequestError::ValidationError, + "no_write_permission" => UpdateFileRequestError::NoWritePermission, _ => UpdateFileRequestError::Other, }; crate::eat_json_fields(&mut map)?; @@ -2891,7 +2992,8 @@ impl<'de> ::serde::de::Deserialize<'de> for UpdateFileRequestError { "app_lacks_access", "no_permission", "email_unverified", - "validation_error"]; + "validation_error", + "no_write_permission"]; deserializer.deserialize_struct("UpdateFileRequestError", VARIANTS, EnumVisitor) } } @@ -2943,6 +3045,12 @@ impl ::serde::ser::Serialize for UpdateFileRequestError { s.serialize_field(".tag", "validation_error")?; s.end() } + UpdateFileRequestError::NoWritePermission => { + // unit + let mut s = serializer.serialize_struct("UpdateFileRequestError", 1)?; + s.serialize_field(".tag", "no_write_permission")?; + s.end() + } UpdateFileRequestError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) } } @@ -2960,6 +3068,7 @@ impl ::std::fmt::Display for UpdateFileRequestError { UpdateFileRequestError::AppLacksAccess => f.write_str("This file request is not accessible to this app. Apps with the app folder permission can only access file requests in their app folder."), UpdateFileRequestError::NoPermission => f.write_str("This user doesn't have permission to access or modify this file request."), UpdateFileRequestError::ValidationError => f.write_str("There was an error validating the request. For example, the title was invalid, or there were disallowed characters in the destination path."), + UpdateFileRequestError::NoWritePermission => f.write_str("This user doesn't have permission to edit files in a destination folder"), _ => write!(f, "{:?}", *self), } } @@ -2977,6 +3086,7 @@ impl From for UpdateFileRequestError { FileRequestError::NoPermission => UpdateFileRequestError::NoPermission, FileRequestError::EmailUnverified => UpdateFileRequestError::EmailUnverified, FileRequestError::ValidationError => UpdateFileRequestError::ValidationError, + FileRequestError::NoWritePermission => UpdateFileRequestError::NoWritePermission, } } } diff --git a/src/generated/types/files.rs b/src/generated/types/files.rs index fc432750..16700f6f 100644 --- a/src/generated/types/files.rs +++ b/src/generated/types/files.rs @@ -241,7 +241,7 @@ pub struct AlphaGetMetadataArg { /// If true, [`DeletedMetadata`] will be returned for deleted file or folder, otherwise /// [`LookupError::NotFound`] will be returned. pub include_deleted: bool, - /// If true, the results will include a flag for each file indicating whether or not that file + /// If true, the results will include a flag for each file indicating whether or not that file /// has any explicit members. pub include_has_explicit_shared_members: bool, /// If set to a valid list of template IDs, [`FileMetadata::property_groups`](FileMetadata) is @@ -4797,11 +4797,11 @@ pub struct FileMetadata { /// Additional information if the file has custom properties with the property template /// specified. pub property_groups: Option>, - /// This flag will only be present if include_has_explicit_shared_members is true in + /// This flag will only be present if include_has_explicit_shared_members is true in /// [`list_folder()`](crate::files::list_folder) or - /// [`get_metadata()`](crate::files::get_metadata). If this flag is present, it will be true if - /// this file has any explicit shared members. This is different from sharing_info in that this - /// could be true in the case where a file has explicit members but is not contained within a + /// [`get_metadata()`](crate::files::get_metadata). If this flag is present, it will be true if + /// this file has any explicit shared members. This is different from sharing_info in that this + /// could be true in the case where a file has explicit members but is not contained within a /// shared folder. pub has_explicit_shared_members: Option, /// A hash of the file content. This field can be used to verify data integrity. For more @@ -5204,6 +5204,7 @@ impl From for Metadata { Metadata::File(subtype) } } +/// Result for File Operations #[derive(Debug, Clone, PartialEq, Eq, Default)] #[non_exhaustive] // structs may have more fields added in the future. pub struct FileOpsResult { @@ -6201,7 +6202,7 @@ pub struct GetMetadataArg { /// If true, [`DeletedMetadata`] will be returned for deleted file or folder, otherwise /// [`LookupError::NotFound`] will be returned. pub include_deleted: bool, - /// If true, the results will include a flag for each file indicating whether or not that file + /// If true, the results will include a flag for each file indicating whether or not that file /// has any explicit members. pub include_has_explicit_shared_members: bool, /// If set to a valid list of template IDs, [`FileMetadata::property_groups`](FileMetadata) is @@ -6935,8 +6936,8 @@ pub struct GetTemporaryUploadLinkArg { /// Contains the path and other optional modifiers for the future upload commit. Equivalent to /// the parameters provided to [`upload()`](crate::files::upload). pub commit_info: CommitInfo, - /// How long before this link expires, in seconds. Attempting to start an upload with this link - /// longer than this period of time after link creation will result in an error. + /// How long before this link expires, in seconds. Attempting to start an upload with this link + /// longer than this period of time after link creation will result in an error. pub duration: f64, } @@ -7849,7 +7850,11 @@ pub struct ListFolderArg { /// A unique identifier for the file. pub path: PathROrId, /// If true, the list folder operation will be applied recursively to all subfolders and the - /// response will contain contents of all subfolders. + /// response will contain contents of all subfolders. In some cases, setting + /// [`ListFolderArg::recursive`](ListFolderArg) to `true` may lead to performance issues or + /// errors, especially when traversing folder structures with a large number of items. A + /// workaround for such cases is to set [`ListFolderArg::recursive`](ListFolderArg) to `false` + /// and traverse subfolders one at a time. pub recursive: bool, /// If true, [`FileMetadata::media_info`](FileMetadata) is set for photo and video. This /// parameter will no longer have an effect starting December 2, 2019. @@ -7857,7 +7862,7 @@ pub struct ListFolderArg { /// If true, the results will include entries for files and folders that used to exist but were /// deleted. pub include_deleted: bool, - /// If true, the results will include a flag for each file indicating whether or not that file + /// If true, the results will include a flag for each file indicating whether or not that file /// has any explicit members. pub include_has_explicit_shared_members: bool, /// If true, the results will include entries under mounted folders which includes app folder, @@ -8918,6 +8923,10 @@ pub struct ListRevisionsArg { pub mode: ListRevisionsMode, /// The maximum number of revision entries returned. pub limit: u64, + /// If set, ListRevisions will only return revisions prior to before_rev. Can be set using the + /// last revision from a previous call to list_revisions to fetch the next page of revisions. + /// Only supported in path mode. + pub before_rev: Option, } impl ListRevisionsArg { @@ -8926,6 +8935,7 @@ impl ListRevisionsArg { path, mode: ListRevisionsMode::Path, limit: 10, + before_rev: None, } } @@ -8938,11 +8948,17 @@ impl ListRevisionsArg { self.limit = value; self } + + pub fn with_before_rev(mut self, value: Rev) -> Self { + self.before_rev = Some(value); + self + } } const LIST_REVISIONS_ARG_FIELDS: &[&str] = &["path", "mode", - "limit"]; + "limit", + "before_rev"]; impl ListRevisionsArg { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, @@ -8957,6 +8973,7 @@ impl ListRevisionsArg { let mut field_path = None; let mut field_mode = None; let mut field_limit = None; + let mut field_before_rev = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; @@ -8979,6 +8996,12 @@ impl ListRevisionsArg { } field_limit = Some(map.next_value()?); } + "before_rev" => { + if field_before_rev.is_some() { + return Err(::serde::de::Error::duplicate_field("before_rev")); + } + field_before_rev = Some(map.next_value()?); + } _ => { // unknown field allowed and ignored map.next_value::<::serde_json::Value>()?; @@ -8992,6 +9015,7 @@ impl ListRevisionsArg { path: field_path.ok_or_else(|| ::serde::de::Error::missing_field("path"))?, mode: field_mode.unwrap_or(ListRevisionsMode::Path), limit: field_limit.unwrap_or(10), + before_rev: field_before_rev.and_then(Option::flatten), }; Ok(Some(result)) } @@ -9008,6 +9032,9 @@ impl ListRevisionsArg { if self.limit != 10 { s.serialize_field("limit", &self.limit)?; } + if let Some(val) = &self.before_rev { + s.serialize_field("before_rev", val)?; + } Ok(()) } } @@ -9034,7 +9061,7 @@ impl ::serde::ser::Serialize for ListRevisionsArg { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("ListRevisionsArg", 3)?; + let mut s = serializer.serialize_struct("ListRevisionsArg", 4)?; self.internal_serialize::(&mut s)?; s.end() } @@ -9044,6 +9071,10 @@ impl ::serde::ser::Serialize for ListRevisionsArg { #[non_exhaustive] // variants may be added in the future pub enum ListRevisionsError { Path(LookupError), + /// The revision in before_rev is invalid. + InvalidBeforeRev, + /// The before_rev argument is only supported in path mode. + BeforeRevNotSupported, /// Catch-all used for unrecognized values returned from the server. Encountering this value /// typically indicates that this SDK version is out of date. Other, @@ -9072,6 +9103,8 @@ impl<'de> ::serde::de::Deserialize<'de> for ListRevisionsError { _ => return Err(de::Error::unknown_field(tag, VARIANTS)) } } + "invalid_before_rev" => ListRevisionsError::InvalidBeforeRev, + "before_rev_not_supported" => ListRevisionsError::BeforeRevNotSupported, _ => ListRevisionsError::Other, }; crate::eat_json_fields(&mut map)?; @@ -9079,6 +9112,8 @@ impl<'de> ::serde::de::Deserialize<'de> for ListRevisionsError { } } const VARIANTS: &[&str] = &["path", + "invalid_before_rev", + "before_rev_not_supported", "other"]; deserializer.deserialize_struct("ListRevisionsError", VARIANTS, EnumVisitor) } @@ -9096,6 +9131,18 @@ impl ::serde::ser::Serialize for ListRevisionsError { s.serialize_field("path", x)?; s.end() } + ListRevisionsError::InvalidBeforeRev => { + // unit + let mut s = serializer.serialize_struct("ListRevisionsError", 1)?; + s.serialize_field(".tag", "invalid_before_rev")?; + s.end() + } + ListRevisionsError::BeforeRevNotSupported => { + // unit + let mut s = serializer.serialize_struct("ListRevisionsError", 1)?; + s.serialize_field(".tag", "before_rev_not_supported")?; + s.end() + } ListRevisionsError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) } } @@ -9114,6 +9161,8 @@ impl ::std::fmt::Display for ListRevisionsError { fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { match self { ListRevisionsError::Path(inner) => write!(f, "ListRevisionsError: {}", inner), + ListRevisionsError::InvalidBeforeRev => f.write_str("The revision in before_rev is invalid."), + ListRevisionsError::BeforeRevNotSupported => f.write_str("The before_rev argument is only supported in path mode."), _ => write!(f, "{:?}", *self), } } @@ -9189,19 +9238,24 @@ impl ::serde::ser::Serialize for ListRevisionsMode { #[derive(Debug, Clone, PartialEq)] #[non_exhaustive] // structs may have more fields added in the future. pub struct ListRevisionsResult { - /// If the file identified by the latest revision in the response is either deleted or moved. + /// If the file identified by the latest revision in the response is either deleted or moved. If + /// before_rev is set, this refers to the latest revision of the file older than before_rev. pub is_deleted: bool, /// The revisions for the file. Only revisions that are not deleted will show up here. pub entries: Vec, + /// If true, then there are more entries available. Call list_revisions again with before_rev + /// equal to the revision of the last returned entry to retrieve the rest. + pub has_more: bool, /// The time of deletion if the file was deleted. pub server_deleted: Option, } impl ListRevisionsResult { - pub fn new(is_deleted: bool, entries: Vec) -> Self { + pub fn new(is_deleted: bool, entries: Vec, has_more: bool) -> Self { ListRevisionsResult { is_deleted, entries, + has_more, server_deleted: None, } } @@ -9214,6 +9268,7 @@ impl ListRevisionsResult { const LIST_REVISIONS_RESULT_FIELDS: &[&str] = &["is_deleted", "entries", + "has_more", "server_deleted"]; impl ListRevisionsResult { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( @@ -9228,6 +9283,7 @@ impl ListRevisionsResult { ) -> Result, V::Error> { let mut field_is_deleted = None; let mut field_entries = None; + let mut field_has_more = None; let mut field_server_deleted = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -9245,6 +9301,12 @@ impl ListRevisionsResult { } field_entries = Some(map.next_value()?); } + "has_more" => { + if field_has_more.is_some() { + return Err(::serde::de::Error::duplicate_field("has_more")); + } + field_has_more = Some(map.next_value()?); + } "server_deleted" => { if field_server_deleted.is_some() { return Err(::serde::de::Error::duplicate_field("server_deleted")); @@ -9263,6 +9325,7 @@ impl ListRevisionsResult { let result = ListRevisionsResult { is_deleted: field_is_deleted.ok_or_else(|| ::serde::de::Error::missing_field("is_deleted"))?, entries: field_entries.ok_or_else(|| ::serde::de::Error::missing_field("entries"))?, + has_more: field_has_more.ok_or_else(|| ::serde::de::Error::missing_field("has_more"))?, server_deleted: field_server_deleted.and_then(Option::flatten), }; Ok(Some(result)) @@ -9275,6 +9338,7 @@ impl ListRevisionsResult { use serde::ser::SerializeStruct; s.serialize_field("is_deleted", &self.is_deleted)?; s.serialize_field("entries", &self.entries)?; + s.serialize_field("has_more", &self.has_more)?; if let Some(val) = &self.server_deleted { s.serialize_field("server_deleted", val)?; } @@ -9304,7 +9368,7 @@ impl ::serde::ser::Serialize for ListRevisionsResult { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("ListRevisionsResult", 3)?; + let mut s = serializer.serialize_struct("ListRevisionsResult", 4)?; self.internal_serialize::(&mut s)?; s.end() } @@ -10160,7 +10224,8 @@ impl ::std::fmt::Display for LookupError { pub enum MediaInfo { /// Indicate the photo/video is still under processing and metadata is not available yet. Pending, - /// The metadata for the photo/video. + /// The metadata for the photo/video. Uses MediaMetadataAbstract to preserve photo/video + /// subtypes (e.g. VideoMetadata.duration). Metadata(MediaMetadata), } @@ -12225,7 +12290,7 @@ impl ::serde::ser::Serialize for PreviewArg { pub enum PreviewError { /// An error occurs when downloading metadata for the file. Path(LookupError), - /// This preview generation is still in progress and the file is not ready for preview yet. + /// This preview generation is still in progress and the file is not ready for preview yet. InProgress, /// The file extension is not supported preview generation. UnsupportedExtension, @@ -12320,7 +12385,7 @@ impl ::std::fmt::Display for PreviewError { fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { match self { PreviewError::Path(inner) => write!(f, "An error occurs when downloading metadata for the file: {}", inner), - PreviewError::InProgress => f.write_str("This preview generation is still in progress and the file is not ready for preview yet."), + PreviewError::InProgress => f.write_str("This preview generation is still in progress and the file is not ready for preview yet."), PreviewError::UnsupportedExtension => f.write_str("The file extension is not supported preview generation."), PreviewError::UnsupportedContent => f.write_str("The file content is not supported for preview generation."), } @@ -15238,8 +15303,8 @@ impl ::serde::ser::Serialize for SaveUrlArg { #[non_exhaustive] // variants may be added in the future pub enum SaveUrlError { Path(WriteError), - /// Failed downloading the given URL. The URL may be password-protected and the password - /// provided was incorrect, or the link may be disabled. + /// Failed downloading the given URL. The URL may be password-protected and the password + /// provided was incorrect, or the link may be disabled. DownloadFailed, /// The given URL is invalid. InvalidUrl, @@ -15339,7 +15404,7 @@ impl ::std::fmt::Display for SaveUrlError { fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { match self { SaveUrlError::Path(inner) => write!(f, "SaveUrlError: {}", inner), - SaveUrlError::DownloadFailed => f.write_str("Failed downloading the given URL. The URL may be password-protected and the password provided was incorrect, or the link may be disabled."), + SaveUrlError::DownloadFailed => f.write_str("Failed downloading the given URL. The URL may be password-protected and the password provided was incorrect, or the link may be disabled."), SaveUrlError::InvalidUrl => f.write_str("The given URL is invalid."), SaveUrlError::NotFound => f.write_str("The file where the URL is saved to no longer exists."), _ => write!(f, "{:?}", *self), @@ -16052,6 +16117,8 @@ pub enum SearchMatchTypeV2 { FilenameAndContent, /// This item was matched on image content. ImageContent, + /// This item was matched based on its metadata. + Metadata, /// Catch-all used for unrecognized values returned from the server. Encountering this value /// typically indicates that this SDK version is out of date. Other, @@ -16077,6 +16144,7 @@ impl<'de> ::serde::de::Deserialize<'de> for SearchMatchTypeV2 { "file_content" => SearchMatchTypeV2::FileContent, "filename_and_content" => SearchMatchTypeV2::FilenameAndContent, "image_content" => SearchMatchTypeV2::ImageContent, + "metadata" => SearchMatchTypeV2::Metadata, _ => SearchMatchTypeV2::Other, }; crate::eat_json_fields(&mut map)?; @@ -16087,6 +16155,7 @@ impl<'de> ::serde::de::Deserialize<'de> for SearchMatchTypeV2 { "file_content", "filename_and_content", "image_content", + "metadata", "other"]; deserializer.deserialize_struct("SearchMatchTypeV2", VARIANTS, EnumVisitor) } @@ -16121,6 +16190,12 @@ impl ::serde::ser::Serialize for SearchMatchTypeV2 { s.serialize_field(".tag", "image_content")?; s.end() } + SearchMatchTypeV2::Metadata => { + // unit + let mut s = serializer.serialize_struct("SearchMatchTypeV2", 1)?; + s.serialize_field(".tag", "metadata")?; + s.end() + } SearchMatchTypeV2::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) } } @@ -17231,7 +17306,7 @@ pub struct SharedLinkFileInfo { /// The path corresponding to a file in a shared link to a folder. Required for shared links to /// folders. pub path: Option, - /// Password for the shared link. Required for password-protected shared links to files unless + /// Password for the shared link. Required for password-protected shared links to files unless /// it can be read from a cookie. pub password: Option, } @@ -17974,13 +18049,20 @@ impl ::serde::ser::Serialize for Tag { pub struct ThumbnailArg { /// The path to the image file you want to thumbnail. pub path: ReadPath, - /// The format for the thumbnail image, jpeg (default) or png. For images that are photos, jpeg - /// should be preferred, while png is better for screenshots and digital arts. + /// The format for the thumbnail image, jpeg (default), png, or webp. For images that are + /// photos, jpeg should be preferred, while png is better for screenshots and digital arts, and + /// web for compression. pub format: ThumbnailFormat, /// The size for the thumbnail image. pub size: ThumbnailSize, /// How to resize and crop the image to achieve the desired size. pub mode: ThumbnailMode, + /// Quality of the thumbnail image. + pub quality: ThumbnailQuality, + /// Normally, [`FileMetadata::media_info`](FileMetadata) is set for photo and video. When this + /// flag is true, [`FileMetadata::media_info`](FileMetadata) is not populated. This improves + /// latency for use cases where `media_info` is not needed. + pub exclude_media_info: Option, } impl ThumbnailArg { @@ -17990,6 +18072,8 @@ impl ThumbnailArg { format: ThumbnailFormat::Jpeg, size: ThumbnailSize::W64h64, mode: ThumbnailMode::Strict, + quality: ThumbnailQuality::Quality80, + exclude_media_info: None, } } @@ -18007,12 +18091,24 @@ impl ThumbnailArg { self.mode = value; self } + + pub fn with_quality(mut self, value: ThumbnailQuality) -> Self { + self.quality = value; + self + } + + pub fn with_exclude_media_info(mut self, value: bool) -> Self { + self.exclude_media_info = Some(value); + self + } } const THUMBNAIL_ARG_FIELDS: &[&str] = &["path", "format", "size", - "mode"]; + "mode", + "quality", + "exclude_media_info"]; impl ThumbnailArg { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, @@ -18028,6 +18124,8 @@ impl ThumbnailArg { let mut field_format = None; let mut field_size = None; let mut field_mode = None; + let mut field_quality = None; + let mut field_exclude_media_info = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; @@ -18056,6 +18154,18 @@ impl ThumbnailArg { } field_mode = Some(map.next_value()?); } + "quality" => { + if field_quality.is_some() { + return Err(::serde::de::Error::duplicate_field("quality")); + } + field_quality = Some(map.next_value()?); + } + "exclude_media_info" => { + if field_exclude_media_info.is_some() { + return Err(::serde::de::Error::duplicate_field("exclude_media_info")); + } + field_exclude_media_info = Some(map.next_value()?); + } _ => { // unknown field allowed and ignored map.next_value::<::serde_json::Value>()?; @@ -18070,6 +18180,8 @@ impl ThumbnailArg { format: field_format.unwrap_or(ThumbnailFormat::Jpeg), size: field_size.unwrap_or(ThumbnailSize::W64h64), mode: field_mode.unwrap_or(ThumbnailMode::Strict), + quality: field_quality.unwrap_or(ThumbnailQuality::Quality80), + exclude_media_info: field_exclude_media_info.and_then(Option::flatten), }; Ok(Some(result)) } @@ -18089,6 +18201,12 @@ impl ThumbnailArg { if self.mode != ThumbnailMode::Strict { s.serialize_field("mode", &self.mode)?; } + if self.quality != ThumbnailQuality::Quality80 { + s.serialize_field("quality", &self.quality)?; + } + if let Some(val) = &self.exclude_media_info { + s.serialize_field("exclude_media_info", val)?; + } Ok(()) } } @@ -18115,7 +18233,7 @@ impl ::serde::ser::Serialize for ThumbnailArg { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("ThumbnailArg", 4)?; + let mut s = serializer.serialize_struct("ThumbnailArg", 6)?; self.internal_serialize::(&mut s)?; s.end() } @@ -18129,6 +18247,8 @@ pub enum ThumbnailError { UnsupportedExtension, /// The image cannot be converted to a thumbnail. UnsupportedImage, + /// Encrypted content cannot be converted to a thumbnail. + EncryptedContent, /// An error occurs during thumbnail conversion. ConversionError, } @@ -18158,6 +18278,7 @@ impl<'de> ::serde::de::Deserialize<'de> for ThumbnailError { } "unsupported_extension" => ThumbnailError::UnsupportedExtension, "unsupported_image" => ThumbnailError::UnsupportedImage, + "encrypted_content" => ThumbnailError::EncryptedContent, "conversion_error" => ThumbnailError::ConversionError, _ => return Err(de::Error::unknown_variant(tag, VARIANTS)) }; @@ -18168,6 +18289,7 @@ impl<'de> ::serde::de::Deserialize<'de> for ThumbnailError { const VARIANTS: &[&str] = &["path", "unsupported_extension", "unsupported_image", + "encrypted_content", "conversion_error"]; deserializer.deserialize_struct("ThumbnailError", VARIANTS, EnumVisitor) } @@ -18197,6 +18319,12 @@ impl ::serde::ser::Serialize for ThumbnailError { s.serialize_field(".tag", "unsupported_image")?; s.end() } + ThumbnailError::EncryptedContent => { + // unit + let mut s = serializer.serialize_struct("ThumbnailError", 1)?; + s.serialize_field(".tag", "encrypted_content")?; + s.end() + } ThumbnailError::ConversionError => { // unit let mut s = serializer.serialize_struct("ThumbnailError", 1)?; @@ -18222,6 +18350,7 @@ impl ::std::fmt::Display for ThumbnailError { ThumbnailError::Path(inner) => write!(f, "An error occurs when downloading metadata for the image: {}", inner), ThumbnailError::UnsupportedExtension => f.write_str("The file extension doesn't allow conversion to a thumbnail."), ThumbnailError::UnsupportedImage => f.write_str("The image cannot be converted to a thumbnail."), + ThumbnailError::EncryptedContent => f.write_str("Encrypted content cannot be converted to a thumbnail."), ThumbnailError::ConversionError => f.write_str("An error occurs during thumbnail conversion."), } } @@ -18231,6 +18360,7 @@ impl ::std::fmt::Display for ThumbnailError { pub enum ThumbnailFormat { Jpeg, Png, + Webp, } impl<'de> ::serde::de::Deserialize<'de> for ThumbnailFormat { @@ -18251,6 +18381,7 @@ impl<'de> ::serde::de::Deserialize<'de> for ThumbnailFormat { let value = match tag { "jpeg" => ThumbnailFormat::Jpeg, "png" => ThumbnailFormat::Png, + "webp" => ThumbnailFormat::Webp, _ => return Err(de::Error::unknown_variant(tag, VARIANTS)) }; crate::eat_json_fields(&mut map)?; @@ -18258,7 +18389,8 @@ impl<'de> ::serde::de::Deserialize<'de> for ThumbnailFormat { } } const VARIANTS: &[&str] = &["jpeg", - "png"]; + "png", + "webp"]; deserializer.deserialize_struct("ThumbnailFormat", VARIANTS, EnumVisitor) } } @@ -18280,6 +18412,12 @@ impl ::serde::ser::Serialize for ThumbnailFormat { s.serialize_field(".tag", "png")?; s.end() } + ThumbnailFormat::Webp => { + // unit + let mut s = serializer.serialize_struct("ThumbnailFormat", 1)?; + s.serialize_field(".tag", "webp")?; + s.end() + } } } } @@ -18292,6 +18430,8 @@ pub enum ThumbnailMode { Bestfit, /// Scale down the image to completely cover the given size or its transpose. FitoneBestfit, + /// Don't resize the image at all. + Original, } impl<'de> ::serde::de::Deserialize<'de> for ThumbnailMode { @@ -18313,6 +18453,7 @@ impl<'de> ::serde::de::Deserialize<'de> for ThumbnailMode { "strict" => ThumbnailMode::Strict, "bestfit" => ThumbnailMode::Bestfit, "fitone_bestfit" => ThumbnailMode::FitoneBestfit, + "original" => ThumbnailMode::Original, _ => return Err(de::Error::unknown_variant(tag, VARIANTS)) }; crate::eat_json_fields(&mut map)?; @@ -18321,7 +18462,8 @@ impl<'de> ::serde::de::Deserialize<'de> for ThumbnailMode { } const VARIANTS: &[&str] = &["strict", "bestfit", - "fitone_bestfit"]; + "fitone_bestfit", + "original"]; deserializer.deserialize_struct("ThumbnailMode", VARIANTS, EnumVisitor) } } @@ -18349,6 +18491,71 @@ impl ::serde::ser::Serialize for ThumbnailMode { s.serialize_field(".tag", "fitone_bestfit")?; s.end() } + ThumbnailMode::Original => { + // unit + let mut s = serializer.serialize_struct("ThumbnailMode", 1)?; + s.serialize_field(".tag", "original")?; + s.end() + } + } + } +} + +#[derive(Debug, Clone, PartialEq, Eq)] +pub enum ThumbnailQuality { + /// default thumbnail quality. + Quality80, + /// high thumbnail quality. + Quality90, +} + +impl<'de> ::serde::de::Deserialize<'de> for ThumbnailQuality { + fn deserialize>(deserializer: D) -> Result { + // union deserializer + use serde::de::{self, MapAccess, Visitor}; + struct EnumVisitor; + impl<'de> Visitor<'de> for EnumVisitor { + type Value = ThumbnailQuality; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a ThumbnailQuality structure") + } + fn visit_map>(self, mut map: V) -> Result { + let tag: &str = match map.next_key()? { + Some(".tag") => map.next_value()?, + _ => return Err(de::Error::missing_field(".tag")) + }; + let value = match tag { + "quality_80" => ThumbnailQuality::Quality80, + "quality_90" => ThumbnailQuality::Quality90, + _ => return Err(de::Error::unknown_variant(tag, VARIANTS)) + }; + crate::eat_json_fields(&mut map)?; + Ok(value) + } + } + const VARIANTS: &[&str] = &["quality_80", + "quality_90"]; + deserializer.deserialize_struct("ThumbnailQuality", VARIANTS, EnumVisitor) + } +} + +impl ::serde::ser::Serialize for ThumbnailQuality { + fn serialize(&self, serializer: S) -> Result { + // union serializer + use serde::ser::SerializeStruct; + match self { + ThumbnailQuality::Quality80 => { + // unit + let mut s = serializer.serialize_struct("ThumbnailQuality", 1)?; + s.serialize_field(".tag", "quality_80")?; + s.end() + } + ThumbnailQuality::Quality90 => { + // unit + let mut s = serializer.serialize_struct("ThumbnailQuality", 1)?; + s.serialize_field(".tag", "quality_90")?; + s.end() + } } } } @@ -18373,6 +18580,8 @@ pub enum ThumbnailSize { W1024h768, /// 2048 by 1536 px. W2048h1536, + /// 3200 by 2400 px. + W3200h2400, } impl<'de> ::serde::de::Deserialize<'de> for ThumbnailSize { @@ -18400,6 +18609,7 @@ impl<'de> ::serde::de::Deserialize<'de> for ThumbnailSize { "w960h640" => ThumbnailSize::W960h640, "w1024h768" => ThumbnailSize::W1024h768, "w2048h1536" => ThumbnailSize::W2048h1536, + "w3200h2400" => ThumbnailSize::W3200h2400, _ => return Err(de::Error::unknown_variant(tag, VARIANTS)) }; crate::eat_json_fields(&mut map)?; @@ -18414,7 +18624,8 @@ impl<'de> ::serde::de::Deserialize<'de> for ThumbnailSize { "w640h480", "w960h640", "w1024h768", - "w2048h1536"]; + "w2048h1536", + "w3200h2400"]; deserializer.deserialize_struct("ThumbnailSize", VARIANTS, EnumVisitor) } } @@ -18478,6 +18689,12 @@ impl ::serde::ser::Serialize for ThumbnailSize { s.serialize_field(".tag", "w2048h1536")?; s.end() } + ThumbnailSize::W3200h2400 => { + // unit + let mut s = serializer.serialize_struct("ThumbnailSize", 1)?; + s.serialize_field(".tag", "w3200h2400")?; + s.end() + } } } } @@ -18488,13 +18705,20 @@ pub struct ThumbnailV2Arg { /// Information specifying which file to preview. This could be a path to a file, a shared link /// pointing to a file, or a shared link pointing to a folder, with a relative path. pub resource: PathOrLink, - /// The format for the thumbnail image, jpeg (default) or png. For images that are photos, jpeg - /// should be preferred, while png is better for screenshots and digital arts. + /// The format for the thumbnail image, jpeg (default), png, or webp. For images that are + /// photos, jpeg should be preferred, while png is better for screenshots and digital arts, and + /// web for compression. pub format: ThumbnailFormat, /// The size for the thumbnail image. pub size: ThumbnailSize, /// How to resize and crop the image to achieve the desired size. pub mode: ThumbnailMode, + /// Quality of the thumbnail image. + pub quality: ThumbnailQuality, + /// Normally, [`FileMetadata::media_info`](FileMetadata) is set for photo and video. When this + /// flag is true, [`FileMetadata::media_info`](FileMetadata) is not populated. This improves + /// latency for use cases where `media_info` is not needed. + pub exclude_media_info: Option, } impl ThumbnailV2Arg { @@ -18504,6 +18728,8 @@ impl ThumbnailV2Arg { format: ThumbnailFormat::Jpeg, size: ThumbnailSize::W64h64, mode: ThumbnailMode::Strict, + quality: ThumbnailQuality::Quality80, + exclude_media_info: None, } } @@ -18521,12 +18747,24 @@ impl ThumbnailV2Arg { self.mode = value; self } + + pub fn with_quality(mut self, value: ThumbnailQuality) -> Self { + self.quality = value; + self + } + + pub fn with_exclude_media_info(mut self, value: bool) -> Self { + self.exclude_media_info = Some(value); + self + } } const THUMBNAIL_V2_ARG_FIELDS: &[&str] = &["resource", "format", "size", - "mode"]; + "mode", + "quality", + "exclude_media_info"]; impl ThumbnailV2Arg { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, @@ -18542,6 +18780,8 @@ impl ThumbnailV2Arg { let mut field_format = None; let mut field_size = None; let mut field_mode = None; + let mut field_quality = None; + let mut field_exclude_media_info = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; @@ -18570,6 +18810,18 @@ impl ThumbnailV2Arg { } field_mode = Some(map.next_value()?); } + "quality" => { + if field_quality.is_some() { + return Err(::serde::de::Error::duplicate_field("quality")); + } + field_quality = Some(map.next_value()?); + } + "exclude_media_info" => { + if field_exclude_media_info.is_some() { + return Err(::serde::de::Error::duplicate_field("exclude_media_info")); + } + field_exclude_media_info = Some(map.next_value()?); + } _ => { // unknown field allowed and ignored map.next_value::<::serde_json::Value>()?; @@ -18584,6 +18836,8 @@ impl ThumbnailV2Arg { format: field_format.unwrap_or(ThumbnailFormat::Jpeg), size: field_size.unwrap_or(ThumbnailSize::W64h64), mode: field_mode.unwrap_or(ThumbnailMode::Strict), + quality: field_quality.unwrap_or(ThumbnailQuality::Quality80), + exclude_media_info: field_exclude_media_info.and_then(Option::flatten), }; Ok(Some(result)) } @@ -18603,6 +18857,12 @@ impl ThumbnailV2Arg { if self.mode != ThumbnailMode::Strict { s.serialize_field("mode", &self.mode)?; } + if self.quality != ThumbnailQuality::Quality80 { + s.serialize_field("quality", &self.quality)?; + } + if let Some(val) = &self.exclude_media_info { + s.serialize_field("exclude_media_info", val)?; + } Ok(()) } } @@ -18629,7 +18889,7 @@ impl ::serde::ser::Serialize for ThumbnailV2Arg { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("ThumbnailV2Arg", 4)?; + let mut s = serializer.serialize_struct("ThumbnailV2Arg", 6)?; self.internal_serialize::(&mut s)?; s.end() } @@ -18644,6 +18904,8 @@ pub enum ThumbnailV2Error { UnsupportedExtension, /// The image cannot be converted to a thumbnail. UnsupportedImage, + /// Encrypted content cannot be converted to a thumbnail. + EncryptedContent, /// An error occurred during thumbnail conversion. ConversionError, /// Access to this shared link is forbidden. @@ -18680,6 +18942,7 @@ impl<'de> ::serde::de::Deserialize<'de> for ThumbnailV2Error { } "unsupported_extension" => ThumbnailV2Error::UnsupportedExtension, "unsupported_image" => ThumbnailV2Error::UnsupportedImage, + "encrypted_content" => ThumbnailV2Error::EncryptedContent, "conversion_error" => ThumbnailV2Error::ConversionError, "access_denied" => ThumbnailV2Error::AccessDenied, "not_found" => ThumbnailV2Error::NotFound, @@ -18692,6 +18955,7 @@ impl<'de> ::serde::de::Deserialize<'de> for ThumbnailV2Error { const VARIANTS: &[&str] = &["path", "unsupported_extension", "unsupported_image", + "encrypted_content", "conversion_error", "access_denied", "not_found", @@ -18724,6 +18988,12 @@ impl ::serde::ser::Serialize for ThumbnailV2Error { s.serialize_field(".tag", "unsupported_image")?; s.end() } + ThumbnailV2Error::EncryptedContent => { + // unit + let mut s = serializer.serialize_struct("ThumbnailV2Error", 1)?; + s.serialize_field(".tag", "encrypted_content")?; + s.end() + } ThumbnailV2Error::ConversionError => { // unit let mut s = serializer.serialize_struct("ThumbnailV2Error", 1)?; @@ -18762,6 +19032,7 @@ impl ::std::fmt::Display for ThumbnailV2Error { ThumbnailV2Error::Path(inner) => write!(f, "An error occurred when downloading metadata for the image: {}", inner), ThumbnailV2Error::UnsupportedExtension => f.write_str("The file extension doesn't allow conversion to a thumbnail."), ThumbnailV2Error::UnsupportedImage => f.write_str("The image cannot be converted to a thumbnail."), + ThumbnailV2Error::EncryptedContent => f.write_str("Encrypted content cannot be converted to a thumbnail."), ThumbnailV2Error::ConversionError => f.write_str("An error occurred during thumbnail conversion."), ThumbnailV2Error::AccessDenied => f.write_str("Access to this shared link is forbidden."), ThumbnailV2Error::NotFound => f.write_str("The shared link does not exist."), @@ -19219,11 +19490,13 @@ pub enum UploadError { Path(UploadWriteFailed), /// The supplied property group is invalid. The file has uploaded without property groups. PropertiesError(crate::types::file_properties::InvalidPropertyGroupError), - /// The request payload must be at most 150 MB. + /// The request payload must be at most 150 MiB. PayloadTooLarge, /// The content received by the Dropbox server in this call does not match the provided content /// hash. ContentHashMismatch, + /// The file is required to be encrypted, which is not supported in our public API. + EncryptionNotSupported, /// Catch-all used for unrecognized values returned from the server. Encountering this value /// typically indicates that this SDK version is out of date. Other, @@ -19255,6 +19528,7 @@ impl<'de> ::serde::de::Deserialize<'de> for UploadError { } "payload_too_large" => UploadError::PayloadTooLarge, "content_hash_mismatch" => UploadError::ContentHashMismatch, + "encryption_not_supported" => UploadError::EncryptionNotSupported, _ => UploadError::Other, }; crate::eat_json_fields(&mut map)?; @@ -19265,6 +19539,7 @@ impl<'de> ::serde::de::Deserialize<'de> for UploadError { "properties_error", "payload_too_large", "content_hash_mismatch", + "encryption_not_supported", "other"]; deserializer.deserialize_struct("UploadError", VARIANTS, EnumVisitor) } @@ -19301,6 +19576,12 @@ impl ::serde::ser::Serialize for UploadError { s.serialize_field(".tag", "content_hash_mismatch")?; s.end() } + UploadError::EncryptionNotSupported => { + // unit + let mut s = serializer.serialize_struct("UploadError", 1)?; + s.serialize_field(".tag", "encryption_not_supported")?; + s.end() + } UploadError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) } } @@ -19320,8 +19601,9 @@ impl ::std::fmt::Display for UploadError { match self { UploadError::Path(inner) => write!(f, "Unable to save the uploaded contents to a file: {:?}", inner), UploadError::PropertiesError(inner) => write!(f, "The supplied property group is invalid. The file has uploaded without property groups: {}", inner), - UploadError::PayloadTooLarge => f.write_str("The request payload must be at most 150 MB."), + UploadError::PayloadTooLarge => f.write_str("The request payload must be at most 150 MiB."), UploadError::ContentHashMismatch => f.write_str("The content received by the Dropbox server in this call does not match the provided content hash."), + UploadError::EncryptionNotSupported => f.write_str("The file is required to be encrypted, which is not supported in our public API."), _ => write!(f, "{:?}", *self), } } @@ -19463,110 +19745,717 @@ impl ::serde::ser::Serialize for UploadSessionAppendArg { } #[derive(Debug, Clone, PartialEq, Eq)] -#[non_exhaustive] // variants may be added in the future -pub enum UploadSessionAppendError { - /// The upload session ID was not found or has expired. Upload sessions are valid for 7 days. - NotFound, - /// The specified offset was incorrect. See the value for the correct offset. This error may - /// occur when a previous request was received and processed successfully but the client did not - /// receive the response, e.g. due to a network error. - IncorrectOffset(UploadSessionOffsetError), - /// You are attempting to append data to an upload session that has already been closed (i.e. - /// committed). - Closed, - /// The session must be closed before calling upload_session/finish_batch. - NotClosed, - /// You can not append to the upload session because the size of a file should not reach the max - /// file size limit (i.e. 350GB). - TooLarge, - /// For concurrent upload sessions, offset needs to be multiple of 4194304 bytes. - ConcurrentSessionInvalidOffset, - /// For concurrent upload sessions, only chunks with size multiple of 4194304 bytes can be - /// uploaded. - ConcurrentSessionInvalidDataSize, - /// The request payload must be at most 150 MB. - PayloadTooLarge, - /// The content received by the Dropbox server in this call does not match the provided content - /// hash. - ContentHashMismatch, - /// Catch-all used for unrecognized values returned from the server. Encountering this value - /// typically indicates that this SDK version is out of date. - Other, +#[non_exhaustive] // structs may have more fields added in the future. +pub struct UploadSessionAppendBatchArg { + /// Append information for each file in the batch. + pub entries: Vec, + /// A hash of the entire request body which is all the concatenated pieces of file content that + /// were uploaded in this call. If provided and the uploaded content does not match this hash, + /// an error will be returned. For more information see our [Content + /// hash](https://www.dropbox.com/developers/reference/content-hash) page. + pub content_hash: Option, } -impl<'de> ::serde::de::Deserialize<'de> for UploadSessionAppendError { +impl UploadSessionAppendBatchArg { + pub fn new(entries: Vec) -> Self { + UploadSessionAppendBatchArg { + entries, + content_hash: None, + } + } + + pub fn with_content_hash(mut self, value: Sha256HexHash) -> Self { + self.content_hash = Some(value); + self + } +} + +const UPLOAD_SESSION_APPEND_BATCH_ARG_FIELDS: &[&str] = &["entries", + "content_hash"]; +impl UploadSessionAppendBatchArg { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_entries = None; + let mut field_content_hash = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "entries" => { + if field_entries.is_some() { + return Err(::serde::de::Error::duplicate_field("entries")); + } + field_entries = Some(map.next_value()?); + } + "content_hash" => { + if field_content_hash.is_some() { + return Err(::serde::de::Error::duplicate_field("content_hash")); + } + field_content_hash = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } + } + } + if optional && nothing { + return Ok(None); + } + let result = UploadSessionAppendBatchArg { + entries: field_entries.ok_or_else(|| ::serde::de::Error::missing_field("entries"))?, + content_hash: field_content_hash.and_then(Option::flatten), + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("entries", &self.entries)?; + if let Some(val) = &self.content_hash { + s.serialize_field("content_hash", val)?; + } + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for UploadSessionAppendBatchArg { fn deserialize>(deserializer: D) -> Result { - // union deserializer - use serde::de::{self, MapAccess, Visitor}; - struct EnumVisitor; - impl<'de> Visitor<'de> for EnumVisitor { - type Value = UploadSessionAppendError; + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = UploadSessionAppendBatchArg; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a UploadSessionAppendError structure") + f.write_str("a UploadSessionAppendBatchArg struct") } - fn visit_map>(self, mut map: V) -> Result { - let tag: &str = match map.next_key()? { - Some(".tag") => map.next_value()?, - _ => return Err(de::Error::missing_field(".tag")) - }; - let value = match tag { - "not_found" => UploadSessionAppendError::NotFound, - "incorrect_offset" => UploadSessionAppendError::IncorrectOffset(UploadSessionOffsetError::internal_deserialize(&mut map)?), - "closed" => UploadSessionAppendError::Closed, - "not_closed" => UploadSessionAppendError::NotClosed, - "too_large" => UploadSessionAppendError::TooLarge, - "concurrent_session_invalid_offset" => UploadSessionAppendError::ConcurrentSessionInvalidOffset, - "concurrent_session_invalid_data_size" => UploadSessionAppendError::ConcurrentSessionInvalidDataSize, - "payload_too_large" => UploadSessionAppendError::PayloadTooLarge, - "content_hash_mismatch" => UploadSessionAppendError::ContentHashMismatch, - _ => UploadSessionAppendError::Other, - }; - crate::eat_json_fields(&mut map)?; - Ok(value) + fn visit_map>(self, map: V) -> Result { + UploadSessionAppendBatchArg::internal_deserialize(map) } } - const VARIANTS: &[&str] = &["not_found", - "incorrect_offset", - "closed", - "not_closed", - "too_large", - "concurrent_session_invalid_offset", - "concurrent_session_invalid_data_size", - "payload_too_large", - "other", - "content_hash_mismatch"]; - deserializer.deserialize_struct("UploadSessionAppendError", VARIANTS, EnumVisitor) + deserializer.deserialize_struct("UploadSessionAppendBatchArg", UPLOAD_SESSION_APPEND_BATCH_ARG_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for UploadSessionAppendError { +impl ::serde::ser::Serialize for UploadSessionAppendBatchArg { fn serialize(&self, serializer: S) -> Result { - // union serializer + // struct serializer use serde::ser::SerializeStruct; - match self { - UploadSessionAppendError::NotFound => { - // unit - let mut s = serializer.serialize_struct("UploadSessionAppendError", 1)?; - s.serialize_field(".tag", "not_found")?; - s.end() - } - UploadSessionAppendError::IncorrectOffset(x) => { + let mut s = serializer.serialize_struct("UploadSessionAppendBatchArg", 2)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct UploadSessionAppendBatchArgEntry { + /// Contains the upload session ID and the offset. + pub cursor: UploadSessionCursor, + /// Length in bytes of the data that should be appended for this session. Used to split the + /// batched upload data for multiple upload sessions. + pub length: u64, + /// If true, the current session will be closed, at which point you won't be able to call + /// [`upload_session_append_batch()`](crate::files::upload_session_append_batch) anymore with + /// the current session. + pub close: bool, +} + +impl UploadSessionAppendBatchArgEntry { + pub fn new(cursor: UploadSessionCursor, length: u64) -> Self { + UploadSessionAppendBatchArgEntry { + cursor, + length, + close: false, + } + } + + pub fn with_close(mut self, value: bool) -> Self { + self.close = value; + self + } +} + +const UPLOAD_SESSION_APPEND_BATCH_ARG_ENTRY_FIELDS: &[&str] = &["cursor", + "length", + "close"]; +impl UploadSessionAppendBatchArgEntry { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_cursor = None; + let mut field_length = None; + let mut field_close = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "cursor" => { + if field_cursor.is_some() { + return Err(::serde::de::Error::duplicate_field("cursor")); + } + field_cursor = Some(map.next_value()?); + } + "length" => { + if field_length.is_some() { + return Err(::serde::de::Error::duplicate_field("length")); + } + field_length = Some(map.next_value()?); + } + "close" => { + if field_close.is_some() { + return Err(::serde::de::Error::duplicate_field("close")); + } + field_close = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } + } + } + if optional && nothing { + return Ok(None); + } + let result = UploadSessionAppendBatchArgEntry { + cursor: field_cursor.ok_or_else(|| ::serde::de::Error::missing_field("cursor"))?, + length: field_length.ok_or_else(|| ::serde::de::Error::missing_field("length"))?, + close: field_close.unwrap_or(false), + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("cursor", &self.cursor)?; + s.serialize_field("length", &self.length)?; + if self.close { + s.serialize_field("close", &self.close)?; + } + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for UploadSessionAppendBatchArgEntry { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = UploadSessionAppendBatchArgEntry; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a UploadSessionAppendBatchArgEntry struct") + } + fn visit_map>(self, map: V) -> Result { + UploadSessionAppendBatchArgEntry::internal_deserialize(map) + } + } + deserializer.deserialize_struct("UploadSessionAppendBatchArgEntry", UPLOAD_SESSION_APPEND_BATCH_ARG_ENTRY_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for UploadSessionAppendBatchArgEntry { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("UploadSessionAppendBatchArgEntry", 3)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // variants may be added in the future +pub enum UploadSessionAppendBatchEntryError { + /// The upload session ID was not found or has expired. Upload sessions are valid for 7 days. + NotFound, + /// The specified offset was incorrect. See the value for the correct offset. This error may + /// occur when a previous request was received and processed successfully but the client did not + /// receive the response, e.g. due to a network error. + IncorrectOffset(UploadSessionOffsetError), + /// You are attempting to append data to an upload session that has already been closed (i.e. + /// committed). + Closed, + /// You can not append to the upload session because the size of a file should not exceed the + /// max file size limit (i.e. 2^41 - 2^22 or 2,199,019,061,248 bytes). + TooLarge, + /// For concurrent upload sessions, offset needs to be multiple of 2^22 (4,194,304) bytes. + ConcurrentSessionInvalidOffset, + /// For concurrent upload sessions, only chunks with size multiple of 2^22 (4,194,304) bytes can + /// be uploaded. + ConcurrentSessionInvalidDataSize, + /// Catch-all used for unrecognized values returned from the server. Encountering this value + /// typically indicates that this SDK version is out of date. + Other, +} + +impl<'de> ::serde::de::Deserialize<'de> for UploadSessionAppendBatchEntryError { + fn deserialize>(deserializer: D) -> Result { + // union deserializer + use serde::de::{self, MapAccess, Visitor}; + struct EnumVisitor; + impl<'de> Visitor<'de> for EnumVisitor { + type Value = UploadSessionAppendBatchEntryError; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a UploadSessionAppendBatchEntryError structure") + } + fn visit_map>(self, mut map: V) -> Result { + let tag: &str = match map.next_key()? { + Some(".tag") => map.next_value()?, + _ => return Err(de::Error::missing_field(".tag")) + }; + let value = match tag { + "not_found" => UploadSessionAppendBatchEntryError::NotFound, + "incorrect_offset" => UploadSessionAppendBatchEntryError::IncorrectOffset(UploadSessionOffsetError::internal_deserialize(&mut map)?), + "closed" => UploadSessionAppendBatchEntryError::Closed, + "too_large" => UploadSessionAppendBatchEntryError::TooLarge, + "concurrent_session_invalid_offset" => UploadSessionAppendBatchEntryError::ConcurrentSessionInvalidOffset, + "concurrent_session_invalid_data_size" => UploadSessionAppendBatchEntryError::ConcurrentSessionInvalidDataSize, + _ => UploadSessionAppendBatchEntryError::Other, + }; + crate::eat_json_fields(&mut map)?; + Ok(value) + } + } + const VARIANTS: &[&str] = &["not_found", + "incorrect_offset", + "closed", + "too_large", + "concurrent_session_invalid_offset", + "concurrent_session_invalid_data_size", + "other"]; + deserializer.deserialize_struct("UploadSessionAppendBatchEntryError", VARIANTS, EnumVisitor) + } +} + +impl ::serde::ser::Serialize for UploadSessionAppendBatchEntryError { + fn serialize(&self, serializer: S) -> Result { + // union serializer + use serde::ser::SerializeStruct; + match self { + UploadSessionAppendBatchEntryError::NotFound => { + // unit + let mut s = serializer.serialize_struct("UploadSessionAppendBatchEntryError", 1)?; + s.serialize_field(".tag", "not_found")?; + s.end() + } + UploadSessionAppendBatchEntryError::IncorrectOffset(x) => { // struct - let mut s = serializer.serialize_struct("UploadSessionAppendError", 2)?; + let mut s = serializer.serialize_struct("UploadSessionAppendBatchEntryError", 2)?; s.serialize_field(".tag", "incorrect_offset")?; x.internal_serialize::(&mut s)?; s.end() } - UploadSessionAppendError::Closed => { + UploadSessionAppendBatchEntryError::Closed => { // unit - let mut s = serializer.serialize_struct("UploadSessionAppendError", 1)?; + let mut s = serializer.serialize_struct("UploadSessionAppendBatchEntryError", 1)?; s.serialize_field(".tag", "closed")?; s.end() } - UploadSessionAppendError::NotClosed => { + UploadSessionAppendBatchEntryError::TooLarge => { + // unit + let mut s = serializer.serialize_struct("UploadSessionAppendBatchEntryError", 1)?; + s.serialize_field(".tag", "too_large")?; + s.end() + } + UploadSessionAppendBatchEntryError::ConcurrentSessionInvalidOffset => { + // unit + let mut s = serializer.serialize_struct("UploadSessionAppendBatchEntryError", 1)?; + s.serialize_field(".tag", "concurrent_session_invalid_offset")?; + s.end() + } + UploadSessionAppendBatchEntryError::ConcurrentSessionInvalidDataSize => { + // unit + let mut s = serializer.serialize_struct("UploadSessionAppendBatchEntryError", 1)?; + s.serialize_field(".tag", "concurrent_session_invalid_data_size")?; + s.end() + } + UploadSessionAppendBatchEntryError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) + } + } +} + +impl ::std::error::Error for UploadSessionAppendBatchEntryError { +} + +impl ::std::fmt::Display for UploadSessionAppendBatchEntryError { + fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + match self { + UploadSessionAppendBatchEntryError::NotFound => f.write_str("The upload session ID was not found or has expired. Upload sessions are valid for 7 days."), + UploadSessionAppendBatchEntryError::IncorrectOffset(inner) => write!(f, "The specified offset was incorrect. See the value for the correct offset. This error may occur when a previous request was received and processed successfully but the client did not receive the response, e.g. due to a network error: {:?}", inner), + UploadSessionAppendBatchEntryError::Closed => f.write_str("You are attempting to append data to an upload session that has already been closed (i.e. committed)."), + UploadSessionAppendBatchEntryError::TooLarge => f.write_str("You can not append to the upload session because the size of a file should not exceed the max file size limit (i.e. 2^41 - 2^22 or 2,199,019,061,248 bytes)."), + UploadSessionAppendBatchEntryError::ConcurrentSessionInvalidOffset => f.write_str("For concurrent upload sessions, offset needs to be multiple of 2^22 (4,194,304) bytes."), + UploadSessionAppendBatchEntryError::ConcurrentSessionInvalidDataSize => f.write_str("For concurrent upload sessions, only chunks with size multiple of 2^22 (4,194,304) bytes can be uploaded."), + _ => write!(f, "{:?}", *self), + } + } +} + +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // variants may be added in the future +pub enum UploadSessionAppendBatchError { + /// The request payload must be at most 150 MiB. + PayloadTooLarge, + /// The content received by the Dropbox server in this call does not match the provided content + /// hash. + ContentHashMismatch, + /// The total length of the content received by the Dropbox server in this call does not match + /// the total of the provided lengths in the batch arguments. + LengthMismatch, + /// Catch-all used for unrecognized values returned from the server. Encountering this value + /// typically indicates that this SDK version is out of date. + Other, +} + +impl<'de> ::serde::de::Deserialize<'de> for UploadSessionAppendBatchError { + fn deserialize>(deserializer: D) -> Result { + // union deserializer + use serde::de::{self, MapAccess, Visitor}; + struct EnumVisitor; + impl<'de> Visitor<'de> for EnumVisitor { + type Value = UploadSessionAppendBatchError; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a UploadSessionAppendBatchError structure") + } + fn visit_map>(self, mut map: V) -> Result { + let tag: &str = match map.next_key()? { + Some(".tag") => map.next_value()?, + _ => return Err(de::Error::missing_field(".tag")) + }; + let value = match tag { + "payload_too_large" => UploadSessionAppendBatchError::PayloadTooLarge, + "content_hash_mismatch" => UploadSessionAppendBatchError::ContentHashMismatch, + "length_mismatch" => UploadSessionAppendBatchError::LengthMismatch, + _ => UploadSessionAppendBatchError::Other, + }; + crate::eat_json_fields(&mut map)?; + Ok(value) + } + } + const VARIANTS: &[&str] = &["payload_too_large", + "content_hash_mismatch", + "length_mismatch", + "other"]; + deserializer.deserialize_struct("UploadSessionAppendBatchError", VARIANTS, EnumVisitor) + } +} + +impl ::serde::ser::Serialize for UploadSessionAppendBatchError { + fn serialize(&self, serializer: S) -> Result { + // union serializer + use serde::ser::SerializeStruct; + match self { + UploadSessionAppendBatchError::PayloadTooLarge => { + // unit + let mut s = serializer.serialize_struct("UploadSessionAppendBatchError", 1)?; + s.serialize_field(".tag", "payload_too_large")?; + s.end() + } + UploadSessionAppendBatchError::ContentHashMismatch => { + // unit + let mut s = serializer.serialize_struct("UploadSessionAppendBatchError", 1)?; + s.serialize_field(".tag", "content_hash_mismatch")?; + s.end() + } + UploadSessionAppendBatchError::LengthMismatch => { + // unit + let mut s = serializer.serialize_struct("UploadSessionAppendBatchError", 1)?; + s.serialize_field(".tag", "length_mismatch")?; + s.end() + } + UploadSessionAppendBatchError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) + } + } +} + +impl ::std::error::Error for UploadSessionAppendBatchError { +} + +impl ::std::fmt::Display for UploadSessionAppendBatchError { + fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + match self { + UploadSessionAppendBatchError::PayloadTooLarge => f.write_str("The request payload must be at most 150 MiB."), + UploadSessionAppendBatchError::ContentHashMismatch => f.write_str("The content received by the Dropbox server in this call does not match the provided content hash."), + UploadSessionAppendBatchError::LengthMismatch => f.write_str("The total length of the content received by the Dropbox server in this call does not match the total of the provided lengths in the batch arguments."), + _ => write!(f, "{:?}", *self), + } + } +} + +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct UploadSessionAppendBatchResult { + /// Each entry in [`UploadSessionAppendBatchArg::entries`](UploadSessionAppendBatchArg) will + /// appear at the same position inside + /// [`UploadSessionAppendBatchResult::entries`](UploadSessionAppendBatchResult). + pub entries: Vec, +} + +impl UploadSessionAppendBatchResult { + pub fn new(entries: Vec) -> Self { + UploadSessionAppendBatchResult { + entries, + } + } +} + +const UPLOAD_SESSION_APPEND_BATCH_RESULT_FIELDS: &[&str] = &["entries"]; +impl UploadSessionAppendBatchResult { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_entries = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "entries" => { + if field_entries.is_some() { + return Err(::serde::de::Error::duplicate_field("entries")); + } + field_entries = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } + } + } + if optional && nothing { + return Ok(None); + } + let result = UploadSessionAppendBatchResult { + entries: field_entries.ok_or_else(|| ::serde::de::Error::missing_field("entries"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("entries", &self.entries)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for UploadSessionAppendBatchResult { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = UploadSessionAppendBatchResult; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a UploadSessionAppendBatchResult struct") + } + fn visit_map>(self, map: V) -> Result { + UploadSessionAppendBatchResult::internal_deserialize(map) + } + } + deserializer.deserialize_struct("UploadSessionAppendBatchResult", UPLOAD_SESSION_APPEND_BATCH_RESULT_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for UploadSessionAppendBatchResult { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("UploadSessionAppendBatchResult", 1)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +#[derive(Debug, Clone, PartialEq, Eq)] +pub enum UploadSessionAppendBatchResultEntry { + Success, + Failure(UploadSessionAppendBatchEntryError), +} + +impl<'de> ::serde::de::Deserialize<'de> for UploadSessionAppendBatchResultEntry { + fn deserialize>(deserializer: D) -> Result { + // union deserializer + use serde::de::{self, MapAccess, Visitor}; + struct EnumVisitor; + impl<'de> Visitor<'de> for EnumVisitor { + type Value = UploadSessionAppendBatchResultEntry; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a UploadSessionAppendBatchResultEntry structure") + } + fn visit_map>(self, mut map: V) -> Result { + let tag: &str = match map.next_key()? { + Some(".tag") => map.next_value()?, + _ => return Err(de::Error::missing_field(".tag")) + }; + let value = match tag { + "success" => UploadSessionAppendBatchResultEntry::Success, + "failure" => { + match map.next_key()? { + Some("failure") => UploadSessionAppendBatchResultEntry::Failure(map.next_value()?), + None => return Err(de::Error::missing_field("failure")), + _ => return Err(de::Error::unknown_field(tag, VARIANTS)) + } + } + _ => return Err(de::Error::unknown_variant(tag, VARIANTS)) + }; + crate::eat_json_fields(&mut map)?; + Ok(value) + } + } + const VARIANTS: &[&str] = &["success", + "failure"]; + deserializer.deserialize_struct("UploadSessionAppendBatchResultEntry", VARIANTS, EnumVisitor) + } +} + +impl ::serde::ser::Serialize for UploadSessionAppendBatchResultEntry { + fn serialize(&self, serializer: S) -> Result { + // union serializer + use serde::ser::SerializeStruct; + match self { + UploadSessionAppendBatchResultEntry::Success => { + // unit + let mut s = serializer.serialize_struct("UploadSessionAppendBatchResultEntry", 1)?; + s.serialize_field(".tag", "success")?; + s.end() + } + UploadSessionAppendBatchResultEntry::Failure(x) => { + // union or polymporphic struct + let mut s = serializer.serialize_struct("UploadSessionAppendBatchResultEntry", 2)?; + s.serialize_field(".tag", "failure")?; + s.serialize_field("failure", x)?; + s.end() + } + } + } +} + +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // variants may be added in the future +pub enum UploadSessionAppendError { + /// The upload session ID was not found or has expired. Upload sessions are valid for 7 days. + NotFound, + /// The specified offset was incorrect. See the value for the correct offset. This error may + /// occur when a previous request was received and processed successfully but the client did not + /// receive the response, e.g. due to a network error. + IncorrectOffset(UploadSessionOffsetError), + /// You are attempting to append data to an upload session that has already been closed (i.e. + /// committed). + Closed, + /// You can not append to the upload session because the size of a file should not exceed the + /// max file size limit (i.e. 2^41 - 2^22 or 2,199,019,061,248 bytes). + TooLarge, + /// For concurrent upload sessions, offset needs to be multiple of 2^22 (4,194,304) bytes. + ConcurrentSessionInvalidOffset, + /// For concurrent upload sessions, only chunks with size multiple of 2^22 (4,194,304) bytes can + /// be uploaded. + ConcurrentSessionInvalidDataSize, + /// The request payload must be at most 150 MiB. + PayloadTooLarge, + /// The content received by the Dropbox server in this call does not match the provided content + /// hash. + ContentHashMismatch, + /// Catch-all used for unrecognized values returned from the server. Encountering this value + /// typically indicates that this SDK version is out of date. + Other, +} + +impl<'de> ::serde::de::Deserialize<'de> for UploadSessionAppendError { + fn deserialize>(deserializer: D) -> Result { + // union deserializer + use serde::de::{self, MapAccess, Visitor}; + struct EnumVisitor; + impl<'de> Visitor<'de> for EnumVisitor { + type Value = UploadSessionAppendError; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a UploadSessionAppendError structure") + } + fn visit_map>(self, mut map: V) -> Result { + let tag: &str = match map.next_key()? { + Some(".tag") => map.next_value()?, + _ => return Err(de::Error::missing_field(".tag")) + }; + let value = match tag { + "not_found" => UploadSessionAppendError::NotFound, + "incorrect_offset" => UploadSessionAppendError::IncorrectOffset(UploadSessionOffsetError::internal_deserialize(&mut map)?), + "closed" => UploadSessionAppendError::Closed, + "too_large" => UploadSessionAppendError::TooLarge, + "concurrent_session_invalid_offset" => UploadSessionAppendError::ConcurrentSessionInvalidOffset, + "concurrent_session_invalid_data_size" => UploadSessionAppendError::ConcurrentSessionInvalidDataSize, + "payload_too_large" => UploadSessionAppendError::PayloadTooLarge, + "content_hash_mismatch" => UploadSessionAppendError::ContentHashMismatch, + _ => UploadSessionAppendError::Other, + }; + crate::eat_json_fields(&mut map)?; + Ok(value) + } + } + const VARIANTS: &[&str] = &["not_found", + "incorrect_offset", + "closed", + "too_large", + "concurrent_session_invalid_offset", + "concurrent_session_invalid_data_size", + "payload_too_large", + "content_hash_mismatch", + "other"]; + deserializer.deserialize_struct("UploadSessionAppendError", VARIANTS, EnumVisitor) + } +} + +impl ::serde::ser::Serialize for UploadSessionAppendError { + fn serialize(&self, serializer: S) -> Result { + // union serializer + use serde::ser::SerializeStruct; + match self { + UploadSessionAppendError::NotFound => { // unit let mut s = serializer.serialize_struct("UploadSessionAppendError", 1)?; - s.serialize_field(".tag", "not_closed")?; + s.serialize_field(".tag", "not_found")?; + s.end() + } + UploadSessionAppendError::IncorrectOffset(x) => { + // struct + let mut s = serializer.serialize_struct("UploadSessionAppendError", 2)?; + s.serialize_field(".tag", "incorrect_offset")?; + x.internal_serialize::(&mut s)?; + s.end() + } + UploadSessionAppendError::Closed => { + // unit + let mut s = serializer.serialize_struct("UploadSessionAppendError", 1)?; + s.serialize_field(".tag", "closed")?; s.end() } UploadSessionAppendError::TooLarge => { @@ -19613,33 +20502,16 @@ impl ::std::fmt::Display for UploadSessionAppendError { UploadSessionAppendError::NotFound => f.write_str("The upload session ID was not found or has expired. Upload sessions are valid for 7 days."), UploadSessionAppendError::IncorrectOffset(inner) => write!(f, "The specified offset was incorrect. See the value for the correct offset. This error may occur when a previous request was received and processed successfully but the client did not receive the response, e.g. due to a network error: {:?}", inner), UploadSessionAppendError::Closed => f.write_str("You are attempting to append data to an upload session that has already been closed (i.e. committed)."), - UploadSessionAppendError::NotClosed => f.write_str("The session must be closed before calling upload_session/finish_batch."), - UploadSessionAppendError::TooLarge => f.write_str("You can not append to the upload session because the size of a file should not reach the max file size limit (i.e. 350GB)."), - UploadSessionAppendError::ConcurrentSessionInvalidOffset => f.write_str("For concurrent upload sessions, offset needs to be multiple of 4194304 bytes."), - UploadSessionAppendError::ConcurrentSessionInvalidDataSize => f.write_str("For concurrent upload sessions, only chunks with size multiple of 4194304 bytes can be uploaded."), - UploadSessionAppendError::PayloadTooLarge => f.write_str("The request payload must be at most 150 MB."), + UploadSessionAppendError::TooLarge => f.write_str("You can not append to the upload session because the size of a file should not exceed the max file size limit (i.e. 2^41 - 2^22 or 2,199,019,061,248 bytes)."), + UploadSessionAppendError::ConcurrentSessionInvalidOffset => f.write_str("For concurrent upload sessions, offset needs to be multiple of 2^22 (4,194,304) bytes."), + UploadSessionAppendError::ConcurrentSessionInvalidDataSize => f.write_str("For concurrent upload sessions, only chunks with size multiple of 2^22 (4,194,304) bytes can be uploaded."), + UploadSessionAppendError::PayloadTooLarge => f.write_str("The request payload must be at most 150 MiB."), UploadSessionAppendError::ContentHashMismatch => f.write_str("The content received by the Dropbox server in this call does not match the provided content hash."), _ => write!(f, "{:?}", *self), } } } -// union extends UploadSessionLookupError -impl From for UploadSessionAppendError { - fn from(parent: UploadSessionLookupError) -> Self { - match parent { - UploadSessionLookupError::NotFound => UploadSessionAppendError::NotFound, - UploadSessionLookupError::IncorrectOffset(x) => UploadSessionAppendError::IncorrectOffset(x), - UploadSessionLookupError::Closed => UploadSessionAppendError::Closed, - UploadSessionLookupError::NotClosed => UploadSessionAppendError::NotClosed, - UploadSessionLookupError::TooLarge => UploadSessionAppendError::TooLarge, - UploadSessionLookupError::ConcurrentSessionInvalidOffset => UploadSessionAppendError::ConcurrentSessionInvalidOffset, - UploadSessionLookupError::ConcurrentSessionInvalidDataSize => UploadSessionAppendError::ConcurrentSessionInvalidDataSize, - UploadSessionLookupError::PayloadTooLarge => UploadSessionAppendError::PayloadTooLarge, - UploadSessionLookupError::Other => UploadSessionAppendError::Other, - } - } -} #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. pub struct UploadSessionCursor { @@ -20295,11 +21167,13 @@ pub enum UploadSessionFinishError { ConcurrentSessionNotClosed, /// Not all pieces of data were uploaded before trying to finish the session. ConcurrentSessionMissingData, - /// The request payload must be at most 150 MB. + /// The request payload must be at most 150 MiB. PayloadTooLarge, /// The content received by the Dropbox server in this call does not match the provided content /// hash. ContentHashMismatch, + /// The file is required to be encrypted, which is not supported in our public API. + EncryptionNotSupported, /// Catch-all used for unrecognized values returned from the server. Encountering this value /// typically indicates that this SDK version is out of date. Other, @@ -20349,6 +21223,7 @@ impl<'de> ::serde::de::Deserialize<'de> for UploadSessionFinishError { "concurrent_session_missing_data" => UploadSessionFinishError::ConcurrentSessionMissingData, "payload_too_large" => UploadSessionFinishError::PayloadTooLarge, "content_hash_mismatch" => UploadSessionFinishError::ContentHashMismatch, + "encryption_not_supported" => UploadSessionFinishError::EncryptionNotSupported, _ => UploadSessionFinishError::Other, }; crate::eat_json_fields(&mut map)?; @@ -20365,6 +21240,7 @@ impl<'de> ::serde::de::Deserialize<'de> for UploadSessionFinishError { "concurrent_session_missing_data", "payload_too_large", "content_hash_mismatch", + "encryption_not_supported", "other"]; deserializer.deserialize_struct("UploadSessionFinishError", VARIANTS, EnumVisitor) } @@ -20438,6 +21314,12 @@ impl ::serde::ser::Serialize for UploadSessionFinishError { s.serialize_field(".tag", "content_hash_mismatch")?; s.end() } + UploadSessionFinishError::EncryptionNotSupported => { + // unit + let mut s = serializer.serialize_struct("UploadSessionFinishError", 1)?; + s.serialize_field(".tag", "encryption_not_supported")?; + s.end() + } UploadSessionFinishError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) } } @@ -20465,8 +21347,9 @@ impl ::std::fmt::Display for UploadSessionFinishError { UploadSessionFinishError::ConcurrentSessionDataNotAllowed => f.write_str("Uploading data not allowed when finishing concurrent upload session."), UploadSessionFinishError::ConcurrentSessionNotClosed => f.write_str("Concurrent upload sessions need to be closed before finishing."), UploadSessionFinishError::ConcurrentSessionMissingData => f.write_str("Not all pieces of data were uploaded before trying to finish the session."), - UploadSessionFinishError::PayloadTooLarge => f.write_str("The request payload must be at most 150 MB."), + UploadSessionFinishError::PayloadTooLarge => f.write_str("The request payload must be at most 150 MiB."), UploadSessionFinishError::ContentHashMismatch => f.write_str("The content received by the Dropbox server in this call does not match the provided content hash."), + UploadSessionFinishError::EncryptionNotSupported => f.write_str("The file is required to be encrypted, which is not supported in our public API."), _ => write!(f, "{:?}", *self), } } @@ -20486,15 +21369,15 @@ pub enum UploadSessionLookupError { Closed, /// The session must be closed before calling upload_session/finish_batch. NotClosed, - /// You can not append to the upload session because the size of a file should not reach the max - /// file size limit (i.e. 350GB). + /// You can not append to the upload session because the size of a file should not exceed the + /// max file size limit (i.e. 2^41 - 2^22 or 2,199,019,061,248 bytes). TooLarge, - /// For concurrent upload sessions, offset needs to be multiple of 4194304 bytes. + /// For concurrent upload sessions, offset needs to be multiple of 2^22 (4,194,304) bytes. ConcurrentSessionInvalidOffset, - /// For concurrent upload sessions, only chunks with size multiple of 4194304 bytes can be - /// uploaded. + /// For concurrent upload sessions, only chunks with size multiple of 2^22 (4,194,304) bytes can + /// be uploaded. ConcurrentSessionInvalidDataSize, - /// The request payload must be at most 150 MB. + /// The request payload must be at most 150 MiB. PayloadTooLarge, /// Catch-all used for unrecognized values returned from the server. Encountering this value /// typically indicates that this SDK version is out of date. @@ -20613,10 +21496,10 @@ impl ::std::fmt::Display for UploadSessionLookupError { UploadSessionLookupError::IncorrectOffset(inner) => write!(f, "The specified offset was incorrect. See the value for the correct offset. This error may occur when a previous request was received and processed successfully but the client did not receive the response, e.g. due to a network error: {:?}", inner), UploadSessionLookupError::Closed => f.write_str("You are attempting to append data to an upload session that has already been closed (i.e. committed)."), UploadSessionLookupError::NotClosed => f.write_str("The session must be closed before calling upload_session/finish_batch."), - UploadSessionLookupError::TooLarge => f.write_str("You can not append to the upload session because the size of a file should not reach the max file size limit (i.e. 350GB)."), - UploadSessionLookupError::ConcurrentSessionInvalidOffset => f.write_str("For concurrent upload sessions, offset needs to be multiple of 4194304 bytes."), - UploadSessionLookupError::ConcurrentSessionInvalidDataSize => f.write_str("For concurrent upload sessions, only chunks with size multiple of 4194304 bytes can be uploaded."), - UploadSessionLookupError::PayloadTooLarge => f.write_str("The request payload must be at most 150 MB."), + UploadSessionLookupError::TooLarge => f.write_str("You can not append to the upload session because the size of a file should not exceed the max file size limit (i.e. 2^41 - 2^22 or 2,199,019,061,248 bytes)."), + UploadSessionLookupError::ConcurrentSessionInvalidOffset => f.write_str("For concurrent upload sessions, offset needs to be multiple of 2^22 (4,194,304) bytes."), + UploadSessionLookupError::ConcurrentSessionInvalidDataSize => f.write_str("For concurrent upload sessions, only chunks with size multiple of 2^22 (4,194,304) bytes can be uploaded."), + UploadSessionLookupError::PayloadTooLarge => f.write_str("The request payload must be at most 150 MiB."), _ => write!(f, "{:?}", *self), } } @@ -21049,7 +21932,7 @@ pub enum UploadSessionStartError { ConcurrentSessionDataNotAllowed, /// Can not start a closed concurrent upload session. ConcurrentSessionCloseNotAllowed, - /// The request payload must be at most 150 MB. + /// The request payload must be at most 150 MiB. PayloadTooLarge, /// The content received by the Dropbox server in this call does not match the provided content /// hash. @@ -21136,7 +22019,7 @@ impl ::std::fmt::Display for UploadSessionStartError { match self { UploadSessionStartError::ConcurrentSessionDataNotAllowed => f.write_str("Uploading data not allowed when starting concurrent upload session."), UploadSessionStartError::ConcurrentSessionCloseNotAllowed => f.write_str("Can not start a closed concurrent upload session."), - UploadSessionStartError::PayloadTooLarge => f.write_str("The request payload must be at most 150 MB."), + UploadSessionStartError::PayloadTooLarge => f.write_str("The request payload must be at most 150 MiB."), UploadSessionStartError::ContentHashMismatch => f.write_str("The content received by the Dropbox server in this call does not match the provided content hash."), _ => write!(f, "{:?}", *self), } @@ -21752,6 +22635,9 @@ pub enum WriteError { OperationSuppressed, /// There are too many write operations in user's Dropbox. Please retry this request. TooManyWriteOperations, + /// The user doesn't have permission to perform the action due to restrictions set by a team + /// administrator + AccessRestricted, /// Catch-all used for unrecognized values returned from the server. Encountering this value /// typically indicates that this SDK version is out of date. Other, @@ -21793,6 +22679,7 @@ impl<'de> ::serde::de::Deserialize<'de> for WriteError { "team_folder" => WriteError::TeamFolder, "operation_suppressed" => WriteError::OperationSuppressed, "too_many_write_operations" => WriteError::TooManyWriteOperations, + "access_restricted" => WriteError::AccessRestricted, _ => WriteError::Other, }; crate::eat_json_fields(&mut map)?; @@ -21807,6 +22694,7 @@ impl<'de> ::serde::de::Deserialize<'de> for WriteError { "team_folder", "operation_suppressed", "too_many_write_operations", + "access_restricted", "other"]; deserializer.deserialize_struct("WriteError", VARIANTS, EnumVisitor) } @@ -21870,6 +22758,12 @@ impl ::serde::ser::Serialize for WriteError { s.serialize_field(".tag", "too_many_write_operations")?; s.end() } + WriteError::AccessRestricted => { + // unit + let mut s = serializer.serialize_struct("WriteError", 1)?; + s.serialize_field(".tag", "access_restricted")?; + s.end() + } WriteError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) } } @@ -21895,6 +22789,7 @@ impl ::std::fmt::Display for WriteError { WriteError::TeamFolder => f.write_str("This endpoint cannot move or delete team folders."), WriteError::OperationSuppressed => f.write_str("This file operation is not allowed at this path."), WriteError::TooManyWriteOperations => f.write_str("There are too many write operations in user's Dropbox. Please retry this request."), + WriteError::AccessRestricted => f.write_str("The user doesn't have permission to perform the action due to restrictions set by a team administrator"), _ => write!(f, "{:?}", *self), } } diff --git a/src/generated/types/mod.rs b/src/generated/types/mod.rs index 389b483c..451a6f01 100644 --- a/src/generated/types/mod.rs +++ b/src/generated/types/mod.rs @@ -12,6 +12,8 @@ if_feature! { "dbx_account", pub mod account; } +if_feature! { "dbx_account_id", pub mod account_id; } + if_feature! { "dbx_async", pub mod dbx_async; } pub mod auth; @@ -32,6 +34,8 @@ if_feature! { "dbx_openid", pub mod openid; } if_feature! { "dbx_paper", pub mod paper; } +if_feature! { "dbx_riviera", pub mod riviera; } + if_feature! { "dbx_secondary_emails", pub mod secondary_emails; } if_feature! { "dbx_seen_state", pub mod seen_state; } diff --git a/src/generated/types/paper.rs b/src/generated/types/paper.rs index 151db687..202fae4d 100644 --- a/src/generated/types/paper.rs +++ b/src/generated/types/paper.rs @@ -801,6 +801,8 @@ pub enum ExportFormat { Html, /// The markdown export format. Markdown, + /// Doc metadata JSON export format. + Json, /// Catch-all used for unrecognized values returned from the server. Encountering this value /// typically indicates that this SDK version is out of date. Other, @@ -824,6 +826,7 @@ impl<'de> ::serde::de::Deserialize<'de> for ExportFormat { let value = match tag { "html" => ExportFormat::Html, "markdown" => ExportFormat::Markdown, + "json" => ExportFormat::Json, _ => ExportFormat::Other, }; crate::eat_json_fields(&mut map)?; @@ -832,6 +835,7 @@ impl<'de> ::serde::de::Deserialize<'de> for ExportFormat { } const VARIANTS: &[&str] = &["html", "markdown", + "json", "other"]; deserializer.deserialize_struct("ExportFormat", VARIANTS, EnumVisitor) } @@ -854,6 +858,12 @@ impl ::serde::ser::Serialize for ExportFormat { s.serialize_field(".tag", "markdown")?; s.end() } + ExportFormat::Json => { + // unit + let mut s = serializer.serialize_struct("ExportFormat", 1)?; + s.serialize_field(".tag", "json")?; + s.end() + } ExportFormat::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) } } @@ -1206,6 +1216,108 @@ impl ::serde::ser::Serialize for FoldersContainingPaperDoc { } } +/// Argument for retrieving Paper doc metadata. Accepts either a legacy Paper doc ID or a Cloud Doc +/// file ID. +#[derive(Debug, Clone, PartialEq, Eq, Default)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct GetDocMetadataArg { + /// Legacy Paper doc identifier. + pub doc_id: Option, + /// Dropbox file ID for Cloud Docs (post-PiFS migration). + pub file_id: Option, +} + +impl GetDocMetadataArg { + pub fn with_doc_id(mut self, value: PaperDocId) -> Self { + self.doc_id = Some(value); + self + } + + pub fn with_file_id(mut self, value: crate::types::files::FileId) -> Self { + self.file_id = Some(value); + self + } +} + +const GET_DOC_METADATA_ARG_FIELDS: &[&str] = &["doc_id", + "file_id"]; +impl GetDocMetadataArg { + // no _opt deserializer + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + ) -> Result { + let mut field_doc_id = None; + let mut field_file_id = None; + while let Some(key) = map.next_key::<&str>()? { + match key { + "doc_id" => { + if field_doc_id.is_some() { + return Err(::serde::de::Error::duplicate_field("doc_id")); + } + field_doc_id = Some(map.next_value()?); + } + "file_id" => { + if field_file_id.is_some() { + return Err(::serde::de::Error::duplicate_field("file_id")); + } + field_file_id = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } + } + } + let result = GetDocMetadataArg { + doc_id: field_doc_id.and_then(Option::flatten), + file_id: field_file_id.and_then(Option::flatten), + }; + Ok(result) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + if let Some(val) = &self.doc_id { + s.serialize_field("doc_id", val)?; + } + if let Some(val) = &self.file_id { + s.serialize_field("file_id", val)?; + } + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for GetDocMetadataArg { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = GetDocMetadataArg; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a GetDocMetadataArg struct") + } + fn visit_map>(self, map: V) -> Result { + GetDocMetadataArg::internal_deserialize(map) + } + } + deserializer.deserialize_struct("GetDocMetadataArg", GET_DOC_METADATA_ARG_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for GetDocMetadataArg { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("GetDocMetadataArg", 2)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + /// The import format of the incoming data. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // variants may be added in the future @@ -1482,6 +1594,8 @@ pub struct ListPaperDocsArgs { /// Size limit per batch. The maximum number of docs that can be retrieved per batch is 1000. /// Higher value results in invalid arguments error. pub limit: i32, + /// Do not return results beyond this date. Behavior depends on sort order. + pub stop_at_date: Option, } impl Default for ListPaperDocsArgs { @@ -1491,6 +1605,7 @@ impl Default for ListPaperDocsArgs { sort_by: ListPaperDocsSortBy::Accessed, sort_order: ListPaperDocsSortOrder::Ascending, limit: 1000, + stop_at_date: None, } } } @@ -1515,12 +1630,18 @@ impl ListPaperDocsArgs { self.limit = value; self } + + pub fn with_stop_at_date(mut self, value: crate::types::common::DropboxTimestamp) -> Self { + self.stop_at_date = Some(value); + self + } } const LIST_PAPER_DOCS_ARGS_FIELDS: &[&str] = &["filter_by", "sort_by", "sort_order", - "limit"]; + "limit", + "stop_at_date"]; impl ListPaperDocsArgs { // no _opt deserializer pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( @@ -1530,6 +1651,7 @@ impl ListPaperDocsArgs { let mut field_sort_by = None; let mut field_sort_order = None; let mut field_limit = None; + let mut field_stop_at_date = None; while let Some(key) = map.next_key::<&str>()? { match key { "filter_by" => { @@ -1556,6 +1678,12 @@ impl ListPaperDocsArgs { } field_limit = Some(map.next_value()?); } + "stop_at_date" => { + if field_stop_at_date.is_some() { + return Err(::serde::de::Error::duplicate_field("stop_at_date")); + } + field_stop_at_date = Some(map.next_value()?); + } _ => { // unknown field allowed and ignored map.next_value::<::serde_json::Value>()?; @@ -1567,6 +1695,7 @@ impl ListPaperDocsArgs { sort_by: field_sort_by.unwrap_or(ListPaperDocsSortBy::Accessed), sort_order: field_sort_order.unwrap_or(ListPaperDocsSortOrder::Ascending), limit: field_limit.unwrap_or(1000), + stop_at_date: field_stop_at_date.and_then(Option::flatten), }; Ok(result) } @@ -1588,6 +1717,9 @@ impl ListPaperDocsArgs { if self.limit != 1000 { s.serialize_field("limit", &self.limit)?; } + if let Some(val) = &self.stop_at_date { + s.serialize_field("stop_at_date", val)?; + } Ok(()) } } @@ -1614,7 +1746,7 @@ impl ::serde::ser::Serialize for ListPaperDocsArgs { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("ListPaperDocsArgs", 4)?; + let mut s = serializer.serialize_struct("ListPaperDocsArgs", 5)?; self.internal_serialize::(&mut s)?; s.end() } @@ -3464,6 +3596,10 @@ pub struct PaperDocExport { /// The Paper doc ID. pub doc_id: PaperDocId, pub export_format: ExportFormat, + /// When true, export includes comment threads (e.g. markdown footnotes). When false or omitted, + /// body only. Other formats may adopt this later; currently only markdown uses it. Plain bool + /// (not optional): protoc-gen-godbx does not support proto3 optional yet. + pub include_comments: bool, } impl PaperDocExport { @@ -3471,12 +3607,19 @@ impl PaperDocExport { PaperDocExport { doc_id, export_format, + include_comments: false, } } + + pub fn with_include_comments(mut self, value: bool) -> Self { + self.include_comments = value; + self + } } const PAPER_DOC_EXPORT_FIELDS: &[&str] = &["doc_id", - "export_format"]; + "export_format", + "include_comments"]; impl PaperDocExport { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, @@ -3490,6 +3633,7 @@ impl PaperDocExport { ) -> Result, V::Error> { let mut field_doc_id = None; let mut field_export_format = None; + let mut field_include_comments = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; @@ -3506,6 +3650,12 @@ impl PaperDocExport { } field_export_format = Some(map.next_value()?); } + "include_comments" => { + if field_include_comments.is_some() { + return Err(::serde::de::Error::duplicate_field("include_comments")); + } + field_include_comments = Some(map.next_value()?); + } _ => { // unknown field allowed and ignored map.next_value::<::serde_json::Value>()?; @@ -3518,6 +3668,7 @@ impl PaperDocExport { let result = PaperDocExport { doc_id: field_doc_id.ok_or_else(|| ::serde::de::Error::missing_field("doc_id"))?, export_format: field_export_format.ok_or_else(|| ::serde::de::Error::missing_field("export_format"))?, + include_comments: field_include_comments.unwrap_or(false), }; Ok(Some(result)) } @@ -3529,6 +3680,9 @@ impl PaperDocExport { use serde::ser::SerializeStruct; s.serialize_field("doc_id", &self.doc_id)?; s.serialize_field("export_format", &self.export_format)?; + if self.include_comments { + s.serialize_field("include_comments", &self.include_comments)?; + } Ok(()) } } @@ -3555,7 +3709,7 @@ impl ::serde::ser::Serialize for PaperDocExport { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("PaperDocExport", 2)?; + let mut s = serializer.serialize_struct("PaperDocExport", 3)?; self.internal_serialize::(&mut s)?; s.end() } @@ -3699,6 +3853,198 @@ impl ::serde::ser::Serialize for PaperDocExportResult { } } +/// Metadata returned by docs/get_metadata. +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct PaperDocGetMetadataResult { + /// The Paper doc ID. + pub doc_id: PaperDocId, + /// The Paper doc owner's email address. + pub owner: String, + /// The Paper doc title. + pub title: String, + /// The Paper doc creation date. + pub created_date: crate::types::common::DropboxTimestamp, + /// The Paper doc status. + pub status: PaperDocStatus, + /// The Paper doc revision. Simply an ever increasing number. + pub revision: i64, + /// The date when the Paper doc was last edited. + pub last_updated_date: crate::types::common::DropboxTimestamp, + /// The email address of the last editor of the Paper doc. + pub last_editor: String, +} + +impl PaperDocGetMetadataResult { + pub fn new( + doc_id: PaperDocId, + owner: String, + title: String, + created_date: crate::types::common::DropboxTimestamp, + status: PaperDocStatus, + revision: i64, + last_updated_date: crate::types::common::DropboxTimestamp, + last_editor: String, + ) -> Self { + PaperDocGetMetadataResult { + doc_id, + owner, + title, + created_date, + status, + revision, + last_updated_date, + last_editor, + } + } +} + +const PAPER_DOC_GET_METADATA_RESULT_FIELDS: &[&str] = &["doc_id", + "owner", + "title", + "created_date", + "status", + "revision", + "last_updated_date", + "last_editor"]; +impl PaperDocGetMetadataResult { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_doc_id = None; + let mut field_owner = None; + let mut field_title = None; + let mut field_created_date = None; + let mut field_status = None; + let mut field_revision = None; + let mut field_last_updated_date = None; + let mut field_last_editor = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "doc_id" => { + if field_doc_id.is_some() { + return Err(::serde::de::Error::duplicate_field("doc_id")); + } + field_doc_id = Some(map.next_value()?); + } + "owner" => { + if field_owner.is_some() { + return Err(::serde::de::Error::duplicate_field("owner")); + } + field_owner = Some(map.next_value()?); + } + "title" => { + if field_title.is_some() { + return Err(::serde::de::Error::duplicate_field("title")); + } + field_title = Some(map.next_value()?); + } + "created_date" => { + if field_created_date.is_some() { + return Err(::serde::de::Error::duplicate_field("created_date")); + } + field_created_date = Some(map.next_value()?); + } + "status" => { + if field_status.is_some() { + return Err(::serde::de::Error::duplicate_field("status")); + } + field_status = Some(map.next_value()?); + } + "revision" => { + if field_revision.is_some() { + return Err(::serde::de::Error::duplicate_field("revision")); + } + field_revision = Some(map.next_value()?); + } + "last_updated_date" => { + if field_last_updated_date.is_some() { + return Err(::serde::de::Error::duplicate_field("last_updated_date")); + } + field_last_updated_date = Some(map.next_value()?); + } + "last_editor" => { + if field_last_editor.is_some() { + return Err(::serde::de::Error::duplicate_field("last_editor")); + } + field_last_editor = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } + } + } + if optional && nothing { + return Ok(None); + } + let result = PaperDocGetMetadataResult { + doc_id: field_doc_id.ok_or_else(|| ::serde::de::Error::missing_field("doc_id"))?, + owner: field_owner.ok_or_else(|| ::serde::de::Error::missing_field("owner"))?, + title: field_title.ok_or_else(|| ::serde::de::Error::missing_field("title"))?, + created_date: field_created_date.ok_or_else(|| ::serde::de::Error::missing_field("created_date"))?, + status: field_status.ok_or_else(|| ::serde::de::Error::missing_field("status"))?, + revision: field_revision.ok_or_else(|| ::serde::de::Error::missing_field("revision"))?, + last_updated_date: field_last_updated_date.ok_or_else(|| ::serde::de::Error::missing_field("last_updated_date"))?, + last_editor: field_last_editor.ok_or_else(|| ::serde::de::Error::missing_field("last_editor"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("doc_id", &self.doc_id)?; + s.serialize_field("owner", &self.owner)?; + s.serialize_field("title", &self.title)?; + s.serialize_field("created_date", &self.created_date)?; + s.serialize_field("status", &self.status)?; + s.serialize_field("revision", &self.revision)?; + s.serialize_field("last_updated_date", &self.last_updated_date)?; + s.serialize_field("last_editor", &self.last_editor)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for PaperDocGetMetadataResult { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = PaperDocGetMetadataResult; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a PaperDocGetMetadataResult struct") + } + fn visit_map>(self, map: V) -> Result { + PaperDocGetMetadataResult::internal_deserialize(map) + } + } + deserializer.deserialize_struct("PaperDocGetMetadataResult", PAPER_DOC_GET_METADATA_RESULT_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for PaperDocGetMetadataResult { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("PaperDocGetMetadataResult", 8)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // variants may be added in the future pub enum PaperDocPermissionLevel { @@ -3876,6 +4222,72 @@ impl From for RefPaperDoc { } } } +/// The status of a Paper doc. +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // variants may be added in the future +pub enum PaperDocStatus { + /// The Paper doc is active. + Active, + /// The Paper doc is deleted. + Deleted, + /// Catch-all used for unrecognized values returned from the server. Encountering this value + /// typically indicates that this SDK version is out of date. + Other, +} + +impl<'de> ::serde::de::Deserialize<'de> for PaperDocStatus { + fn deserialize>(deserializer: D) -> Result { + // union deserializer + use serde::de::{self, MapAccess, Visitor}; + struct EnumVisitor; + impl<'de> Visitor<'de> for EnumVisitor { + type Value = PaperDocStatus; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a PaperDocStatus structure") + } + fn visit_map>(self, mut map: V) -> Result { + let tag: &str = match map.next_key()? { + Some(".tag") => map.next_value()?, + _ => return Err(de::Error::missing_field(".tag")) + }; + let value = match tag { + "active" => PaperDocStatus::Active, + "deleted" => PaperDocStatus::Deleted, + _ => PaperDocStatus::Other, + }; + crate::eat_json_fields(&mut map)?; + Ok(value) + } + } + const VARIANTS: &[&str] = &["active", + "deleted", + "other"]; + deserializer.deserialize_struct("PaperDocStatus", VARIANTS, EnumVisitor) + } +} + +impl ::serde::ser::Serialize for PaperDocStatus { + fn serialize(&self, serializer: S) -> Result { + // union serializer + use serde::ser::SerializeStruct; + match self { + PaperDocStatus::Active => { + // unit + let mut s = serializer.serialize_struct("PaperDocStatus", 1)?; + s.serialize_field(".tag", "active")?; + s.end() + } + PaperDocStatus::Deleted => { + // unit + let mut s = serializer.serialize_struct("PaperDocStatus", 1)?; + s.serialize_field(".tag", "deleted")?; + s.end() + } + PaperDocStatus::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) + } + } +} + #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. pub struct PaperDocUpdateArgs { diff --git a/src/generated/types/riviera.rs b/src/generated/types/riviera.rs new file mode 100644 index 00000000..dbc790ad --- /dev/null +++ b/src/generated/types/riviera.rs @@ -0,0 +1,1148 @@ +// DO NOT EDIT +// This file was @generated by Stone + +#![allow( + clippy::too_many_arguments, + clippy::large_enum_variant, + clippy::result_large_err, + clippy::doc_markdown, +)] + +/// Structured transcript for APIv2 +#[derive(Debug, Clone, PartialEq, Default)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct ApiStructuredTranscript { + pub segments: Option>, + pub transcript_locale: String, +} + +impl ApiStructuredTranscript { + pub fn with_segments(mut self, value: Vec) -> Self { + self.segments = Some(value); + self + } + + pub fn with_transcript_locale(mut self, value: String) -> Self { + self.transcript_locale = value; + self + } +} + +const API_STRUCTURED_TRANSCRIPT_FIELDS: &[&str] = &["segments", + "transcript_locale"]; +impl ApiStructuredTranscript { + // no _opt deserializer + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + ) -> Result { + let mut field_segments = None; + let mut field_transcript_locale = None; + while let Some(key) = map.next_key::<&str>()? { + match key { + "segments" => { + if field_segments.is_some() { + return Err(::serde::de::Error::duplicate_field("segments")); + } + field_segments = Some(map.next_value()?); + } + "transcript_locale" => { + if field_transcript_locale.is_some() { + return Err(::serde::de::Error::duplicate_field("transcript_locale")); + } + field_transcript_locale = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } + } + } + let result = ApiStructuredTranscript { + segments: field_segments.and_then(Option::flatten), + transcript_locale: field_transcript_locale.unwrap_or_default(), + }; + Ok(result) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + if let Some(val) = &self.segments { + s.serialize_field("segments", val)?; + } + if !self.transcript_locale.is_empty() { + s.serialize_field("transcript_locale", &self.transcript_locale)?; + } + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for ApiStructuredTranscript { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = ApiStructuredTranscript; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a ApiStructuredTranscript struct") + } + fn visit_map>(self, map: V) -> Result { + ApiStructuredTranscript::internal_deserialize(map) + } + } + deserializer.deserialize_struct("ApiStructuredTranscript", API_STRUCTURED_TRANSCRIPT_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for ApiStructuredTranscript { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("ApiStructuredTranscript", 2)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +/// Transcript segment for APIv2 +#[derive(Debug, Clone, PartialEq, Default)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct ApiTranscriptSegment { + pub text: String, + pub start_time: f64, + pub end_time: f64, +} + +impl ApiTranscriptSegment { + pub fn with_text(mut self, value: String) -> Self { + self.text = value; + self + } + + pub fn with_start_time(mut self, value: f64) -> Self { + self.start_time = value; + self + } + + pub fn with_end_time(mut self, value: f64) -> Self { + self.end_time = value; + self + } +} + +const API_TRANSCRIPT_SEGMENT_FIELDS: &[&str] = &["text", + "start_time", + "end_time"]; +impl ApiTranscriptSegment { + // no _opt deserializer + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + ) -> Result { + let mut field_text = None; + let mut field_start_time = None; + let mut field_end_time = None; + while let Some(key) = map.next_key::<&str>()? { + match key { + "text" => { + if field_text.is_some() { + return Err(::serde::de::Error::duplicate_field("text")); + } + field_text = Some(map.next_value()?); + } + "start_time" => { + if field_start_time.is_some() { + return Err(::serde::de::Error::duplicate_field("start_time")); + } + field_start_time = Some(map.next_value()?); + } + "end_time" => { + if field_end_time.is_some() { + return Err(::serde::de::Error::duplicate_field("end_time")); + } + field_end_time = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } + } + } + let result = ApiTranscriptSegment { + text: field_text.unwrap_or_default(), + start_time: field_start_time.unwrap_or(0.0), + end_time: field_end_time.unwrap_or(0.0), + }; + Ok(result) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + if !self.text.is_empty() { + s.serialize_field("text", &self.text)?; + } + if self.start_time != 0.0 { + s.serialize_field("start_time", &self.start_time)?; + } + if self.end_time != 0.0 { + s.serialize_field("end_time", &self.end_time)?; + } + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for ApiTranscriptSegment { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = ApiTranscriptSegment; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a ApiTranscriptSegment struct") + } + fn visit_map>(self, map: V) -> Result { + ApiTranscriptSegment::internal_deserialize(map) + } + } + deserializer.deserialize_struct("ApiTranscriptSegment", API_TRANSCRIPT_SEGMENT_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for ApiTranscriptSegment { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("ApiTranscriptSegment", 3)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // variants may be added in the future +pub enum ContentApiV2Error { + ServerError(String), + UserError(String), + MediaDurationError(MediaDurationError), + NoAudioError, + LinkDownloadDisabledError, + SharedLinkPasswordProtected, + LimitExceededError, + /// Catch-all used for unrecognized values returned from the server. Encountering this value + /// typically indicates that this SDK version is out of date. + Other, +} + +impl<'de> ::serde::de::Deserialize<'de> for ContentApiV2Error { + fn deserialize>(deserializer: D) -> Result { + // union deserializer + use serde::de::{self, MapAccess, Visitor}; + struct EnumVisitor; + impl<'de> Visitor<'de> for EnumVisitor { + type Value = ContentApiV2Error; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a ContentApiV2Error structure") + } + fn visit_map>(self, mut map: V) -> Result { + let tag: &str = match map.next_key()? { + Some(".tag") => map.next_value()?, + _ => return Err(de::Error::missing_field(".tag")) + }; + let value = match tag { + "server_error" => { + match map.next_key()? { + Some("server_error") => ContentApiV2Error::ServerError(map.next_value()?), + None => return Err(de::Error::missing_field("server_error")), + _ => return Err(de::Error::unknown_field(tag, VARIANTS)) + } + } + "user_error" => { + match map.next_key()? { + Some("user_error") => ContentApiV2Error::UserError(map.next_value()?), + None => return Err(de::Error::missing_field("user_error")), + _ => return Err(de::Error::unknown_field(tag, VARIANTS)) + } + } + "media_duration_error" => ContentApiV2Error::MediaDurationError(MediaDurationError::internal_deserialize(&mut map)?), + "no_audio_error" => ContentApiV2Error::NoAudioError, + "link_download_disabled_error" => ContentApiV2Error::LinkDownloadDisabledError, + "shared_link_password_protected" => ContentApiV2Error::SharedLinkPasswordProtected, + "limit_exceeded_error" => ContentApiV2Error::LimitExceededError, + _ => ContentApiV2Error::Other, + }; + crate::eat_json_fields(&mut map)?; + Ok(value) + } + } + const VARIANTS: &[&str] = &["server_error", + "user_error", + "media_duration_error", + "no_audio_error", + "link_download_disabled_error", + "shared_link_password_protected", + "limit_exceeded_error", + "other"]; + deserializer.deserialize_struct("ContentApiV2Error", VARIANTS, EnumVisitor) + } +} + +impl ::serde::ser::Serialize for ContentApiV2Error { + fn serialize(&self, serializer: S) -> Result { + // union serializer + use serde::ser::SerializeStruct; + match self { + ContentApiV2Error::ServerError(x) => { + // primitive + let mut s = serializer.serialize_struct("ContentApiV2Error", 2)?; + s.serialize_field(".tag", "server_error")?; + s.serialize_field("server_error", x)?; + s.end() + } + ContentApiV2Error::UserError(x) => { + // primitive + let mut s = serializer.serialize_struct("ContentApiV2Error", 2)?; + s.serialize_field(".tag", "user_error")?; + s.serialize_field("user_error", x)?; + s.end() + } + ContentApiV2Error::MediaDurationError(x) => { + // struct + let mut s = serializer.serialize_struct("ContentApiV2Error", 2)?; + s.serialize_field(".tag", "media_duration_error")?; + x.internal_serialize::(&mut s)?; + s.end() + } + ContentApiV2Error::NoAudioError => { + // unit + let mut s = serializer.serialize_struct("ContentApiV2Error", 1)?; + s.serialize_field(".tag", "no_audio_error")?; + s.end() + } + ContentApiV2Error::LinkDownloadDisabledError => { + // unit + let mut s = serializer.serialize_struct("ContentApiV2Error", 1)?; + s.serialize_field(".tag", "link_download_disabled_error")?; + s.end() + } + ContentApiV2Error::SharedLinkPasswordProtected => { + // unit + let mut s = serializer.serialize_struct("ContentApiV2Error", 1)?; + s.serialize_field(".tag", "shared_link_password_protected")?; + s.end() + } + ContentApiV2Error::LimitExceededError => { + // unit + let mut s = serializer.serialize_struct("ContentApiV2Error", 1)?; + s.serialize_field(".tag", "limit_exceeded_error")?; + s.end() + } + ContentApiV2Error::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) + } + } +} + +impl ::std::error::Error for ContentApiV2Error { +} + +impl ::std::fmt::Display for ContentApiV2Error { + fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + match self { + ContentApiV2Error::ServerError(inner) => write!(f, "server_error: {:?}", inner), + ContentApiV2Error::UserError(inner) => write!(f, "user_error: {:?}", inner), + ContentApiV2Error::MediaDurationError(inner) => write!(f, "media_duration_error: {:?}", inner), + _ => write!(f, "{:?}", *self), + } + } +} + +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // variants may be added in the future +pub enum ErrorCode { + UnknownError, + /// 400 + BadRequest, + /// 409 + ApiError, + /// 403 + AccessError, + /// 429 + RatelimitError, + /// 503 + Unavailable, + /// Catch-all used for unrecognized values returned from the server. Encountering this value + /// typically indicates that this SDK version is out of date. + Other, +} + +impl<'de> ::serde::de::Deserialize<'de> for ErrorCode { + fn deserialize>(deserializer: D) -> Result { + // union deserializer + use serde::de::{self, MapAccess, Visitor}; + struct EnumVisitor; + impl<'de> Visitor<'de> for EnumVisitor { + type Value = ErrorCode; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a ErrorCode structure") + } + fn visit_map>(self, mut map: V) -> Result { + let tag: &str = match map.next_key()? { + Some(".tag") => map.next_value()?, + _ => return Err(de::Error::missing_field(".tag")) + }; + let value = match tag { + "unknown_error" => ErrorCode::UnknownError, + "bad_request" => ErrorCode::BadRequest, + "api_error" => ErrorCode::ApiError, + "access_error" => ErrorCode::AccessError, + "ratelimit_error" => ErrorCode::RatelimitError, + "unavailable" => ErrorCode::Unavailable, + _ => ErrorCode::Other, + }; + crate::eat_json_fields(&mut map)?; + Ok(value) + } + } + const VARIANTS: &[&str] = &["unknown_error", + "bad_request", + "api_error", + "access_error", + "ratelimit_error", + "unavailable", + "other"]; + deserializer.deserialize_struct("ErrorCode", VARIANTS, EnumVisitor) + } +} + +impl ::serde::ser::Serialize for ErrorCode { + fn serialize(&self, serializer: S) -> Result { + // union serializer + use serde::ser::SerializeStruct; + match self { + ErrorCode::UnknownError => { + // unit + let mut s = serializer.serialize_struct("ErrorCode", 1)?; + s.serialize_field(".tag", "unknown_error")?; + s.end() + } + ErrorCode::BadRequest => { + // unit + let mut s = serializer.serialize_struct("ErrorCode", 1)?; + s.serialize_field(".tag", "bad_request")?; + s.end() + } + ErrorCode::ApiError => { + // unit + let mut s = serializer.serialize_struct("ErrorCode", 1)?; + s.serialize_field(".tag", "api_error")?; + s.end() + } + ErrorCode::AccessError => { + // unit + let mut s = serializer.serialize_struct("ErrorCode", 1)?; + s.serialize_field(".tag", "access_error")?; + s.end() + } + ErrorCode::RatelimitError => { + // unit + let mut s = serializer.serialize_struct("ErrorCode", 1)?; + s.serialize_field(".tag", "ratelimit_error")?; + s.end() + } + ErrorCode::Unavailable => { + // unit + let mut s = serializer.serialize_struct("ErrorCode", 1)?; + s.serialize_field(".tag", "unavailable")?; + s.end() + } + ErrorCode::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) + } + } +} + +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // variants may be added in the future +pub enum FileIdOrUrl { + FileId(String), + Url(String), + Path(String), + /// Catch-all used for unrecognized values returned from the server. Encountering this value + /// typically indicates that this SDK version is out of date. + Other, +} + +impl<'de> ::serde::de::Deserialize<'de> for FileIdOrUrl { + fn deserialize>(deserializer: D) -> Result { + // union deserializer + use serde::de::{self, MapAccess, Visitor}; + struct EnumVisitor; + impl<'de> Visitor<'de> for EnumVisitor { + type Value = FileIdOrUrl; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a FileIdOrUrl structure") + } + fn visit_map>(self, mut map: V) -> Result { + let tag: &str = match map.next_key()? { + Some(".tag") => map.next_value()?, + _ => return Err(de::Error::missing_field(".tag")) + }; + let value = match tag { + "file_id" => { + match map.next_key()? { + Some("file_id") => FileIdOrUrl::FileId(map.next_value()?), + None => return Err(de::Error::missing_field("file_id")), + _ => return Err(de::Error::unknown_field(tag, VARIANTS)) + } + } + "url" => { + match map.next_key()? { + Some("url") => FileIdOrUrl::Url(map.next_value()?), + None => return Err(de::Error::missing_field("url")), + _ => return Err(de::Error::unknown_field(tag, VARIANTS)) + } + } + "path" => { + match map.next_key()? { + Some("path") => FileIdOrUrl::Path(map.next_value()?), + None => return Err(de::Error::missing_field("path")), + _ => return Err(de::Error::unknown_field(tag, VARIANTS)) + } + } + _ => FileIdOrUrl::Other, + }; + crate::eat_json_fields(&mut map)?; + Ok(value) + } + } + const VARIANTS: &[&str] = &["file_id", + "url", + "path", + "other"]; + deserializer.deserialize_struct("FileIdOrUrl", VARIANTS, EnumVisitor) + } +} + +impl ::serde::ser::Serialize for FileIdOrUrl { + fn serialize(&self, serializer: S) -> Result { + // union serializer + use serde::ser::SerializeStruct; + match self { + FileIdOrUrl::FileId(x) => { + // primitive + let mut s = serializer.serialize_struct("FileIdOrUrl", 2)?; + s.serialize_field(".tag", "file_id")?; + s.serialize_field("file_id", x)?; + s.end() + } + FileIdOrUrl::Url(x) => { + // primitive + let mut s = serializer.serialize_struct("FileIdOrUrl", 2)?; + s.serialize_field(".tag", "url")?; + s.serialize_field("url", x)?; + s.end() + } + FileIdOrUrl::Path(x) => { + // primitive + let mut s = serializer.serialize_struct("FileIdOrUrl", 2)?; + s.serialize_field(".tag", "path")?; + s.serialize_field("path", x)?; + s.end() + } + FileIdOrUrl::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) + } + } +} + +/// Arguments for the asynchronous `get_transcript_async` route. Exactly one of `file_id`, `path`, +/// or `url` must be supplied via `file_id_or_url` to identify the audio or video asset to +/// transcribe. +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct GetTranscriptArgs { + /// Identifier of the media asset to transcribe. Callers must set exactly one of the oneof + /// variants: - file_id: a Dropbox-issued file id (format: "id:") for a file the + /// authenticated user has access to. - path: an absolute Dropbox path, e.g. + /// "/folder/recording.mp4". - url: either a Dropbox shared link (www.dropbox.com) or an + /// external HTTPS URL pointing to a supported audio/video file. - Dropbox shared links are + /// resolved internally using the caller's authenticated identity and the link's visibility / + /// download settings. They therefore require an authenticated user context (anonymous `url` + /// requests against Dropbox links are rejected with an `ACCESS_ERROR`). Links protected by a + /// password are rejected with `shared_link_password_protected`; links with downloads disabled + /// are rejected with `link_download_disabled_error`. - External URLs are fetched over HTTPS + /// through the backend's egress proxy and must point at a supported audio/video file extension. + /// The referenced asset must be an audio or video file in a supported format; requests against + /// files with no audio track return a `no_audio_error`. + pub file_id_or_url: Option, + /// Granularity of the time offsets returned for each transcript segment. Defaults to `SENTENCE. + /// - SENTENCE: one segment per spoken sentence (recommended). - WORD: one segment per word, + /// useful for fine-grained alignment such as captioning or highlight-as-you-listen experiences. + pub timestamp_level: TimestampLevel, + /// Comma-delimited list of non-lexical filler words to preserve in the transcript output, e.g. + /// `"uh, ah, uhm"`. By default these fillers are stripped. Unrecognized tokens are ignored. + /// Leave empty to use the default filtering behavior. + pub included_special_words: String, + /// Optional BCP-47 language tag hinting the spoken language of the source audio (e.g. "en-US", + /// "ja-JP"). When empty, the service auto-detects the language; supplying a hint improves + /// accuracy and latency for short or ambiguous clips. Unsupported languages fall back to + /// auto-detection. + pub audio_language: String, +} + +impl Default for GetTranscriptArgs { + fn default() -> Self { + GetTranscriptArgs { + file_id_or_url: None, + timestamp_level: TimestampLevel::Unknown, + included_special_words: String::new(), + audio_language: String::new(), + } + } +} + +impl GetTranscriptArgs { + pub fn with_file_id_or_url(mut self, value: FileIdOrUrl) -> Self { + self.file_id_or_url = Some(value); + self + } + + pub fn with_timestamp_level(mut self, value: TimestampLevel) -> Self { + self.timestamp_level = value; + self + } + + pub fn with_included_special_words(mut self, value: String) -> Self { + self.included_special_words = value; + self + } + + pub fn with_audio_language(mut self, value: String) -> Self { + self.audio_language = value; + self + } +} + +const GET_TRANSCRIPT_ARGS_FIELDS: &[&str] = &["file_id_or_url", + "timestamp_level", + "included_special_words", + "audio_language"]; +impl GetTranscriptArgs { + // no _opt deserializer + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + ) -> Result { + let mut field_file_id_or_url = None; + let mut field_timestamp_level = None; + let mut field_included_special_words = None; + let mut field_audio_language = None; + while let Some(key) = map.next_key::<&str>()? { + match key { + "file_id_or_url" => { + if field_file_id_or_url.is_some() { + return Err(::serde::de::Error::duplicate_field("file_id_or_url")); + } + field_file_id_or_url = Some(map.next_value()?); + } + "timestamp_level" => { + if field_timestamp_level.is_some() { + return Err(::serde::de::Error::duplicate_field("timestamp_level")); + } + field_timestamp_level = Some(map.next_value()?); + } + "included_special_words" => { + if field_included_special_words.is_some() { + return Err(::serde::de::Error::duplicate_field("included_special_words")); + } + field_included_special_words = Some(map.next_value()?); + } + "audio_language" => { + if field_audio_language.is_some() { + return Err(::serde::de::Error::duplicate_field("audio_language")); + } + field_audio_language = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } + } + } + let result = GetTranscriptArgs { + file_id_or_url: field_file_id_or_url.and_then(Option::flatten), + timestamp_level: field_timestamp_level.unwrap_or(TimestampLevel::Unknown), + included_special_words: field_included_special_words.unwrap_or_default(), + audio_language: field_audio_language.unwrap_or_default(), + }; + Ok(result) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + if let Some(val) = &self.file_id_or_url { + s.serialize_field("file_id_or_url", val)?; + } + if self.timestamp_level != TimestampLevel::Unknown { + s.serialize_field("timestamp_level", &self.timestamp_level)?; + } + if !self.included_special_words.is_empty() { + s.serialize_field("included_special_words", &self.included_special_words)?; + } + if !self.audio_language.is_empty() { + s.serialize_field("audio_language", &self.audio_language)?; + } + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for GetTranscriptArgs { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = GetTranscriptArgs; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a GetTranscriptArgs struct") + } + fn visit_map>(self, map: V) -> Result { + GetTranscriptArgs::internal_deserialize(map) + } + } + deserializer.deserialize_struct("GetTranscriptArgs", GET_TRANSCRIPT_ARGS_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for GetTranscriptArgs { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("GetTranscriptArgs", 4)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +/// Result type for EventBus async check - must end in "CheckResult" +#[derive(Debug, Clone, PartialEq)] +#[non_exhaustive] // variants may be added in the future +pub enum GetTranscriptAsyncCheckResult { + InProgress, + Complete(GetTranscriptResult), + Failed(GetTranscriptAsyncError), + /// Catch-all used for unrecognized values returned from the server. Encountering this value + /// typically indicates that this SDK version is out of date. + Other, +} + +impl<'de> ::serde::de::Deserialize<'de> for GetTranscriptAsyncCheckResult { + fn deserialize>(deserializer: D) -> Result { + // union deserializer + use serde::de::{self, MapAccess, Visitor}; + struct EnumVisitor; + impl<'de> Visitor<'de> for EnumVisitor { + type Value = GetTranscriptAsyncCheckResult; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a GetTranscriptAsyncCheckResult structure") + } + fn visit_map>(self, mut map: V) -> Result { + let tag: &str = match map.next_key()? { + Some(".tag") => map.next_value()?, + _ => return Err(de::Error::missing_field(".tag")) + }; + let value = match tag { + "in_progress" => GetTranscriptAsyncCheckResult::InProgress, + "complete" => GetTranscriptAsyncCheckResult::Complete(GetTranscriptResult::internal_deserialize(&mut map)?), + "failed" => GetTranscriptAsyncCheckResult::Failed(GetTranscriptAsyncError::internal_deserialize(&mut map)?), + _ => GetTranscriptAsyncCheckResult::Other, + }; + crate::eat_json_fields(&mut map)?; + Ok(value) + } + } + const VARIANTS: &[&str] = &["in_progress", + "complete", + "failed", + "other"]; + deserializer.deserialize_struct("GetTranscriptAsyncCheckResult", VARIANTS, EnumVisitor) + } +} + +impl ::serde::ser::Serialize for GetTranscriptAsyncCheckResult { + fn serialize(&self, serializer: S) -> Result { + // union serializer + use serde::ser::SerializeStruct; + match self { + GetTranscriptAsyncCheckResult::InProgress => { + // unit + let mut s = serializer.serialize_struct("GetTranscriptAsyncCheckResult", 1)?; + s.serialize_field(".tag", "in_progress")?; + s.end() + } + GetTranscriptAsyncCheckResult::Complete(x) => { + // struct + let mut s = serializer.serialize_struct("GetTranscriptAsyncCheckResult", 2)?; + s.serialize_field(".tag", "complete")?; + x.internal_serialize::(&mut s)?; + s.end() + } + GetTranscriptAsyncCheckResult::Failed(x) => { + // struct + let mut s = serializer.serialize_struct("GetTranscriptAsyncCheckResult", 3)?; + s.serialize_field(".tag", "failed")?; + x.internal_serialize::(&mut s)?; + s.end() + } + GetTranscriptAsyncCheckResult::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) + } + } +} + +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct GetTranscriptAsyncError { + pub error_code: ErrorCode, + pub error_details: Option, +} + +impl Default for GetTranscriptAsyncError { + fn default() -> Self { + GetTranscriptAsyncError { + error_code: ErrorCode::UnknownError, + error_details: None, + } + } +} + +impl GetTranscriptAsyncError { + pub fn with_error_code(mut self, value: ErrorCode) -> Self { + self.error_code = value; + self + } + + pub fn with_error_details(mut self, value: ContentApiV2Error) -> Self { + self.error_details = Some(value); + self + } +} + +const GET_TRANSCRIPT_ASYNC_ERROR_FIELDS: &[&str] = &["error_code", + "error_details"]; +impl GetTranscriptAsyncError { + // no _opt deserializer + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + ) -> Result { + let mut field_error_code = None; + let mut field_error_details = None; + while let Some(key) = map.next_key::<&str>()? { + match key { + "error_code" => { + if field_error_code.is_some() { + return Err(::serde::de::Error::duplicate_field("error_code")); + } + field_error_code = Some(map.next_value()?); + } + "error_details" => { + if field_error_details.is_some() { + return Err(::serde::de::Error::duplicate_field("error_details")); + } + field_error_details = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } + } + } + let result = GetTranscriptAsyncError { + error_code: field_error_code.unwrap_or(ErrorCode::UnknownError), + error_details: field_error_details.and_then(Option::flatten), + }; + Ok(result) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + if self.error_code != ErrorCode::UnknownError { + s.serialize_field("error_code", &self.error_code)?; + } + if let Some(val) = &self.error_details { + s.serialize_field("error_details", val)?; + } + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for GetTranscriptAsyncError { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = GetTranscriptAsyncError; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a GetTranscriptAsyncError struct") + } + fn visit_map>(self, map: V) -> Result { + GetTranscriptAsyncError::internal_deserialize(map) + } + } + deserializer.deserialize_struct("GetTranscriptAsyncError", GET_TRANSCRIPT_ASYNC_ERROR_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for GetTranscriptAsyncError { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("GetTranscriptAsyncError", 2)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +#[derive(Debug, Clone, PartialEq, Default)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct GetTranscriptResult { + /// The structured transcript produced for the requested media asset, with per-segment text, + /// start/end offsets (in seconds from the beginning of the media), and the detected or + /// caller-supplied locale. + pub structured_transcript: Option, +} + +impl GetTranscriptResult { + pub fn with_structured_transcript(mut self, value: ApiStructuredTranscript) -> Self { + self.structured_transcript = Some(value); + self + } +} + +const GET_TRANSCRIPT_RESULT_FIELDS: &[&str] = &["structured_transcript"]; +impl GetTranscriptResult { + // no _opt deserializer + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + ) -> Result { + let mut field_structured_transcript = None; + while let Some(key) = map.next_key::<&str>()? { + match key { + "structured_transcript" => { + if field_structured_transcript.is_some() { + return Err(::serde::de::Error::duplicate_field("structured_transcript")); + } + field_structured_transcript = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } + } + } + let result = GetTranscriptResult { + structured_transcript: field_structured_transcript.and_then(Option::flatten), + }; + Ok(result) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + if let Some(val) = &self.structured_transcript { + s.serialize_field("structured_transcript", val)?; + } + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for GetTranscriptResult { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = GetTranscriptResult; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a GetTranscriptResult struct") + } + fn visit_map>(self, map: V) -> Result { + GetTranscriptResult::internal_deserialize(map) + } + } + deserializer.deserialize_struct("GetTranscriptResult", GET_TRANSCRIPT_RESULT_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for GetTranscriptResult { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("GetTranscriptResult", 1)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +#[derive(Debug, Clone, PartialEq, Eq, Default)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct MediaDurationError { + pub limit: i32, +} + +impl MediaDurationError { + pub fn with_limit(mut self, value: i32) -> Self { + self.limit = value; + self + } +} + +const MEDIA_DURATION_ERROR_FIELDS: &[&str] = &["limit"]; +impl MediaDurationError { + // no _opt deserializer + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + ) -> Result { + let mut field_limit = None; + while let Some(key) = map.next_key::<&str>()? { + match key { + "limit" => { + if field_limit.is_some() { + return Err(::serde::de::Error::duplicate_field("limit")); + } + field_limit = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } + } + } + let result = MediaDurationError { + limit: field_limit.unwrap_or(0), + }; + Ok(result) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + if self.limit != 0 { + s.serialize_field("limit", &self.limit)?; + } + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for MediaDurationError { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = MediaDurationError; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a MediaDurationError struct") + } + fn visit_map>(self, map: V) -> Result { + MediaDurationError::internal_deserialize(map) + } + } + deserializer.deserialize_struct("MediaDurationError", MEDIA_DURATION_ERROR_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for MediaDurationError { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("MediaDurationError", 1)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // variants may be added in the future +pub enum TimestampLevel { + Unknown, + Sentence, + Word, + /// Catch-all used for unrecognized values returned from the server. Encountering this value + /// typically indicates that this SDK version is out of date. + Other, +} + +impl<'de> ::serde::de::Deserialize<'de> for TimestampLevel { + fn deserialize>(deserializer: D) -> Result { + // union deserializer + use serde::de::{self, MapAccess, Visitor}; + struct EnumVisitor; + impl<'de> Visitor<'de> for EnumVisitor { + type Value = TimestampLevel; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a TimestampLevel structure") + } + fn visit_map>(self, mut map: V) -> Result { + let tag: &str = match map.next_key()? { + Some(".tag") => map.next_value()?, + _ => return Err(de::Error::missing_field(".tag")) + }; + let value = match tag { + "unknown" => TimestampLevel::Unknown, + "sentence" => TimestampLevel::Sentence, + "word" => TimestampLevel::Word, + _ => TimestampLevel::Other, + }; + crate::eat_json_fields(&mut map)?; + Ok(value) + } + } + const VARIANTS: &[&str] = &["unknown", + "sentence", + "word", + "other"]; + deserializer.deserialize_struct("TimestampLevel", VARIANTS, EnumVisitor) + } +} + +impl ::serde::ser::Serialize for TimestampLevel { + fn serialize(&self, serializer: S) -> Result { + // union serializer + use serde::ser::SerializeStruct; + match self { + TimestampLevel::Unknown => { + // unit + let mut s = serializer.serialize_struct("TimestampLevel", 1)?; + s.serialize_field(".tag", "unknown")?; + s.end() + } + TimestampLevel::Sentence => { + // unit + let mut s = serializer.serialize_struct("TimestampLevel", 1)?; + s.serialize_field(".tag", "sentence")?; + s.end() + } + TimestampLevel::Word => { + // unit + let mut s = serializer.serialize_struct("TimestampLevel", 1)?; + s.serialize_field(".tag", "word")?; + s.end() + } + TimestampLevel::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) + } + } +} + diff --git a/src/generated/types/sharing.rs b/src/generated/types/sharing.rs index 78b5ed37..736ea450 100644 --- a/src/generated/types/sharing.rs +++ b/src/generated/types/sharing.rs @@ -278,9 +278,11 @@ pub struct AddFileMemberArgs { /// invitation. pub quiet: bool, /// AccessLevel union object, describing what access level we want to give new members. - pub access_level: AccessLevel, - /// If the custom message should be added as a comment on the file. + pub access_level: Option, + /// If the custom message should be added as a comment on the file. Only meant for Paper files. pub add_message_as_comment: bool, + /// The FingerprintJS Sealed Client Result value + pub fp_sealed_result: Option, } impl AddFileMemberArgs { @@ -290,8 +292,9 @@ impl AddFileMemberArgs { members, custom_message: None, quiet: false, - access_level: AccessLevel::Viewer, + access_level: None, add_message_as_comment: false, + fp_sealed_result: None, } } @@ -306,7 +309,7 @@ impl AddFileMemberArgs { } pub fn with_access_level(mut self, value: AccessLevel) -> Self { - self.access_level = value; + self.access_level = Some(value); self } @@ -314,6 +317,11 @@ impl AddFileMemberArgs { self.add_message_as_comment = value; self } + + pub fn with_fp_sealed_result(mut self, value: String) -> Self { + self.fp_sealed_result = Some(value); + self + } } const ADD_FILE_MEMBER_ARGS_FIELDS: &[&str] = &["file", @@ -321,7 +329,8 @@ const ADD_FILE_MEMBER_ARGS_FIELDS: &[&str] = &["file", "custom_message", "quiet", "access_level", - "add_message_as_comment"]; + "add_message_as_comment", + "fp_sealed_result"]; impl AddFileMemberArgs { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, @@ -339,6 +348,7 @@ impl AddFileMemberArgs { let mut field_quiet = None; let mut field_access_level = None; let mut field_add_message_as_comment = None; + let mut field_fp_sealed_result = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; @@ -379,6 +389,12 @@ impl AddFileMemberArgs { } field_add_message_as_comment = Some(map.next_value()?); } + "fp_sealed_result" => { + if field_fp_sealed_result.is_some() { + return Err(::serde::de::Error::duplicate_field("fp_sealed_result")); + } + field_fp_sealed_result = Some(map.next_value()?); + } _ => { // unknown field allowed and ignored map.next_value::<::serde_json::Value>()?; @@ -393,8 +409,9 @@ impl AddFileMemberArgs { members: field_members.ok_or_else(|| ::serde::de::Error::missing_field("members"))?, custom_message: field_custom_message.and_then(Option::flatten), quiet: field_quiet.unwrap_or(false), - access_level: field_access_level.unwrap_or(AccessLevel::Viewer), + access_level: field_access_level.and_then(Option::flatten), add_message_as_comment: field_add_message_as_comment.unwrap_or(false), + fp_sealed_result: field_fp_sealed_result.and_then(Option::flatten), }; Ok(Some(result)) } @@ -412,12 +429,15 @@ impl AddFileMemberArgs { if self.quiet { s.serialize_field("quiet", &self.quiet)?; } - if self.access_level != AccessLevel::Viewer { - s.serialize_field("access_level", &self.access_level)?; + if let Some(val) = &self.access_level { + s.serialize_field("access_level", val)?; } if self.add_message_as_comment { s.serialize_field("add_message_as_comment", &self.add_message_as_comment)?; } + if let Some(val) = &self.fp_sealed_result { + s.serialize_field("fp_sealed_result", val)?; + } Ok(()) } } @@ -444,7 +464,7 @@ impl ::serde::ser::Serialize for AddFileMemberArgs { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("AddFileMemberArgs", 6)?; + let mut s = serializer.serialize_struct("AddFileMemberArgs", 7)?; self.internal_serialize::(&mut s)?; s.end() } @@ -460,6 +480,8 @@ pub enum AddFileMemberError { RateLimit, /// The custom message did not pass comment permissions checks. InvalidComment, + /// The current user has been banned for abuse reasons. + BannedMember, /// Catch-all used for unrecognized values returned from the server. Encountering this value /// typically indicates that this SDK version is out of date. Other, @@ -497,6 +519,7 @@ impl<'de> ::serde::de::Deserialize<'de> for AddFileMemberError { } "rate_limit" => AddFileMemberError::RateLimit, "invalid_comment" => AddFileMemberError::InvalidComment, + "banned_member" => AddFileMemberError::BannedMember, _ => AddFileMemberError::Other, }; crate::eat_json_fields(&mut map)?; @@ -507,6 +530,7 @@ impl<'de> ::serde::de::Deserialize<'de> for AddFileMemberError { "access_error", "rate_limit", "invalid_comment", + "banned_member", "other"]; deserializer.deserialize_struct("AddFileMemberError", VARIANTS, EnumVisitor) } @@ -543,6 +567,12 @@ impl ::serde::ser::Serialize for AddFileMemberError { s.serialize_field(".tag", "invalid_comment")?; s.end() } + AddFileMemberError::BannedMember => { + // unit + let mut s = serializer.serialize_struct("AddFileMemberError", 1)?; + s.serialize_field(".tag", "banned_member")?; + s.end() + } AddFileMemberError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) } } @@ -565,6 +595,7 @@ impl ::std::fmt::Display for AddFileMemberError { AddFileMemberError::AccessError(inner) => write!(f, "AddFileMemberError: {}", inner), AddFileMemberError::RateLimit => f.write_str("The user has reached the rate limit for invitations."), AddFileMemberError::InvalidComment => f.write_str("The custom message did not pass comment permissions checks."), + AddFileMemberError::BannedMember => f.write_str("The current user has been banned for abuse reasons."), _ => write!(f, "{:?}", *self), } } @@ -582,6 +613,8 @@ pub struct AddFolderMemberArg { pub quiet: bool, /// Optional message to display to added members in their invitation. pub custom_message: Option, + /// The FingerprintJS Sealed Client Result value + pub fp_sealed_result: Option, } impl AddFolderMemberArg { @@ -594,6 +627,7 @@ impl AddFolderMemberArg { members, quiet: false, custom_message: None, + fp_sealed_result: None, } } @@ -606,12 +640,18 @@ impl AddFolderMemberArg { self.custom_message = Some(value); self } + + pub fn with_fp_sealed_result(mut self, value: String) -> Self { + self.fp_sealed_result = Some(value); + self + } } const ADD_FOLDER_MEMBER_ARG_FIELDS: &[&str] = &["shared_folder_id", "members", "quiet", - "custom_message"]; + "custom_message", + "fp_sealed_result"]; impl AddFolderMemberArg { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, @@ -627,6 +667,7 @@ impl AddFolderMemberArg { let mut field_members = None; let mut field_quiet = None; let mut field_custom_message = None; + let mut field_fp_sealed_result = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; @@ -655,6 +696,12 @@ impl AddFolderMemberArg { } field_custom_message = Some(map.next_value()?); } + "fp_sealed_result" => { + if field_fp_sealed_result.is_some() { + return Err(::serde::de::Error::duplicate_field("fp_sealed_result")); + } + field_fp_sealed_result = Some(map.next_value()?); + } _ => { // unknown field allowed and ignored map.next_value::<::serde_json::Value>()?; @@ -669,6 +716,7 @@ impl AddFolderMemberArg { members: field_members.ok_or_else(|| ::serde::de::Error::missing_field("members"))?, quiet: field_quiet.unwrap_or(false), custom_message: field_custom_message.and_then(Option::flatten), + fp_sealed_result: field_fp_sealed_result.and_then(Option::flatten), }; Ok(Some(result)) } @@ -686,6 +734,9 @@ impl AddFolderMemberArg { if let Some(val) = &self.custom_message { s.serialize_field("custom_message", val)?; } + if let Some(val) = &self.fp_sealed_result { + s.serialize_field("fp_sealed_result", val)?; + } Ok(()) } } @@ -712,7 +763,7 @@ impl ::serde::ser::Serialize for AddFolderMemberArg { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("AddFolderMemberArg", 4)?; + let mut s = serializer.serialize_struct("AddFolderMemberArg", 5)?; self.internal_serialize::(&mut s)?; s.end() } @@ -963,19 +1014,19 @@ pub struct AddMember { pub member: MemberSelector, /// The access level to grant `member` to the shared folder. [`AccessLevel::Owner`] is /// disallowed. - pub access_level: AccessLevel, + pub access_level: Option, } impl AddMember { pub fn new(member: MemberSelector) -> Self { AddMember { member, - access_level: AccessLevel::Viewer, + access_level: None, } } pub fn with_access_level(mut self, value: AccessLevel) -> Self { - self.access_level = value; + self.access_level = Some(value); self } } @@ -1022,7 +1073,7 @@ impl AddMember { } let result = AddMember { member: field_member.ok_or_else(|| ::serde::de::Error::missing_field("member"))?, - access_level: field_access_level.unwrap_or(AccessLevel::Viewer), + access_level: field_access_level.and_then(Option::flatten), }; Ok(Some(result)) } @@ -1033,8 +1084,8 @@ impl AddMember { ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; s.serialize_field("member", &self.member)?; - if self.access_level != AccessLevel::Viewer { - s.serialize_field("access_level", &self.access_level)?; + if let Some(val) = &self.access_level { + s.serialize_field("access_level", val)?; } Ok(()) } @@ -1077,6 +1128,8 @@ pub enum AddMemberSelectorError { InvalidDropboxId(DropboxId), /// The value is the e-email address that is malformed. InvalidEmail(crate::types::common::EmailAddress), + /// Provided group is invalid. + InvalidGroup, /// The value is the ID of the Dropbox user with an unverified email address. Invite unverified /// users by email address instead of by their Dropbox ID. UnverifiedDropboxId(DropboxId), @@ -1121,6 +1174,7 @@ impl<'de> ::serde::de::Deserialize<'de> for AddMemberSelectorError { _ => return Err(de::Error::unknown_field(tag, VARIANTS)) } } + "invalid_group" => AddMemberSelectorError::InvalidGroup, "unverified_dropbox_id" => { match map.next_key()? { Some("unverified_dropbox_id") => AddMemberSelectorError::UnverifiedDropboxId(map.next_value()?), @@ -1139,6 +1193,7 @@ impl<'de> ::serde::de::Deserialize<'de> for AddMemberSelectorError { const VARIANTS: &[&str] = &["automatic_group", "invalid_dropbox_id", "invalid_email", + "invalid_group", "unverified_dropbox_id", "group_deleted", "group_not_on_team", @@ -1172,6 +1227,12 @@ impl ::serde::ser::Serialize for AddMemberSelectorError { s.serialize_field("invalid_email", x)?; s.end() } + AddMemberSelectorError::InvalidGroup => { + // unit + let mut s = serializer.serialize_struct("AddMemberSelectorError", 1)?; + s.serialize_field(".tag", "invalid_group")?; + s.end() + } AddMemberSelectorError::UnverifiedDropboxId(x) => { // primitive let mut s = serializer.serialize_struct("AddMemberSelectorError", 2)?; @@ -1205,6 +1266,7 @@ impl ::std::fmt::Display for AddMemberSelectorError { AddMemberSelectorError::AutomaticGroup => f.write_str("Automatically created groups can only be added to team folders."), AddMemberSelectorError::InvalidDropboxId(inner) => write!(f, "The value is the ID that could not be identified: {:?}", inner), AddMemberSelectorError::InvalidEmail(inner) => write!(f, "The value is the e-email address that is malformed: {:?}", inner), + AddMemberSelectorError::InvalidGroup => f.write_str("Provided group is invalid."), AddMemberSelectorError::UnverifiedDropboxId(inner) => write!(f, "The value is the ID of the Dropbox user with an unverified email address. Invite unverified users by email address instead of by their Dropbox ID: {:?}", inner), AddMemberSelectorError::GroupNotOnTeam => f.write_str("Sharing to a group that is not on the current user's team."), _ => write!(f, "{:?}", *self), @@ -1669,6 +1731,70 @@ impl ::serde::ser::Serialize for AudienceRestrictingSharedFolder { } } +/// Enumerates acceptable values for team's ChangeLinkExpirationPolicy setting. +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // variants may be added in the future +pub enum ChangeLinkExpirationPolicy { + Allowed, + NotAllowed, + /// Catch-all used for unrecognized values returned from the server. Encountering this value + /// typically indicates that this SDK version is out of date. + Other, +} + +impl<'de> ::serde::de::Deserialize<'de> for ChangeLinkExpirationPolicy { + fn deserialize>(deserializer: D) -> Result { + // union deserializer + use serde::de::{self, MapAccess, Visitor}; + struct EnumVisitor; + impl<'de> Visitor<'de> for EnumVisitor { + type Value = ChangeLinkExpirationPolicy; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a ChangeLinkExpirationPolicy structure") + } + fn visit_map>(self, mut map: V) -> Result { + let tag: &str = match map.next_key()? { + Some(".tag") => map.next_value()?, + _ => return Err(de::Error::missing_field(".tag")) + }; + let value = match tag { + "allowed" => ChangeLinkExpirationPolicy::Allowed, + "not_allowed" => ChangeLinkExpirationPolicy::NotAllowed, + _ => ChangeLinkExpirationPolicy::Other, + }; + crate::eat_json_fields(&mut map)?; + Ok(value) + } + } + const VARIANTS: &[&str] = &["allowed", + "not_allowed", + "other"]; + deserializer.deserialize_struct("ChangeLinkExpirationPolicy", VARIANTS, EnumVisitor) + } +} + +impl ::serde::ser::Serialize for ChangeLinkExpirationPolicy { + fn serialize(&self, serializer: S) -> Result { + // union serializer + use serde::ser::SerializeStruct; + match self { + ChangeLinkExpirationPolicy::Allowed => { + // unit + let mut s = serializer.serialize_struct("ChangeLinkExpirationPolicy", 1)?; + s.serialize_field(".tag", "allowed")?; + s.end() + } + ChangeLinkExpirationPolicy::NotAllowed => { + // unit + let mut s = serializer.serialize_struct("ChangeLinkExpirationPolicy", 1)?; + s.serialize_field(".tag", "not_allowed")?; + s.end() + } + ChangeLinkExpirationPolicy::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) + } + } +} + /// Metadata for a collection-based shared link. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. @@ -2130,15 +2256,23 @@ pub enum CreateSharedLinkWithSettingsError { /// [here](https://www.dropbox.com/help/317). EmailNotVerified, /// The shared link already exists. You can call - /// [`list_shared_links()`](crate::sharing::list_shared_links) to get the existing link, or use - /// the provided metadata if it is returned. + /// [`list_shared_links()`](crate::sharing::list_shared_links) to get the existing link, or use + /// the provided metadata if it is returned. Existing link metadata will not be returned if + /// custom settings were specified in the request that could make the existing link incompatible + /// with the requested settings. SharedLinkAlreadyExists(Option), /// There is an error with the given settings. SettingsError(SharedLinkSettingsError), - /// The user is not allowed to create a shared link to the specified file. For example, this - /// can occur if the file is restricted or if the user's links are + /// The user is not allowed to create a shared link to the specified file. For example, this can + /// occur if the file is restricted or if the user's links are /// [banned](https://help.dropbox.com/files-folders/share/banned-links). AccessDenied, + /// The current user has been + /// [banned](https://help.dropbox.com/files-folders/share/banned-links) for abuse reasons. + BannedMember, + /// Your Dropbox folder will have too many shared folders after the operation. + /// https://help.dropbox.com/share/shared-folder-faq#Is-there-a-limit-to-the-number-of-shared-folders-I-can-create + TooManySharedFolders, } impl<'de> ::serde::de::Deserialize<'de> for CreateSharedLinkWithSettingsError { @@ -2180,6 +2314,8 @@ impl<'de> ::serde::de::Deserialize<'de> for CreateSharedLinkWithSettingsError { } } "access_denied" => CreateSharedLinkWithSettingsError::AccessDenied, + "banned_member" => CreateSharedLinkWithSettingsError::BannedMember, + "too_many_shared_folders" => CreateSharedLinkWithSettingsError::TooManySharedFolders, _ => return Err(de::Error::unknown_variant(tag, VARIANTS)) }; crate::eat_json_fields(&mut map)?; @@ -2190,7 +2326,9 @@ impl<'de> ::serde::de::Deserialize<'de> for CreateSharedLinkWithSettingsError { "email_not_verified", "shared_link_already_exists", "settings_error", - "access_denied"]; + "access_denied", + "banned_member", + "too_many_shared_folders"]; deserializer.deserialize_struct("CreateSharedLinkWithSettingsError", VARIANTS, EnumVisitor) } } @@ -2233,6 +2371,18 @@ impl ::serde::ser::Serialize for CreateSharedLinkWithSettingsError { s.serialize_field(".tag", "access_denied")?; s.end() } + CreateSharedLinkWithSettingsError::BannedMember => { + // unit + let mut s = serializer.serialize_struct("CreateSharedLinkWithSettingsError", 1)?; + s.serialize_field(".tag", "banned_member")?; + s.end() + } + CreateSharedLinkWithSettingsError::TooManySharedFolders => { + // unit + let mut s = serializer.serialize_struct("CreateSharedLinkWithSettingsError", 1)?; + s.serialize_field(".tag", "too_many_shared_folders")?; + s.end() + } } } } @@ -2254,6 +2404,7 @@ impl ::std::fmt::Display for CreateSharedLinkWithSettingsError { CreateSharedLinkWithSettingsError::SharedLinkAlreadyExists(None) => f.write_str("shared_link_already_exists"), CreateSharedLinkWithSettingsError::SharedLinkAlreadyExists(Some(inner)) => write!(f, "shared_link_already_exists: {:?}", inner), CreateSharedLinkWithSettingsError::SettingsError(inner) => write!(f, "There is an error with the given settings: {}", inner), + CreateSharedLinkWithSettingsError::TooManySharedFolders => f.write_str("Your Dropbox folder will have too many shared folders after the operation. https://help.dropbox.com/share/shared-folder-faq#Is-there-a-limit-to-the-number-of-shared-folders-I-can-create"), _ => write!(f, "{:?}", *self), } } @@ -2279,7 +2430,7 @@ pub struct ExpectedSharedContentLinkMetadata { pub access_level: Option, /// The shared folder that prevents the link audience for this link from being more restrictive. pub audience_restricting_shared_folder: Option, - /// Whether the link has an expiry set on it. A link with an expiry will have its audience + /// Whether the link has an expiry set on it. A link with an expiry will have its audience /// changed to members when the expiry is reached. pub expiry: Option, } @@ -2766,10 +2917,11 @@ pub struct FileLinkMetadata { /// Expiration time, if set. By default the link won't expire. pub expires: Option, /// The lowercased full path in the user's Dropbox. This always starts with a slash. This field - /// will only be present only if the linked file is in the authenticated user's dropbox. + /// will only be present only if the linked file is in the authenticated user's dropbox and the + /// user is the owner of the link. pub path_lower: Option, - /// The team membership information of the link's owner. This field will only be present if - /// the link's owner is a team member. + /// The team membership information of the link's owner. This field will only be present if the + /// link's owner is a team member. pub team_member_info: Option, /// The team information of the content's owner. This field will only be present if the /// content's owner is a team member and the content's owner team is different from the link's @@ -3593,10 +3745,14 @@ pub enum FolderAction { Unshare, /// Keep a copy of the contents upon leaving or being kicked from the folder. LeaveACopy, - /// Use create_link instead. + /// Use create_view_link and create_edit_link instead. ShareLink, - /// Create a shared link for folder. + /// Use create_view_link and create_edit_link instead. CreateLink, + /// Create a shared link that only allows users to view the content. + CreateViewLink, + /// Create a shared link that allows users to edit the content. + CreateEditLink, /// Set whether the folder inherits permissions from its parent. SetAccessInheritance, /// Catch-all used for unrecognized values returned from the server. Encountering this value @@ -3633,6 +3789,8 @@ impl<'de> ::serde::de::Deserialize<'de> for FolderAction { "leave_a_copy" => FolderAction::LeaveACopy, "share_link" => FolderAction::ShareLink, "create_link" => FolderAction::CreateLink, + "create_view_link" => FolderAction::CreateViewLink, + "create_edit_link" => FolderAction::CreateEditLink, "set_access_inheritance" => FolderAction::SetAccessInheritance, _ => FolderAction::Other, }; @@ -3653,6 +3811,8 @@ impl<'de> ::serde::de::Deserialize<'de> for FolderAction { "leave_a_copy", "share_link", "create_link", + "create_view_link", + "create_edit_link", "set_access_inheritance", "other"]; deserializer.deserialize_struct("FolderAction", VARIANTS, EnumVisitor) @@ -3742,6 +3902,18 @@ impl ::serde::ser::Serialize for FolderAction { s.serialize_field(".tag", "create_link")?; s.end() } + FolderAction::CreateViewLink => { + // unit + let mut s = serializer.serialize_struct("FolderAction", 1)?; + s.serialize_field(".tag", "create_view_link")?; + s.end() + } + FolderAction::CreateEditLink => { + // unit + let mut s = serializer.serialize_struct("FolderAction", 1)?; + s.serialize_field(".tag", "create_edit_link")?; + s.end() + } FolderAction::SetAccessInheritance => { // unit let mut s = serializer.serialize_struct("FolderAction", 1)?; @@ -3768,10 +3940,11 @@ pub struct FolderLinkMetadata { /// Expiration time, if set. By default the link won't expire. pub expires: Option, /// The lowercased full path in the user's Dropbox. This always starts with a slash. This field - /// will only be present only if the linked file is in the authenticated user's dropbox. + /// will only be present only if the linked file is in the authenticated user's dropbox and the + /// user is the owner of the link. pub path_lower: Option, - /// The team membership information of the link's owner. This field will only be present if - /// the link's owner is a team member. + /// The team membership information of the link's owner. This field will only be present if the + /// link's owner is a team member. pub team_member_info: Option, /// The team information of the content's owner. This field will only be present if the /// content's owner is a team member and the content's owner team is different from the link's @@ -4284,7 +4457,7 @@ pub struct GetFileMetadataArg { pub file: PathOrId, /// A list of `FileAction`s corresponding to `FilePermission`s that should appear in the /// response's [`SharedFileMetadata::permissions`](SharedFileMetadata) field describing the - /// actions the authenticated user can perform on the file. + /// actions the authenticated user can perform on the file. pub actions: Option>, } @@ -4398,7 +4571,7 @@ pub struct GetFileMetadataBatchArg { pub files: Vec, /// A list of `FileAction`s corresponding to `FilePermission`s that should appear in the /// response's [`SharedFileMetadata::permissions`](SharedFileMetadata) field describing the - /// actions the authenticated user can perform on the file. + /// actions the authenticated user can perform on the file. pub actions: Option>, } @@ -4788,7 +4961,7 @@ pub struct GetMetadataArgs { pub shared_folder_id: crate::types::common::SharedFolderId, /// A list of `FolderAction`s corresponding to `FolderPermission`s that should appear in the /// response's [`SharedFolderMetadata::permissions`](SharedFolderMetadata) field describing the - /// actions the authenticated user can perform on the folder. + /// actions the authenticated user can perform on the folder. pub actions: Option>, } @@ -4903,6 +5076,8 @@ pub enum GetSharedLinkFileError { SharedLinkAccessDenied, /// This type of link is not supported; use [`files::export()`](crate::files::export) instead. UnsupportedLinkType, + /// Private shared links do not support `path` or `link_password` parameter fields. + UnsupportedParameterField, /// Directories cannot be retrieved by this endpoint. SharedLinkIsDirectory, /// Catch-all used for unrecognized values returned from the server. Encountering this value @@ -4929,6 +5104,7 @@ impl<'de> ::serde::de::Deserialize<'de> for GetSharedLinkFileError { "shared_link_not_found" => GetSharedLinkFileError::SharedLinkNotFound, "shared_link_access_denied" => GetSharedLinkFileError::SharedLinkAccessDenied, "unsupported_link_type" => GetSharedLinkFileError::UnsupportedLinkType, + "unsupported_parameter_field" => GetSharedLinkFileError::UnsupportedParameterField, "shared_link_is_directory" => GetSharedLinkFileError::SharedLinkIsDirectory, _ => GetSharedLinkFileError::Other, }; @@ -4939,6 +5115,7 @@ impl<'de> ::serde::de::Deserialize<'de> for GetSharedLinkFileError { const VARIANTS: &[&str] = &["shared_link_not_found", "shared_link_access_denied", "unsupported_link_type", + "unsupported_parameter_field", "other", "shared_link_is_directory"]; deserializer.deserialize_struct("GetSharedLinkFileError", VARIANTS, EnumVisitor) @@ -4968,6 +5145,12 @@ impl ::serde::ser::Serialize for GetSharedLinkFileError { s.serialize_field(".tag", "unsupported_link_type")?; s.end() } + GetSharedLinkFileError::UnsupportedParameterField => { + // unit + let mut s = serializer.serialize_struct("GetSharedLinkFileError", 1)?; + s.serialize_field(".tag", "unsupported_parameter_field")?; + s.end() + } GetSharedLinkFileError::SharedLinkIsDirectory => { // unit let mut s = serializer.serialize_struct("GetSharedLinkFileError", 1)?; @@ -4987,6 +5170,7 @@ impl ::std::fmt::Display for GetSharedLinkFileError { match self { GetSharedLinkFileError::SharedLinkNotFound => f.write_str("The shared link wasn't found."), GetSharedLinkFileError::SharedLinkAccessDenied => f.write_str("The caller is not allowed to access this shared link."), + GetSharedLinkFileError::UnsupportedParameterField => f.write_str("Private shared links do not support `path` or `link_password` parameter fields."), GetSharedLinkFileError::SharedLinkIsDirectory => f.write_str("Directories cannot be retrieved by this endpoint."), _ => write!(f, "{:?}", *self), } @@ -5000,6 +5184,7 @@ impl From for GetSharedLinkFileError { SharedLinkError::SharedLinkNotFound => GetSharedLinkFileError::SharedLinkNotFound, SharedLinkError::SharedLinkAccessDenied => GetSharedLinkFileError::SharedLinkAccessDenied, SharedLinkError::UnsupportedLinkType => GetSharedLinkFileError::UnsupportedLinkType, + SharedLinkError::UnsupportedParameterField => GetSharedLinkFileError::UnsupportedParameterField, SharedLinkError::Other => GetSharedLinkFileError::Other, } } @@ -5384,7 +5569,7 @@ impl ::serde::ser::Serialize for GetSharedLinksResult { } } -/// The information about a group. Groups is a way to manage a list of users who need same access +/// The information about a group. Groups is a way to manage a list of users who need same access /// permission to the shared folder. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. @@ -5630,7 +5815,7 @@ pub struct GroupMembershipInfo { pub permissions: Option>, /// Never set. pub initials: Option, - /// True if the member has access from a parent folder. + /// True if the member has access on a parent folder. pub is_inherited: bool, } @@ -6100,7 +6285,7 @@ pub struct InviteeMembershipInfo { pub permissions: Option>, /// Never set. pub initials: Option, - /// True if the member has access from a parent folder. + /// True if the member has access on a parent folder. pub is_inherited: bool, /// The user this invitation is tied to, if available. pub user: Option, @@ -7396,6 +7581,22 @@ pub struct LinkPermissions { pub require_password: Option, /// Whether the user can use extended sharing controls, based on their account type. pub can_use_extended_sharing_controls: Option, + /// Whether a user can save the content to their Dropbox account. + pub can_sync: Option, + /// Whether the user can request access to the content. + pub can_request_access: Option, + /// Whether the updated externally available shared link must have password set. Not provided if + /// the link is not team owned. + pub enforce_shared_link_password_policy: Option, + /// Existing owning team's policy for default number of days from today to link's expiration. + /// Not provided if the link is not team owned. + pub days_to_expire_policy: Option, + /// When owning team's policy `change_shared_link_expiration_policy` is + /// [`ChangeLinkExpirationPolicy::NotAllowed`], the updated externally available shared link + /// expiration value cannot be less strict than `days_to_expire_policy`. In this case + /// `days_to_expire_policy` is expected to be different from `none`. Not provided if the link is + /// not team owned. + pub change_shared_link_expiration_policy: Option, } impl LinkPermissions { @@ -7430,6 +7631,11 @@ impl LinkPermissions { can_remove_password: None, require_password: None, can_use_extended_sharing_controls: None, + can_sync: None, + can_request_access: None, + enforce_shared_link_password_policy: None, + days_to_expire_policy: None, + change_shared_link_expiration_policy: None, } } @@ -7482,6 +7688,40 @@ impl LinkPermissions { self.can_use_extended_sharing_controls = Some(value); self } + + pub fn with_can_sync(mut self, value: bool) -> Self { + self.can_sync = Some(value); + self + } + + pub fn with_can_request_access(mut self, value: bool) -> Self { + self.can_request_access = Some(value); + self + } + + pub fn with_enforce_shared_link_password_policy( + mut self, + value: crate::types::team_policies::EnforceLinkPasswordPolicy, + ) -> Self { + self.enforce_shared_link_password_policy = Some(value); + self + } + + pub fn with_days_to_expire_policy( + mut self, + value: crate::types::team_policies::DefaultLinkExpirationDaysPolicy, + ) -> Self { + self.days_to_expire_policy = Some(value); + self + } + + pub fn with_change_shared_link_expiration_policy( + mut self, + value: ChangeLinkExpirationPolicy, + ) -> Self { + self.change_shared_link_expiration_policy = Some(value); + self + } } const LINK_PERMISSIONS_FIELDS: &[&str] = &["can_revoke", @@ -7502,7 +7742,12 @@ const LINK_PERMISSIONS_FIELDS: &[&str] = &["can_revoke", "can_set_password", "can_remove_password", "require_password", - "can_use_extended_sharing_controls"]; + "can_use_extended_sharing_controls", + "can_sync", + "can_request_access", + "enforce_shared_link_password_policy", + "days_to_expire_policy", + "change_shared_link_expiration_policy"]; impl LinkPermissions { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, @@ -7533,6 +7778,11 @@ impl LinkPermissions { let mut field_can_remove_password = None; let mut field_require_password = None; let mut field_can_use_extended_sharing_controls = None; + let mut field_can_sync = None; + let mut field_can_request_access = None; + let mut field_enforce_shared_link_password_policy = None; + let mut field_days_to_expire_policy = None; + let mut field_change_shared_link_expiration_policy = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; @@ -7651,6 +7901,36 @@ impl LinkPermissions { } field_can_use_extended_sharing_controls = Some(map.next_value()?); } + "can_sync" => { + if field_can_sync.is_some() { + return Err(::serde::de::Error::duplicate_field("can_sync")); + } + field_can_sync = Some(map.next_value()?); + } + "can_request_access" => { + if field_can_request_access.is_some() { + return Err(::serde::de::Error::duplicate_field("can_request_access")); + } + field_can_request_access = Some(map.next_value()?); + } + "enforce_shared_link_password_policy" => { + if field_enforce_shared_link_password_policy.is_some() { + return Err(::serde::de::Error::duplicate_field("enforce_shared_link_password_policy")); + } + field_enforce_shared_link_password_policy = Some(map.next_value()?); + } + "days_to_expire_policy" => { + if field_days_to_expire_policy.is_some() { + return Err(::serde::de::Error::duplicate_field("days_to_expire_policy")); + } + field_days_to_expire_policy = Some(map.next_value()?); + } + "change_shared_link_expiration_policy" => { + if field_change_shared_link_expiration_policy.is_some() { + return Err(::serde::de::Error::duplicate_field("change_shared_link_expiration_policy")); + } + field_change_shared_link_expiration_policy = Some(map.next_value()?); + } _ => { // unknown field allowed and ignored map.next_value::<::serde_json::Value>()?; @@ -7680,6 +7960,11 @@ impl LinkPermissions { can_remove_password: field_can_remove_password.and_then(Option::flatten), require_password: field_require_password.and_then(Option::flatten), can_use_extended_sharing_controls: field_can_use_extended_sharing_controls.and_then(Option::flatten), + can_sync: field_can_sync.and_then(Option::flatten), + can_request_access: field_can_request_access.and_then(Option::flatten), + enforce_shared_link_password_policy: field_enforce_shared_link_password_policy.and_then(Option::flatten), + days_to_expire_policy: field_days_to_expire_policy.and_then(Option::flatten), + change_shared_link_expiration_policy: field_change_shared_link_expiration_policy.and_then(Option::flatten), }; Ok(Some(result)) } @@ -7728,6 +8013,21 @@ impl LinkPermissions { if let Some(val) = &self.can_use_extended_sharing_controls { s.serialize_field("can_use_extended_sharing_controls", val)?; } + if let Some(val) = &self.can_sync { + s.serialize_field("can_sync", val)?; + } + if let Some(val) = &self.can_request_access { + s.serialize_field("can_request_access", val)?; + } + if let Some(val) = &self.enforce_shared_link_password_policy { + s.serialize_field("enforce_shared_link_password_policy", val)?; + } + if let Some(val) = &self.days_to_expire_policy { + s.serialize_field("days_to_expire_policy", val)?; + } + if let Some(val) = &self.change_shared_link_expiration_policy { + s.serialize_field("change_shared_link_expiration_policy", val)?; + } Ok(()) } } @@ -7754,7 +8054,7 @@ impl ::serde::ser::Serialize for LinkPermissions { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("LinkPermissions", 19)?; + let mut s = serializer.serialize_struct("LinkPermissions", 24)?; self.internal_serialize::(&mut s)?; s.end() } @@ -8058,7 +8358,7 @@ impl ::serde::ser::Serialize for ListFileMembersArg { pub struct ListFileMembersBatchArg { /// Files for which to return members. pub files: Vec, - /// Number of members to return max per query. Defaults to 10 if no limit is specified. + /// Number of members to return max per query. Defaults to 1000 if no limit is specified. pub limit: u32, } @@ -8066,7 +8366,7 @@ impl ListFileMembersBatchArg { pub fn new(files: Vec) -> Self { ListFileMembersBatchArg { files, - limit: 10, + limit: 1000, } } @@ -8118,7 +8418,7 @@ impl ListFileMembersBatchArg { } let result = ListFileMembersBatchArg { files: field_files.ok_or_else(|| ::serde::de::Error::missing_field("files"))?, - limit: field_limit.unwrap_or(10), + limit: field_limit.unwrap_or(1000), }; Ok(Some(result)) } @@ -8129,7 +8429,7 @@ impl ListFileMembersBatchArg { ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; s.serialize_field("files", &self.files)?; - if self.limit != 10 { + if self.limit != 1000 { s.serialize_field("limit", &self.limit)?; } Ok(()) @@ -8755,7 +9055,7 @@ pub struct ListFilesArg { pub limit: u32, /// A list of `FileAction`s corresponding to `FilePermission`s that should appear in the /// response's [`SharedFileMetadata::permissions`](SharedFileMetadata) field describing the - /// actions the authenticated user can perform on the file. + /// actions the authenticated user can perform on the file. pub actions: Option>, } @@ -9158,7 +9458,8 @@ impl ::serde::ser::Serialize for ListFilesResult { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. pub struct ListFolderMembersArgs { - /// The ID for the shared folder. + /// The ID for the shared folder. When path is provided, the folder ID will be extracted from + /// the path instead. pub shared_folder_id: crate::types::common::SharedFolderId, /// This is a list indicating whether each returned member will include a boolean value /// [`MemberPermission::allow`](MemberPermission) that describes whether the current user can @@ -9167,6 +9468,10 @@ pub struct ListFolderMembersArgs { /// The maximum number of results that include members, groups and invitees to return per /// request. pub limit: u32, + /// Optional path to get inherited members. When omitted, uses shared_folder_id to return direct + /// members. When provided, extracts folder ID from this path and returns users who have access + /// through parent shared folder. + pub path: Option, } impl ListFolderMembersArgs { @@ -9175,6 +9480,7 @@ impl ListFolderMembersArgs { shared_folder_id, actions: None, limit: 1000, + path: None, } } @@ -9187,11 +9493,17 @@ impl ListFolderMembersArgs { self.limit = value; self } + + pub fn with_path(mut self, value: String) -> Self { + self.path = Some(value); + self + } } const LIST_FOLDER_MEMBERS_ARGS_FIELDS: &[&str] = &["shared_folder_id", "actions", - "limit"]; + "limit", + "path"]; impl ListFolderMembersArgs { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, @@ -9206,6 +9518,7 @@ impl ListFolderMembersArgs { let mut field_shared_folder_id = None; let mut field_actions = None; let mut field_limit = None; + let mut field_path = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; @@ -9228,6 +9541,12 @@ impl ListFolderMembersArgs { } field_limit = Some(map.next_value()?); } + "path" => { + if field_path.is_some() { + return Err(::serde::de::Error::duplicate_field("path")); + } + field_path = Some(map.next_value()?); + } _ => { // unknown field allowed and ignored map.next_value::<::serde_json::Value>()?; @@ -9241,6 +9560,7 @@ impl ListFolderMembersArgs { shared_folder_id: field_shared_folder_id.ok_or_else(|| ::serde::de::Error::missing_field("shared_folder_id"))?, actions: field_actions.and_then(Option::flatten), limit: field_limit.unwrap_or(1000), + path: field_path.and_then(Option::flatten), }; Ok(Some(result)) } @@ -9257,6 +9577,9 @@ impl ListFolderMembersArgs { if self.limit != 1000 { s.serialize_field("limit", &self.limit)?; } + if let Some(val) = &self.path { + s.serialize_field("path", val)?; + } Ok(()) } } @@ -9283,7 +9606,7 @@ impl ::serde::ser::Serialize for ListFolderMembersArgs { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("ListFolderMembersArgs", 3)?; + let mut s = serializer.serialize_struct("ListFolderMembersArgs", 4)?; self.internal_serialize::(&mut s)?; s.end() } @@ -9599,7 +9922,7 @@ pub struct ListFoldersArgs { pub limit: u32, /// A list of `FolderAction`s corresponding to `FolderPermission`s that should appear in the /// response's [`SharedFolderMetadata::permissions`](SharedFolderMetadata) field describing the - /// actions the authenticated user can perform on the folder. + /// actions the authenticated user can perform on the folder. pub actions: Option>, } @@ -10675,6 +10998,8 @@ pub enum MemberPolicy { Team, /// Anyone can become a member. Anyone, + /// Only a teammate and approved people can become a member. + TeamAndApproved, /// Catch-all used for unrecognized values returned from the server. Encountering this value /// typically indicates that this SDK version is out of date. Other, @@ -10698,6 +11023,7 @@ impl<'de> ::serde::de::Deserialize<'de> for MemberPolicy { let value = match tag { "team" => MemberPolicy::Team, "anyone" => MemberPolicy::Anyone, + "team_and_approved" => MemberPolicy::TeamAndApproved, _ => MemberPolicy::Other, }; crate::eat_json_fields(&mut map)?; @@ -10706,6 +11032,7 @@ impl<'de> ::serde::de::Deserialize<'de> for MemberPolicy { } const VARIANTS: &[&str] = &["team", "anyone", + "team_and_approved", "other"]; deserializer.deserialize_struct("MemberPolicy", VARIANTS, EnumVisitor) } @@ -10728,6 +11055,12 @@ impl ::serde::ser::Serialize for MemberPolicy { s.serialize_field(".tag", "anyone")?; s.end() } + MemberPolicy::TeamAndApproved => { + // unit + let mut s = serializer.serialize_struct("MemberPolicy", 1)?; + s.serialize_field(".tag", "team_and_approved")?; + s.end() + } MemberPolicy::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) } } @@ -10825,7 +11158,7 @@ pub struct MembershipInfo { pub permissions: Option>, /// Never set. pub initials: Option, - /// True if the member has access from a parent folder. + /// True if the member has access on a parent folder. pub is_inherited: bool, } @@ -11100,6 +11433,8 @@ pub enum ModifySharedLinkSettingsError { SharedLinkAccessDenied, /// This type of link is not supported; use [`files::export()`](crate::files::export) instead. UnsupportedLinkType, + /// Private shared links do not support `path` or `link_password` parameter fields. + UnsupportedParameterField, /// There is an error with the given settings. SettingsError(SharedLinkSettingsError), /// This user's email address is not verified. This functionality is only available on accounts @@ -11130,6 +11465,7 @@ impl<'de> ::serde::de::Deserialize<'de> for ModifySharedLinkSettingsError { "shared_link_not_found" => ModifySharedLinkSettingsError::SharedLinkNotFound, "shared_link_access_denied" => ModifySharedLinkSettingsError::SharedLinkAccessDenied, "unsupported_link_type" => ModifySharedLinkSettingsError::UnsupportedLinkType, + "unsupported_parameter_field" => ModifySharedLinkSettingsError::UnsupportedParameterField, "settings_error" => { match map.next_key()? { Some("settings_error") => ModifySharedLinkSettingsError::SettingsError(map.next_value()?), @@ -11147,6 +11483,7 @@ impl<'de> ::serde::de::Deserialize<'de> for ModifySharedLinkSettingsError { const VARIANTS: &[&str] = &["shared_link_not_found", "shared_link_access_denied", "unsupported_link_type", + "unsupported_parameter_field", "other", "settings_error", "email_not_verified"]; @@ -11177,6 +11514,12 @@ impl ::serde::ser::Serialize for ModifySharedLinkSettingsError { s.serialize_field(".tag", "unsupported_link_type")?; s.end() } + ModifySharedLinkSettingsError::UnsupportedParameterField => { + // unit + let mut s = serializer.serialize_struct("ModifySharedLinkSettingsError", 1)?; + s.serialize_field(".tag", "unsupported_parameter_field")?; + s.end() + } ModifySharedLinkSettingsError::SettingsError(x) => { // union or polymporphic struct let mut s = serializer.serialize_struct("ModifySharedLinkSettingsError", 2)?; @@ -11209,6 +11552,7 @@ impl ::std::fmt::Display for ModifySharedLinkSettingsError { match self { ModifySharedLinkSettingsError::SharedLinkNotFound => f.write_str("The shared link wasn't found."), ModifySharedLinkSettingsError::SharedLinkAccessDenied => f.write_str("The caller is not allowed to access this shared link."), + ModifySharedLinkSettingsError::UnsupportedParameterField => f.write_str("Private shared links do not support `path` or `link_password` parameter fields."), ModifySharedLinkSettingsError::SettingsError(inner) => write!(f, "There is an error with the given settings: {}", inner), _ => write!(f, "{:?}", *self), } @@ -11222,6 +11566,7 @@ impl From for ModifySharedLinkSettingsError { SharedLinkError::SharedLinkNotFound => ModifySharedLinkSettingsError::SharedLinkNotFound, SharedLinkError::SharedLinkAccessDenied => ModifySharedLinkSettingsError::SharedLinkAccessDenied, SharedLinkError::UnsupportedLinkType => ModifySharedLinkSettingsError::UnsupportedLinkType, + SharedLinkError::UnsupportedParameterField => ModifySharedLinkSettingsError::UnsupportedParameterField, SharedLinkError::Other => ModifySharedLinkSettingsError::Other, } } @@ -11332,6 +11677,9 @@ pub enum MountFolderError { /// The shared folder is not mountable. One example where this can occur is when the shared /// folder belongs within a team folder in the user's Dropbox. NotMountable, + /// The shared folder is not mountable by directly call APIs, instead the automounter is + /// responsible for mounting it. + MustAutomount, /// Catch-all used for unrecognized values returned from the server. Encountering this value /// typically indicates that this SDK version is out of date. Other, @@ -11365,6 +11713,7 @@ impl<'de> ::serde::de::Deserialize<'de> for MountFolderError { "already_mounted" => MountFolderError::AlreadyMounted, "no_permission" => MountFolderError::NoPermission, "not_mountable" => MountFolderError::NotMountable, + "must_automount" => MountFolderError::MustAutomount, _ => MountFolderError::Other, }; crate::eat_json_fields(&mut map)?; @@ -11377,6 +11726,7 @@ impl<'de> ::serde::de::Deserialize<'de> for MountFolderError { "already_mounted", "no_permission", "not_mountable", + "must_automount", "other"]; deserializer.deserialize_struct("MountFolderError", VARIANTS, EnumVisitor) } @@ -11425,6 +11775,12 @@ impl ::serde::ser::Serialize for MountFolderError { s.serialize_field(".tag", "not_mountable")?; s.end() } + MountFolderError::MustAutomount => { + // unit + let mut s = serializer.serialize_struct("MountFolderError", 1)?; + s.serialize_field(".tag", "must_automount")?; + s.end() + } MountFolderError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) } } @@ -11448,6 +11804,7 @@ impl ::std::fmt::Display for MountFolderError { MountFolderError::AlreadyMounted => f.write_str("The shared folder is already mounted."), MountFolderError::NoPermission => f.write_str("The current user does not have permission to perform this action."), MountFolderError::NotMountable => f.write_str("The shared folder is not mountable. One example where this can occur is when the shared folder belongs within a team folder in the user's Dropbox."), + MountFolderError::MustAutomount => f.write_str("The shared folder is not mountable by directly call APIs, instead the automounter is responsible for mounting it."), _ => write!(f, "{:?}", *self), } } @@ -11989,43 +12346,46 @@ impl ::serde::ser::Serialize for PermissionDeniedReason { } } +/// Removes all self-removable access from a file or folder. For folders: always relinquishes +/// without keeping a local copy (leave_a_copy=false behavior). If you need control over keeping +/// folder contents, use the relinquish_folder_membership endpoint instead. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct RelinquishFileMembershipArg { - /// The path or id for the file. - pub file: PathOrId, +pub struct RelinquishAccessArg { + /// The id for the file or folder. + pub file_id: String, } -impl RelinquishFileMembershipArg { - pub fn new(file: PathOrId) -> Self { - RelinquishFileMembershipArg { - file, +impl RelinquishAccessArg { + pub fn new(file_id: String) -> Self { + RelinquishAccessArg { + file_id, } } } -const RELINQUISH_FILE_MEMBERSHIP_ARG_FIELDS: &[&str] = &["file"]; -impl RelinquishFileMembershipArg { +const RELINQUISH_ACCESS_ARG_FIELDS: &[&str] = &["file_id"]; +impl RelinquishAccessArg { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_file = None; + ) -> Result, V::Error> { + let mut field_file_id = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "file" => { - if field_file.is_some() { - return Err(::serde::de::Error::duplicate_field("file")); + "file_id" => { + if field_file_id.is_some() { + return Err(::serde::de::Error::duplicate_field("file_id")); } - field_file = Some(map.next_value()?); + field_file_id = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -12036,8 +12396,8 @@ impl RelinquishFileMembershipArg { if optional && nothing { return Ok(None); } - let result = RelinquishFileMembershipArg { - file: field_file.ok_or_else(|| ::serde::de::Error::missing_field("file"))?, + let result = RelinquishAccessArg { + file_id: field_file_id.ok_or_else(|| ::serde::de::Error::missing_field("file_id"))?, }; Ok(Some(result)) } @@ -12047,62 +12407,71 @@ impl RelinquishFileMembershipArg { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("file", &self.file)?; + s.serialize_field("file_id", &self.file_id)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for RelinquishFileMembershipArg { +impl<'de> ::serde::de::Deserialize<'de> for RelinquishAccessArg { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = RelinquishFileMembershipArg; + type Value = RelinquishAccessArg; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a RelinquishFileMembershipArg struct") + f.write_str("a RelinquishAccessArg struct") } fn visit_map>(self, map: V) -> Result { - RelinquishFileMembershipArg::internal_deserialize(map) + RelinquishAccessArg::internal_deserialize(map) } } - deserializer.deserialize_struct("RelinquishFileMembershipArg", RELINQUISH_FILE_MEMBERSHIP_ARG_FIELDS, StructVisitor) + deserializer.deserialize_struct("RelinquishAccessArg", RELINQUISH_ACCESS_ARG_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for RelinquishFileMembershipArg { +impl ::serde::ser::Serialize for RelinquishAccessArg { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("RelinquishFileMembershipArg", 1)?; + let mut s = serializer.serialize_struct("RelinquishAccessArg", 1)?; self.internal_serialize::(&mut s)?; s.end() } } +/// Error result for the relinquish_access endpoint. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // variants may be added in the future -pub enum RelinquishFileMembershipError { - AccessError(SharingFileAccessError), - /// The current user has access to the shared file via a group. You can't relinquish membership - /// to a file shared via groups. +pub enum RelinquishAccessError { + /// File or folder not found or has been deleted. + InvalidFileId, + /// Caller's email address is not verified. + EmailUnverified, + /// User is the owner of the file/folder. + Owner, + /// User only has inherited access from a parent folder. + NoExplicitAccess, + /// User has access only via group membership. GroupAccess, - /// The current user does not have permission to perform this action. + /// Team folder restrictions apply. + TeamFolder, + /// Caller does not have permission to perform this action. Generic fallback. NoPermission, /// Catch-all used for unrecognized values returned from the server. Encountering this value /// typically indicates that this SDK version is out of date. Other, } -impl<'de> ::serde::de::Deserialize<'de> for RelinquishFileMembershipError { +impl<'de> ::serde::de::Deserialize<'de> for RelinquishAccessError { fn deserialize>(deserializer: D) -> Result { // union deserializer use serde::de::{self, MapAccess, Visitor}; struct EnumVisitor; impl<'de> Visitor<'de> for EnumVisitor { - type Value = RelinquishFileMembershipError; + type Value = RelinquishAccessError; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a RelinquishFileMembershipError structure") + f.write_str("a RelinquishAccessError structure") } fn visit_map>(self, mut map: V) -> Result { let tag: &str = match map.next_key()? { @@ -12110,60 +12479,320 @@ impl<'de> ::serde::de::Deserialize<'de> for RelinquishFileMembershipError { _ => return Err(de::Error::missing_field(".tag")) }; let value = match tag { - "access_error" => { - match map.next_key()? { - Some("access_error") => RelinquishFileMembershipError::AccessError(map.next_value()?), - None => return Err(de::Error::missing_field("access_error")), - _ => return Err(de::Error::unknown_field(tag, VARIANTS)) - } - } - "group_access" => RelinquishFileMembershipError::GroupAccess, - "no_permission" => RelinquishFileMembershipError::NoPermission, - _ => RelinquishFileMembershipError::Other, + "invalid_file_id" => RelinquishAccessError::InvalidFileId, + "email_unverified" => RelinquishAccessError::EmailUnverified, + "owner" => RelinquishAccessError::Owner, + "no_explicit_access" => RelinquishAccessError::NoExplicitAccess, + "group_access" => RelinquishAccessError::GroupAccess, + "team_folder" => RelinquishAccessError::TeamFolder, + "no_permission" => RelinquishAccessError::NoPermission, + _ => RelinquishAccessError::Other, }; crate::eat_json_fields(&mut map)?; Ok(value) } } - const VARIANTS: &[&str] = &["access_error", + const VARIANTS: &[&str] = &["invalid_file_id", + "email_unverified", + "owner", + "no_explicit_access", "group_access", + "team_folder", "no_permission", "other"]; - deserializer.deserialize_struct("RelinquishFileMembershipError", VARIANTS, EnumVisitor) + deserializer.deserialize_struct("RelinquishAccessError", VARIANTS, EnumVisitor) } } -impl ::serde::ser::Serialize for RelinquishFileMembershipError { +impl ::serde::ser::Serialize for RelinquishAccessError { fn serialize(&self, serializer: S) -> Result { // union serializer use serde::ser::SerializeStruct; match self { - RelinquishFileMembershipError::AccessError(x) => { - // union or polymporphic struct - let mut s = serializer.serialize_struct("RelinquishFileMembershipError", 2)?; - s.serialize_field(".tag", "access_error")?; - s.serialize_field("access_error", x)?; + RelinquishAccessError::InvalidFileId => { + // unit + let mut s = serializer.serialize_struct("RelinquishAccessError", 1)?; + s.serialize_field(".tag", "invalid_file_id")?; s.end() } - RelinquishFileMembershipError::GroupAccess => { + RelinquishAccessError::EmailUnverified => { // unit - let mut s = serializer.serialize_struct("RelinquishFileMembershipError", 1)?; - s.serialize_field(".tag", "group_access")?; + let mut s = serializer.serialize_struct("RelinquishAccessError", 1)?; + s.serialize_field(".tag", "email_unverified")?; s.end() } - RelinquishFileMembershipError::NoPermission => { + RelinquishAccessError::Owner => { // unit - let mut s = serializer.serialize_struct("RelinquishFileMembershipError", 1)?; - s.serialize_field(".tag", "no_permission")?; + let mut s = serializer.serialize_struct("RelinquishAccessError", 1)?; + s.serialize_field(".tag", "owner")?; s.end() } - RelinquishFileMembershipError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) - } - } -} - -impl ::std::error::Error for RelinquishFileMembershipError { - fn source(&self) -> Option<&(dyn ::std::error::Error + 'static)> { + RelinquishAccessError::NoExplicitAccess => { + // unit + let mut s = serializer.serialize_struct("RelinquishAccessError", 1)?; + s.serialize_field(".tag", "no_explicit_access")?; + s.end() + } + RelinquishAccessError::GroupAccess => { + // unit + let mut s = serializer.serialize_struct("RelinquishAccessError", 1)?; + s.serialize_field(".tag", "group_access")?; + s.end() + } + RelinquishAccessError::TeamFolder => { + // unit + let mut s = serializer.serialize_struct("RelinquishAccessError", 1)?; + s.serialize_field(".tag", "team_folder")?; + s.end() + } + RelinquishAccessError::NoPermission => { + // unit + let mut s = serializer.serialize_struct("RelinquishAccessError", 1)?; + s.serialize_field(".tag", "no_permission")?; + s.end() + } + RelinquishAccessError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) + } + } +} + +impl ::std::error::Error for RelinquishAccessError { +} + +impl ::std::fmt::Display for RelinquishAccessError { + fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + match self { + RelinquishAccessError::InvalidFileId => f.write_str("File or folder not found or has been deleted."), + RelinquishAccessError::EmailUnverified => f.write_str("Caller's email address is not verified."), + RelinquishAccessError::Owner => f.write_str("User is the owner of the file/folder."), + RelinquishAccessError::NoExplicitAccess => f.write_str("User only has inherited access from a parent folder."), + RelinquishAccessError::GroupAccess => f.write_str("User has access only via group membership."), + RelinquishAccessError::TeamFolder => f.write_str("Team folder restrictions apply."), + RelinquishAccessError::NoPermission => f.write_str("Caller does not have permission to perform this action. Generic fallback."), + _ => write!(f, "{:?}", *self), + } + } +} + +/// Returns an empty response for the relinquish_access endpoint. +#[derive(Debug, Clone, PartialEq, Eq, Default)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct RelinquishAccessResult { +} + +const RELINQUISH_ACCESS_RESULT_FIELDS: &[&str] = &[]; +impl RelinquishAccessResult { + // no _opt deserializer + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + ) -> Result { + // ignore any fields found; none are presently recognized + crate::eat_json_fields(&mut map)?; + Ok(RelinquishAccessResult {}) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for RelinquishAccessResult { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = RelinquishAccessResult; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a RelinquishAccessResult struct") + } + fn visit_map>(self, map: V) -> Result { + RelinquishAccessResult::internal_deserialize(map) + } + } + deserializer.deserialize_struct("RelinquishAccessResult", RELINQUISH_ACCESS_RESULT_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for RelinquishAccessResult { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + serializer.serialize_struct("RelinquishAccessResult", 0)?.end() + } +} + +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct RelinquishFileMembershipArg { + /// The path or id for the file. + pub file: PathOrId, +} + +impl RelinquishFileMembershipArg { + pub fn new(file: PathOrId) -> Self { + RelinquishFileMembershipArg { + file, + } + } +} + +const RELINQUISH_FILE_MEMBERSHIP_ARG_FIELDS: &[&str] = &["file"]; +impl RelinquishFileMembershipArg { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_file = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "file" => { + if field_file.is_some() { + return Err(::serde::de::Error::duplicate_field("file")); + } + field_file = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } + } + } + if optional && nothing { + return Ok(None); + } + let result = RelinquishFileMembershipArg { + file: field_file.ok_or_else(|| ::serde::de::Error::missing_field("file"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("file", &self.file)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for RelinquishFileMembershipArg { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = RelinquishFileMembershipArg; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a RelinquishFileMembershipArg struct") + } + fn visit_map>(self, map: V) -> Result { + RelinquishFileMembershipArg::internal_deserialize(map) + } + } + deserializer.deserialize_struct("RelinquishFileMembershipArg", RELINQUISH_FILE_MEMBERSHIP_ARG_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for RelinquishFileMembershipArg { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("RelinquishFileMembershipArg", 1)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // variants may be added in the future +pub enum RelinquishFileMembershipError { + AccessError(SharingFileAccessError), + /// The current user has access to the shared file via a group. You can't relinquish membership + /// to a file shared via groups. + GroupAccess, + /// The current user does not have permission to perform this action. + NoPermission, + /// Catch-all used for unrecognized values returned from the server. Encountering this value + /// typically indicates that this SDK version is out of date. + Other, +} + +impl<'de> ::serde::de::Deserialize<'de> for RelinquishFileMembershipError { + fn deserialize>(deserializer: D) -> Result { + // union deserializer + use serde::de::{self, MapAccess, Visitor}; + struct EnumVisitor; + impl<'de> Visitor<'de> for EnumVisitor { + type Value = RelinquishFileMembershipError; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a RelinquishFileMembershipError structure") + } + fn visit_map>(self, mut map: V) -> Result { + let tag: &str = match map.next_key()? { + Some(".tag") => map.next_value()?, + _ => return Err(de::Error::missing_field(".tag")) + }; + let value = match tag { + "access_error" => { + match map.next_key()? { + Some("access_error") => RelinquishFileMembershipError::AccessError(map.next_value()?), + None => return Err(de::Error::missing_field("access_error")), + _ => return Err(de::Error::unknown_field(tag, VARIANTS)) + } + } + "group_access" => RelinquishFileMembershipError::GroupAccess, + "no_permission" => RelinquishFileMembershipError::NoPermission, + _ => RelinquishFileMembershipError::Other, + }; + crate::eat_json_fields(&mut map)?; + Ok(value) + } + } + const VARIANTS: &[&str] = &["access_error", + "group_access", + "no_permission", + "other"]; + deserializer.deserialize_struct("RelinquishFileMembershipError", VARIANTS, EnumVisitor) + } +} + +impl ::serde::ser::Serialize for RelinquishFileMembershipError { + fn serialize(&self, serializer: S) -> Result { + // union serializer + use serde::ser::SerializeStruct; + match self { + RelinquishFileMembershipError::AccessError(x) => { + // union or polymporphic struct + let mut s = serializer.serialize_struct("RelinquishFileMembershipError", 2)?; + s.serialize_field(".tag", "access_error")?; + s.serialize_field("access_error", x)?; + s.end() + } + RelinquishFileMembershipError::GroupAccess => { + // unit + let mut s = serializer.serialize_struct("RelinquishFileMembershipError", 1)?; + s.serialize_field(".tag", "group_access")?; + s.end() + } + RelinquishFileMembershipError::NoPermission => { + // unit + let mut s = serializer.serialize_struct("RelinquishFileMembershipError", 1)?; + s.serialize_field(".tag", "no_permission")?; + s.end() + } + RelinquishFileMembershipError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) + } + } +} + +impl ::std::error::Error for RelinquishFileMembershipError { + fn source(&self) -> Option<&(dyn ::std::error::Error + 'static)> { match self { RelinquishFileMembershipError::AccessError(inner) => Some(inner), _ => None, @@ -13414,6 +14043,8 @@ pub enum RevokeSharedLinkError { SharedLinkAccessDenied, /// This type of link is not supported; use [`files::export()`](crate::files::export) instead. UnsupportedLinkType, + /// Private shared links do not support `path` or `link_password` parameter fields. + UnsupportedParameterField, /// Shared link is malformed. SharedLinkMalformed, /// Catch-all used for unrecognized values returned from the server. Encountering this value @@ -13440,6 +14071,7 @@ impl<'de> ::serde::de::Deserialize<'de> for RevokeSharedLinkError { "shared_link_not_found" => RevokeSharedLinkError::SharedLinkNotFound, "shared_link_access_denied" => RevokeSharedLinkError::SharedLinkAccessDenied, "unsupported_link_type" => RevokeSharedLinkError::UnsupportedLinkType, + "unsupported_parameter_field" => RevokeSharedLinkError::UnsupportedParameterField, "shared_link_malformed" => RevokeSharedLinkError::SharedLinkMalformed, _ => RevokeSharedLinkError::Other, }; @@ -13450,6 +14082,7 @@ impl<'de> ::serde::de::Deserialize<'de> for RevokeSharedLinkError { const VARIANTS: &[&str] = &["shared_link_not_found", "shared_link_access_denied", "unsupported_link_type", + "unsupported_parameter_field", "other", "shared_link_malformed"]; deserializer.deserialize_struct("RevokeSharedLinkError", VARIANTS, EnumVisitor) @@ -13479,6 +14112,12 @@ impl ::serde::ser::Serialize for RevokeSharedLinkError { s.serialize_field(".tag", "unsupported_link_type")?; s.end() } + RevokeSharedLinkError::UnsupportedParameterField => { + // unit + let mut s = serializer.serialize_struct("RevokeSharedLinkError", 1)?; + s.serialize_field(".tag", "unsupported_parameter_field")?; + s.end() + } RevokeSharedLinkError::SharedLinkMalformed => { // unit let mut s = serializer.serialize_struct("RevokeSharedLinkError", 1)?; @@ -13498,6 +14137,7 @@ impl ::std::fmt::Display for RevokeSharedLinkError { match self { RevokeSharedLinkError::SharedLinkNotFound => f.write_str("The shared link wasn't found."), RevokeSharedLinkError::SharedLinkAccessDenied => f.write_str("The caller is not allowed to access this shared link."), + RevokeSharedLinkError::UnsupportedParameterField => f.write_str("Private shared links do not support `path` or `link_password` parameter fields."), RevokeSharedLinkError::SharedLinkMalformed => f.write_str("Shared link is malformed."), _ => write!(f, "{:?}", *self), } @@ -13511,6 +14151,7 @@ impl From for RevokeSharedLinkError { SharedLinkError::SharedLinkNotFound => RevokeSharedLinkError::SharedLinkNotFound, SharedLinkError::SharedLinkAccessDenied => RevokeSharedLinkError::SharedLinkAccessDenied, SharedLinkError::UnsupportedLinkType => RevokeSharedLinkError::UnsupportedLinkType, + SharedLinkError::UnsupportedParameterField => RevokeSharedLinkError::UnsupportedParameterField, SharedLinkError::Other => RevokeSharedLinkError::Other, } } @@ -13738,7 +14379,7 @@ pub struct ShareFolderArg { pub access_inheritance: AccessInheritance, /// A list of `FolderAction`s corresponding to `FolderPermission`s that should appear in the /// response's [`SharedFolderMetadata::permissions`](SharedFolderMetadata) field describing the - /// actions the authenticated user can perform on the folder. + /// actions the authenticated user can perform on the folder. pub actions: Option>, /// Settings on the link for this folder. pub link_settings: Option, @@ -14208,7 +14849,8 @@ pub enum ShareFolderError { EmailUnverified, /// [`ShareFolderArg::path`](ShareFolderArg) is invalid. BadPath(SharePathError), - /// Team policy is more restrictive than [`ShareFolderArg::member_policy`](ShareFolderArg). + /// Team policy or group sharing settings are more restrictive than + /// [`ShareFolderArg::member_policy`](ShareFolderArg). TeamPolicyDisallowsMemberPolicy, /// The current user's account is not allowed to select the specified /// [`ShareFolderArg::shared_link_policy`](ShareFolderArg). @@ -14344,7 +14986,8 @@ pub enum ShareFolderErrorBase { EmailUnverified, /// [`ShareFolderArg::path`](ShareFolderArg) is invalid. BadPath(SharePathError), - /// Team policy is more restrictive than [`ShareFolderArg::member_policy`](ShareFolderArg). + /// Team policy or group sharing settings are more restrictive than + /// [`ShareFolderArg::member_policy`](ShareFolderArg). TeamPolicyDisallowsMemberPolicy, /// The current user's account is not allowed to select the specified /// [`ShareFolderArg::shared_link_policy`](ShareFolderArg). @@ -14431,15 +15074,194 @@ impl ::serde::ser::Serialize for ShareFolderErrorBase { } #[derive(Debug, Clone, PartialEq, Eq)] -pub enum ShareFolderJobStatus { - /// The asynchronous job is still in progress. - InProgress, - /// The share job has finished. The value is the metadata for the folder. - Complete(SharedFolderMetadata), - Failed(ShareFolderError), +#[non_exhaustive] // variants may be added in the future +pub enum ShareFolderErrorBaseV2 { + /// This user's email address is not verified. This functionality is only available on accounts + /// with a verified email address. Users can verify their email address + /// [here](https://www.dropbox.com/help/317). + EmailUnverified, + /// Team policy or group sharing settings are more restrictive than + /// [`ShareFolderArg::member_policy`](ShareFolderArg). + TeamPolicyDisallowsMemberPolicy, + /// The current user's account is not allowed to select the specified + /// [`ShareFolderArg::shared_link_policy`](ShareFolderArg). + DisallowedSharedLinkPolicy, + /// Catch-all used for unrecognized values returned from the server. Encountering this value + /// typically indicates that this SDK version is out of date. + Other, } -impl<'de> ::serde::de::Deserialize<'de> for ShareFolderJobStatus { +impl<'de> ::serde::de::Deserialize<'de> for ShareFolderErrorBaseV2 { + fn deserialize>(deserializer: D) -> Result { + // union deserializer + use serde::de::{self, MapAccess, Visitor}; + struct EnumVisitor; + impl<'de> Visitor<'de> for EnumVisitor { + type Value = ShareFolderErrorBaseV2; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a ShareFolderErrorBaseV2 structure") + } + fn visit_map>(self, mut map: V) -> Result { + let tag: &str = match map.next_key()? { + Some(".tag") => map.next_value()?, + _ => return Err(de::Error::missing_field(".tag")) + }; + let value = match tag { + "email_unverified" => ShareFolderErrorBaseV2::EmailUnverified, + "team_policy_disallows_member_policy" => ShareFolderErrorBaseV2::TeamPolicyDisallowsMemberPolicy, + "disallowed_shared_link_policy" => ShareFolderErrorBaseV2::DisallowedSharedLinkPolicy, + _ => ShareFolderErrorBaseV2::Other, + }; + crate::eat_json_fields(&mut map)?; + Ok(value) + } + } + const VARIANTS: &[&str] = &["email_unverified", + "team_policy_disallows_member_policy", + "disallowed_shared_link_policy", + "other"]; + deserializer.deserialize_struct("ShareFolderErrorBaseV2", VARIANTS, EnumVisitor) + } +} + +impl ::serde::ser::Serialize for ShareFolderErrorBaseV2 { + fn serialize(&self, serializer: S) -> Result { + // union serializer + use serde::ser::SerializeStruct; + match self { + ShareFolderErrorBaseV2::EmailUnverified => { + // unit + let mut s = serializer.serialize_struct("ShareFolderErrorBaseV2", 1)?; + s.serialize_field(".tag", "email_unverified")?; + s.end() + } + ShareFolderErrorBaseV2::TeamPolicyDisallowsMemberPolicy => { + // unit + let mut s = serializer.serialize_struct("ShareFolderErrorBaseV2", 1)?; + s.serialize_field(".tag", "team_policy_disallows_member_policy")?; + s.end() + } + ShareFolderErrorBaseV2::DisallowedSharedLinkPolicy => { + // unit + let mut s = serializer.serialize_struct("ShareFolderErrorBaseV2", 1)?; + s.serialize_field(".tag", "disallowed_shared_link_policy")?; + s.end() + } + ShareFolderErrorBaseV2::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) + } + } +} + +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // variants may be added in the future +pub enum ShareFolderErrorV2 { + /// This user's email address is not verified. This functionality is only available on accounts + /// with a verified email address. Users can verify their email address + /// [here](https://www.dropbox.com/help/317). + EmailUnverified, + /// Team policy or group sharing settings are more restrictive than + /// [`ShareFolderArg::member_policy`](ShareFolderArg). + TeamPolicyDisallowsMemberPolicy, + /// The current user's account is not allowed to select the specified + /// [`ShareFolderArg::shared_link_policy`](ShareFolderArg). + DisallowedSharedLinkPolicy, + /// The current user does not have permission to perform this action. + NoPermission, + /// Catch-all used for unrecognized values returned from the server. Encountering this value + /// typically indicates that this SDK version is out of date. + Other, +} + +impl<'de> ::serde::de::Deserialize<'de> for ShareFolderErrorV2 { + fn deserialize>(deserializer: D) -> Result { + // union deserializer + use serde::de::{self, MapAccess, Visitor}; + struct EnumVisitor; + impl<'de> Visitor<'de> for EnumVisitor { + type Value = ShareFolderErrorV2; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a ShareFolderErrorV2 structure") + } + fn visit_map>(self, mut map: V) -> Result { + let tag: &str = match map.next_key()? { + Some(".tag") => map.next_value()?, + _ => return Err(de::Error::missing_field(".tag")) + }; + let value = match tag { + "email_unverified" => ShareFolderErrorV2::EmailUnverified, + "team_policy_disallows_member_policy" => ShareFolderErrorV2::TeamPolicyDisallowsMemberPolicy, + "disallowed_shared_link_policy" => ShareFolderErrorV2::DisallowedSharedLinkPolicy, + "no_permission" => ShareFolderErrorV2::NoPermission, + _ => ShareFolderErrorV2::Other, + }; + crate::eat_json_fields(&mut map)?; + Ok(value) + } + } + const VARIANTS: &[&str] = &["email_unverified", + "team_policy_disallows_member_policy", + "disallowed_shared_link_policy", + "other", + "no_permission"]; + deserializer.deserialize_struct("ShareFolderErrorV2", VARIANTS, EnumVisitor) + } +} + +impl ::serde::ser::Serialize for ShareFolderErrorV2 { + fn serialize(&self, serializer: S) -> Result { + // union serializer + use serde::ser::SerializeStruct; + match self { + ShareFolderErrorV2::EmailUnverified => { + // unit + let mut s = serializer.serialize_struct("ShareFolderErrorV2", 1)?; + s.serialize_field(".tag", "email_unverified")?; + s.end() + } + ShareFolderErrorV2::TeamPolicyDisallowsMemberPolicy => { + // unit + let mut s = serializer.serialize_struct("ShareFolderErrorV2", 1)?; + s.serialize_field(".tag", "team_policy_disallows_member_policy")?; + s.end() + } + ShareFolderErrorV2::DisallowedSharedLinkPolicy => { + // unit + let mut s = serializer.serialize_struct("ShareFolderErrorV2", 1)?; + s.serialize_field(".tag", "disallowed_shared_link_policy")?; + s.end() + } + ShareFolderErrorV2::NoPermission => { + // unit + let mut s = serializer.serialize_struct("ShareFolderErrorV2", 1)?; + s.serialize_field(".tag", "no_permission")?; + s.end() + } + ShareFolderErrorV2::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) + } + } +} + +// union extends ShareFolderErrorBaseV2 +impl From for ShareFolderErrorV2 { + fn from(parent: ShareFolderErrorBaseV2) -> Self { + match parent { + ShareFolderErrorBaseV2::EmailUnverified => ShareFolderErrorV2::EmailUnverified, + ShareFolderErrorBaseV2::TeamPolicyDisallowsMemberPolicy => ShareFolderErrorV2::TeamPolicyDisallowsMemberPolicy, + ShareFolderErrorBaseV2::DisallowedSharedLinkPolicy => ShareFolderErrorV2::DisallowedSharedLinkPolicy, + ShareFolderErrorBaseV2::Other => ShareFolderErrorV2::Other, + } + } +} +#[derive(Debug, Clone, PartialEq, Eq)] +pub enum ShareFolderJobStatus { + /// The asynchronous job is still in progress. + InProgress, + /// The share job has finished. The value is the metadata for the folder. + Complete(SharedFolderMetadata), + Failed(ShareFolderError), +} + +impl<'de> ::serde::de::Deserialize<'de> for ShareFolderJobStatus { fn deserialize>(deserializer: D) -> Result { // union deserializer use serde::de::{self, MapAccess, Visitor}; @@ -14490,7 +15312,7 @@ impl ::serde::ser::Serialize for ShareFolderJobStatus { } ShareFolderJobStatus::Complete(x) => { // struct - let mut s = serializer.serialize_struct("ShareFolderJobStatus", 18)?; + let mut s = serializer.serialize_struct("ShareFolderJobStatus", 19)?; s.serialize_field(".tag", "complete")?; x.internal_serialize::(&mut s)?; s.end() @@ -14558,48 +15380,465 @@ impl<'de> ::serde::de::Deserialize<'de> for ShareFolderLaunch { } } -impl ::serde::ser::Serialize for ShareFolderLaunch { +impl ::serde::ser::Serialize for ShareFolderLaunch { + fn serialize(&self, serializer: S) -> Result { + // union serializer + use serde::ser::SerializeStruct; + match self { + ShareFolderLaunch::AsyncJobId(x) => { + // primitive + let mut s = serializer.serialize_struct("ShareFolderLaunch", 2)?; + s.serialize_field(".tag", "async_job_id")?; + s.serialize_field("async_job_id", x)?; + s.end() + } + ShareFolderLaunch::Complete(x) => { + // struct + let mut s = serializer.serialize_struct("ShareFolderLaunch", 19)?; + s.serialize_field(".tag", "complete")?; + x.internal_serialize::(&mut s)?; + s.end() + } + } + } +} + +// union extends crate::types::dbx_async::LaunchResultBase +impl From for ShareFolderLaunch { + fn from(parent: crate::types::dbx_async::LaunchResultBase) -> Self { + match parent { + crate::types::dbx_async::LaunchResultBase::AsyncJobId(x) => ShareFolderLaunch::AsyncJobId(x), + } + } +} +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // variants may be added in the future +pub enum SharePathError { + /// A file is at the specified path. + IsFile, + /// We do not support sharing a folder inside a shared folder. + InsideSharedFolder, + /// We do not support shared folders that contain shared folders. + ContainsSharedFolder, + /// We do not support shared folders that contain app folders. + ContainsAppFolder, + /// We do not support shared folders that contain team folders. + ContainsTeamFolder, + /// We do not support sharing an app folder. + IsAppFolder, + /// We do not support sharing a folder inside an app folder. + InsideAppFolder, + /// A public folder can't be shared this way. Use a public link instead. + IsPublicFolder, + /// A folder inside a public folder can't be shared this way. Use a public link instead. + InsidePublicFolder, + /// Folder is already shared. Contains metadata about the existing shared folder. + AlreadyShared(SharedFolderMetadata), + /// Path is not valid. + InvalidPath, + /// We do not support sharing a Mac OS X package. + IsOsxPackage, + /// We do not support sharing a folder inside a Mac OS X package. + InsideOsxPackage, + /// We do not support sharing the Vault folder. + IsVault, + /// We do not support sharing a folder inside a locked Vault. + IsVaultLocked, + /// We do not support sharing the Family folder. + IsFamily, + /// Catch-all used for unrecognized values returned from the server. Encountering this value + /// typically indicates that this SDK version is out of date. + Other, +} + +impl<'de> ::serde::de::Deserialize<'de> for SharePathError { + fn deserialize>(deserializer: D) -> Result { + // union deserializer + use serde::de::{self, MapAccess, Visitor}; + struct EnumVisitor; + impl<'de> Visitor<'de> for EnumVisitor { + type Value = SharePathError; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a SharePathError structure") + } + fn visit_map>(self, mut map: V) -> Result { + let tag: &str = match map.next_key()? { + Some(".tag") => map.next_value()?, + _ => return Err(de::Error::missing_field(".tag")) + }; + let value = match tag { + "is_file" => SharePathError::IsFile, + "inside_shared_folder" => SharePathError::InsideSharedFolder, + "contains_shared_folder" => SharePathError::ContainsSharedFolder, + "contains_app_folder" => SharePathError::ContainsAppFolder, + "contains_team_folder" => SharePathError::ContainsTeamFolder, + "is_app_folder" => SharePathError::IsAppFolder, + "inside_app_folder" => SharePathError::InsideAppFolder, + "is_public_folder" => SharePathError::IsPublicFolder, + "inside_public_folder" => SharePathError::InsidePublicFolder, + "already_shared" => SharePathError::AlreadyShared(SharedFolderMetadata::internal_deserialize(&mut map)?), + "invalid_path" => SharePathError::InvalidPath, + "is_osx_package" => SharePathError::IsOsxPackage, + "inside_osx_package" => SharePathError::InsideOsxPackage, + "is_vault" => SharePathError::IsVault, + "is_vault_locked" => SharePathError::IsVaultLocked, + "is_family" => SharePathError::IsFamily, + _ => SharePathError::Other, + }; + crate::eat_json_fields(&mut map)?; + Ok(value) + } + } + const VARIANTS: &[&str] = &["is_file", + "inside_shared_folder", + "contains_shared_folder", + "contains_app_folder", + "contains_team_folder", + "is_app_folder", + "inside_app_folder", + "is_public_folder", + "inside_public_folder", + "already_shared", + "invalid_path", + "is_osx_package", + "inside_osx_package", + "is_vault", + "is_vault_locked", + "is_family", + "other"]; + deserializer.deserialize_struct("SharePathError", VARIANTS, EnumVisitor) + } +} + +impl ::serde::ser::Serialize for SharePathError { + fn serialize(&self, serializer: S) -> Result { + // union serializer + use serde::ser::SerializeStruct; + match self { + SharePathError::IsFile => { + // unit + let mut s = serializer.serialize_struct("SharePathError", 1)?; + s.serialize_field(".tag", "is_file")?; + s.end() + } + SharePathError::InsideSharedFolder => { + // unit + let mut s = serializer.serialize_struct("SharePathError", 1)?; + s.serialize_field(".tag", "inside_shared_folder")?; + s.end() + } + SharePathError::ContainsSharedFolder => { + // unit + let mut s = serializer.serialize_struct("SharePathError", 1)?; + s.serialize_field(".tag", "contains_shared_folder")?; + s.end() + } + SharePathError::ContainsAppFolder => { + // unit + let mut s = serializer.serialize_struct("SharePathError", 1)?; + s.serialize_field(".tag", "contains_app_folder")?; + s.end() + } + SharePathError::ContainsTeamFolder => { + // unit + let mut s = serializer.serialize_struct("SharePathError", 1)?; + s.serialize_field(".tag", "contains_team_folder")?; + s.end() + } + SharePathError::IsAppFolder => { + // unit + let mut s = serializer.serialize_struct("SharePathError", 1)?; + s.serialize_field(".tag", "is_app_folder")?; + s.end() + } + SharePathError::InsideAppFolder => { + // unit + let mut s = serializer.serialize_struct("SharePathError", 1)?; + s.serialize_field(".tag", "inside_app_folder")?; + s.end() + } + SharePathError::IsPublicFolder => { + // unit + let mut s = serializer.serialize_struct("SharePathError", 1)?; + s.serialize_field(".tag", "is_public_folder")?; + s.end() + } + SharePathError::InsidePublicFolder => { + // unit + let mut s = serializer.serialize_struct("SharePathError", 1)?; + s.serialize_field(".tag", "inside_public_folder")?; + s.end() + } + SharePathError::AlreadyShared(x) => { + // struct + let mut s = serializer.serialize_struct("SharePathError", 19)?; + s.serialize_field(".tag", "already_shared")?; + x.internal_serialize::(&mut s)?; + s.end() + } + SharePathError::InvalidPath => { + // unit + let mut s = serializer.serialize_struct("SharePathError", 1)?; + s.serialize_field(".tag", "invalid_path")?; + s.end() + } + SharePathError::IsOsxPackage => { + // unit + let mut s = serializer.serialize_struct("SharePathError", 1)?; + s.serialize_field(".tag", "is_osx_package")?; + s.end() + } + SharePathError::InsideOsxPackage => { + // unit + let mut s = serializer.serialize_struct("SharePathError", 1)?; + s.serialize_field(".tag", "inside_osx_package")?; + s.end() + } + SharePathError::IsVault => { + // unit + let mut s = serializer.serialize_struct("SharePathError", 1)?; + s.serialize_field(".tag", "is_vault")?; + s.end() + } + SharePathError::IsVaultLocked => { + // unit + let mut s = serializer.serialize_struct("SharePathError", 1)?; + s.serialize_field(".tag", "is_vault_locked")?; + s.end() + } + SharePathError::IsFamily => { + // unit + let mut s = serializer.serialize_struct("SharePathError", 1)?; + s.serialize_field(".tag", "is_family")?; + s.end() + } + SharePathError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) + } + } +} + +impl ::std::error::Error for SharePathError { +} + +impl ::std::fmt::Display for SharePathError { + fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + match self { + SharePathError::IsFile => f.write_str("A file is at the specified path."), + SharePathError::InsideSharedFolder => f.write_str("We do not support sharing a folder inside a shared folder."), + SharePathError::ContainsSharedFolder => f.write_str("We do not support shared folders that contain shared folders."), + SharePathError::ContainsAppFolder => f.write_str("We do not support shared folders that contain app folders."), + SharePathError::ContainsTeamFolder => f.write_str("We do not support shared folders that contain team folders."), + SharePathError::IsAppFolder => f.write_str("We do not support sharing an app folder."), + SharePathError::InsideAppFolder => f.write_str("We do not support sharing a folder inside an app folder."), + SharePathError::IsPublicFolder => f.write_str("A public folder can't be shared this way. Use a public link instead."), + SharePathError::InsidePublicFolder => f.write_str("A folder inside a public folder can't be shared this way. Use a public link instead."), + SharePathError::AlreadyShared(inner) => write!(f, "Folder is already shared. Contains metadata about the existing shared folder: {:?}", inner), + SharePathError::InvalidPath => f.write_str("Path is not valid."), + SharePathError::IsOsxPackage => f.write_str("We do not support sharing a Mac OS X package."), + SharePathError::InsideOsxPackage => f.write_str("We do not support sharing a folder inside a Mac OS X package."), + SharePathError::IsVault => f.write_str("We do not support sharing the Vault folder."), + SharePathError::IsVaultLocked => f.write_str("We do not support sharing a folder inside a locked Vault."), + SharePathError::IsFamily => f.write_str("We do not support sharing the Family folder."), + _ => write!(f, "{:?}", *self), + } + } +} + +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // variants may be added in the future +pub enum SharePathErrorBaseV2 { + /// A file is at the specified path. + IsFile, + /// We do not support sharing a folder inside a shared folder. + InsideSharedFolder, + /// We do not support shared folders that contain shared folders. + ContainsSharedFolder, + /// We do not support shared folders that contain team folders. + ContainsTeamFolder, + /// We do not support sharing an app folder. + IsAppFolder, + /// We do not support sharing a folder inside an app folder. + InsideAppFolder, + /// A public folder can't be shared this way. Use a public link instead. + IsPublicFolder, + /// A folder inside a public folder can't be shared this way. Use a public link instead. + InsidePublicFolder, + /// Folder is already shared. Contains metadata about the existing shared folder. + AlreadyShared(SharedFolderMetadata), + /// Path is not valid. + InvalidPath, + /// We do not support sharing a Mac OS X package. + IsOsxPackage, + /// We do not support sharing a folder inside a Mac OS X package. + InsideOsxPackage, + /// We do not support sharing the Vault folder. + IsVault, + /// We do not support sharing a folder inside a locked Vault. + IsVaultLocked, + /// Catch-all used for unrecognized values returned from the server. Encountering this value + /// typically indicates that this SDK version is out of date. + Other, +} + +impl<'de> ::serde::de::Deserialize<'de> for SharePathErrorBaseV2 { + fn deserialize>(deserializer: D) -> Result { + // union deserializer + use serde::de::{self, MapAccess, Visitor}; + struct EnumVisitor; + impl<'de> Visitor<'de> for EnumVisitor { + type Value = SharePathErrorBaseV2; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a SharePathErrorBaseV2 structure") + } + fn visit_map>(self, mut map: V) -> Result { + let tag: &str = match map.next_key()? { + Some(".tag") => map.next_value()?, + _ => return Err(de::Error::missing_field(".tag")) + }; + let value = match tag { + "is_file" => SharePathErrorBaseV2::IsFile, + "inside_shared_folder" => SharePathErrorBaseV2::InsideSharedFolder, + "contains_shared_folder" => SharePathErrorBaseV2::ContainsSharedFolder, + "contains_team_folder" => SharePathErrorBaseV2::ContainsTeamFolder, + "is_app_folder" => SharePathErrorBaseV2::IsAppFolder, + "inside_app_folder" => SharePathErrorBaseV2::InsideAppFolder, + "is_public_folder" => SharePathErrorBaseV2::IsPublicFolder, + "inside_public_folder" => SharePathErrorBaseV2::InsidePublicFolder, + "already_shared" => SharePathErrorBaseV2::AlreadyShared(SharedFolderMetadata::internal_deserialize(&mut map)?), + "invalid_path" => SharePathErrorBaseV2::InvalidPath, + "is_osx_package" => SharePathErrorBaseV2::IsOsxPackage, + "inside_osx_package" => SharePathErrorBaseV2::InsideOsxPackage, + "is_vault" => SharePathErrorBaseV2::IsVault, + "is_vault_locked" => SharePathErrorBaseV2::IsVaultLocked, + _ => SharePathErrorBaseV2::Other, + }; + crate::eat_json_fields(&mut map)?; + Ok(value) + } + } + const VARIANTS: &[&str] = &["is_file", + "inside_shared_folder", + "contains_shared_folder", + "contains_team_folder", + "is_app_folder", + "inside_app_folder", + "is_public_folder", + "inside_public_folder", + "already_shared", + "invalid_path", + "is_osx_package", + "inside_osx_package", + "is_vault", + "is_vault_locked", + "other"]; + deserializer.deserialize_struct("SharePathErrorBaseV2", VARIANTS, EnumVisitor) + } +} + +impl ::serde::ser::Serialize for SharePathErrorBaseV2 { fn serialize(&self, serializer: S) -> Result { // union serializer use serde::ser::SerializeStruct; match self { - ShareFolderLaunch::AsyncJobId(x) => { - // primitive - let mut s = serializer.serialize_struct("ShareFolderLaunch", 2)?; - s.serialize_field(".tag", "async_job_id")?; - s.serialize_field("async_job_id", x)?; + SharePathErrorBaseV2::IsFile => { + // unit + let mut s = serializer.serialize_struct("SharePathErrorBaseV2", 1)?; + s.serialize_field(".tag", "is_file")?; s.end() } - ShareFolderLaunch::Complete(x) => { + SharePathErrorBaseV2::InsideSharedFolder => { + // unit + let mut s = serializer.serialize_struct("SharePathErrorBaseV2", 1)?; + s.serialize_field(".tag", "inside_shared_folder")?; + s.end() + } + SharePathErrorBaseV2::ContainsSharedFolder => { + // unit + let mut s = serializer.serialize_struct("SharePathErrorBaseV2", 1)?; + s.serialize_field(".tag", "contains_shared_folder")?; + s.end() + } + SharePathErrorBaseV2::ContainsTeamFolder => { + // unit + let mut s = serializer.serialize_struct("SharePathErrorBaseV2", 1)?; + s.serialize_field(".tag", "contains_team_folder")?; + s.end() + } + SharePathErrorBaseV2::IsAppFolder => { + // unit + let mut s = serializer.serialize_struct("SharePathErrorBaseV2", 1)?; + s.serialize_field(".tag", "is_app_folder")?; + s.end() + } + SharePathErrorBaseV2::InsideAppFolder => { + // unit + let mut s = serializer.serialize_struct("SharePathErrorBaseV2", 1)?; + s.serialize_field(".tag", "inside_app_folder")?; + s.end() + } + SharePathErrorBaseV2::IsPublicFolder => { + // unit + let mut s = serializer.serialize_struct("SharePathErrorBaseV2", 1)?; + s.serialize_field(".tag", "is_public_folder")?; + s.end() + } + SharePathErrorBaseV2::InsidePublicFolder => { + // unit + let mut s = serializer.serialize_struct("SharePathErrorBaseV2", 1)?; + s.serialize_field(".tag", "inside_public_folder")?; + s.end() + } + SharePathErrorBaseV2::AlreadyShared(x) => { // struct - let mut s = serializer.serialize_struct("ShareFolderLaunch", 18)?; - s.serialize_field(".tag", "complete")?; + let mut s = serializer.serialize_struct("SharePathErrorBaseV2", 19)?; + s.serialize_field(".tag", "already_shared")?; x.internal_serialize::(&mut s)?; s.end() } + SharePathErrorBaseV2::InvalidPath => { + // unit + let mut s = serializer.serialize_struct("SharePathErrorBaseV2", 1)?; + s.serialize_field(".tag", "invalid_path")?; + s.end() + } + SharePathErrorBaseV2::IsOsxPackage => { + // unit + let mut s = serializer.serialize_struct("SharePathErrorBaseV2", 1)?; + s.serialize_field(".tag", "is_osx_package")?; + s.end() + } + SharePathErrorBaseV2::InsideOsxPackage => { + // unit + let mut s = serializer.serialize_struct("SharePathErrorBaseV2", 1)?; + s.serialize_field(".tag", "inside_osx_package")?; + s.end() + } + SharePathErrorBaseV2::IsVault => { + // unit + let mut s = serializer.serialize_struct("SharePathErrorBaseV2", 1)?; + s.serialize_field(".tag", "is_vault")?; + s.end() + } + SharePathErrorBaseV2::IsVaultLocked => { + // unit + let mut s = serializer.serialize_struct("SharePathErrorBaseV2", 1)?; + s.serialize_field(".tag", "is_vault_locked")?; + s.end() + } + SharePathErrorBaseV2::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) } } } -// union extends crate::types::dbx_async::LaunchResultBase -impl From for ShareFolderLaunch { - fn from(parent: crate::types::dbx_async::LaunchResultBase) -> Self { - match parent { - crate::types::dbx_async::LaunchResultBase::AsyncJobId(x) => ShareFolderLaunch::AsyncJobId(x), - } - } -} #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // variants may be added in the future -pub enum SharePathError { +pub enum SharePathErrorV2 { /// A file is at the specified path. IsFile, /// We do not support sharing a folder inside a shared folder. InsideSharedFolder, /// We do not support shared folders that contain shared folders. ContainsSharedFolder, - /// We do not support shared folders that contain app folders. - ContainsAppFolder, /// We do not support shared folders that contain team folders. ContainsTeamFolder, /// We do not support sharing an app folder. @@ -14624,20 +15863,22 @@ pub enum SharePathError { IsVaultLocked, /// We do not support sharing the Family folder. IsFamily, + /// We do not support shared folders that contain app folders. + ContainsAppFolder, /// Catch-all used for unrecognized values returned from the server. Encountering this value /// typically indicates that this SDK version is out of date. Other, } -impl<'de> ::serde::de::Deserialize<'de> for SharePathError { +impl<'de> ::serde::de::Deserialize<'de> for SharePathErrorV2 { fn deserialize>(deserializer: D) -> Result { // union deserializer use serde::de::{self, MapAccess, Visitor}; struct EnumVisitor; impl<'de> Visitor<'de> for EnumVisitor { - type Value = SharePathError; + type Value = SharePathErrorV2; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SharePathError structure") + f.write_str("a SharePathErrorV2 structure") } fn visit_map>(self, mut map: V) -> Result { let tag: &str = match map.next_key()? { @@ -14645,23 +15886,23 @@ impl<'de> ::serde::de::Deserialize<'de> for SharePathError { _ => return Err(de::Error::missing_field(".tag")) }; let value = match tag { - "is_file" => SharePathError::IsFile, - "inside_shared_folder" => SharePathError::InsideSharedFolder, - "contains_shared_folder" => SharePathError::ContainsSharedFolder, - "contains_app_folder" => SharePathError::ContainsAppFolder, - "contains_team_folder" => SharePathError::ContainsTeamFolder, - "is_app_folder" => SharePathError::IsAppFolder, - "inside_app_folder" => SharePathError::InsideAppFolder, - "is_public_folder" => SharePathError::IsPublicFolder, - "inside_public_folder" => SharePathError::InsidePublicFolder, - "already_shared" => SharePathError::AlreadyShared(SharedFolderMetadata::internal_deserialize(&mut map)?), - "invalid_path" => SharePathError::InvalidPath, - "is_osx_package" => SharePathError::IsOsxPackage, - "inside_osx_package" => SharePathError::InsideOsxPackage, - "is_vault" => SharePathError::IsVault, - "is_vault_locked" => SharePathError::IsVaultLocked, - "is_family" => SharePathError::IsFamily, - _ => SharePathError::Other, + "is_file" => SharePathErrorV2::IsFile, + "inside_shared_folder" => SharePathErrorV2::InsideSharedFolder, + "contains_shared_folder" => SharePathErrorV2::ContainsSharedFolder, + "contains_team_folder" => SharePathErrorV2::ContainsTeamFolder, + "is_app_folder" => SharePathErrorV2::IsAppFolder, + "inside_app_folder" => SharePathErrorV2::InsideAppFolder, + "is_public_folder" => SharePathErrorV2::IsPublicFolder, + "inside_public_folder" => SharePathErrorV2::InsidePublicFolder, + "already_shared" => SharePathErrorV2::AlreadyShared(SharedFolderMetadata::internal_deserialize(&mut map)?), + "invalid_path" => SharePathErrorV2::InvalidPath, + "is_osx_package" => SharePathErrorV2::IsOsxPackage, + "inside_osx_package" => SharePathErrorV2::InsideOsxPackage, + "is_vault" => SharePathErrorV2::IsVault, + "is_vault_locked" => SharePathErrorV2::IsVaultLocked, + "is_family" => SharePathErrorV2::IsFamily, + "contains_app_folder" => SharePathErrorV2::ContainsAppFolder, + _ => SharePathErrorV2::Other, }; crate::eat_json_fields(&mut map)?; Ok(value) @@ -14670,7 +15911,6 @@ impl<'de> ::serde::de::Deserialize<'de> for SharePathError { const VARIANTS: &[&str] = &["is_file", "inside_shared_folder", "contains_shared_folder", - "contains_app_folder", "contains_team_folder", "is_app_folder", "inside_app_folder", @@ -14682,146 +15922,142 @@ impl<'de> ::serde::de::Deserialize<'de> for SharePathError { "inside_osx_package", "is_vault", "is_vault_locked", + "other", "is_family", - "other"]; - deserializer.deserialize_struct("SharePathError", VARIANTS, EnumVisitor) + "contains_app_folder"]; + deserializer.deserialize_struct("SharePathErrorV2", VARIANTS, EnumVisitor) } } -impl ::serde::ser::Serialize for SharePathError { +impl ::serde::ser::Serialize for SharePathErrorV2 { fn serialize(&self, serializer: S) -> Result { // union serializer use serde::ser::SerializeStruct; match self { - SharePathError::IsFile => { + SharePathErrorV2::IsFile => { // unit - let mut s = serializer.serialize_struct("SharePathError", 1)?; + let mut s = serializer.serialize_struct("SharePathErrorV2", 1)?; s.serialize_field(".tag", "is_file")?; s.end() } - SharePathError::InsideSharedFolder => { + SharePathErrorV2::InsideSharedFolder => { // unit - let mut s = serializer.serialize_struct("SharePathError", 1)?; + let mut s = serializer.serialize_struct("SharePathErrorV2", 1)?; s.serialize_field(".tag", "inside_shared_folder")?; s.end() } - SharePathError::ContainsSharedFolder => { + SharePathErrorV2::ContainsSharedFolder => { // unit - let mut s = serializer.serialize_struct("SharePathError", 1)?; + let mut s = serializer.serialize_struct("SharePathErrorV2", 1)?; s.serialize_field(".tag", "contains_shared_folder")?; s.end() } - SharePathError::ContainsAppFolder => { - // unit - let mut s = serializer.serialize_struct("SharePathError", 1)?; - s.serialize_field(".tag", "contains_app_folder")?; - s.end() - } - SharePathError::ContainsTeamFolder => { + SharePathErrorV2::ContainsTeamFolder => { // unit - let mut s = serializer.serialize_struct("SharePathError", 1)?; + let mut s = serializer.serialize_struct("SharePathErrorV2", 1)?; s.serialize_field(".tag", "contains_team_folder")?; s.end() } - SharePathError::IsAppFolder => { + SharePathErrorV2::IsAppFolder => { // unit - let mut s = serializer.serialize_struct("SharePathError", 1)?; + let mut s = serializer.serialize_struct("SharePathErrorV2", 1)?; s.serialize_field(".tag", "is_app_folder")?; s.end() } - SharePathError::InsideAppFolder => { + SharePathErrorV2::InsideAppFolder => { // unit - let mut s = serializer.serialize_struct("SharePathError", 1)?; + let mut s = serializer.serialize_struct("SharePathErrorV2", 1)?; s.serialize_field(".tag", "inside_app_folder")?; s.end() } - SharePathError::IsPublicFolder => { + SharePathErrorV2::IsPublicFolder => { // unit - let mut s = serializer.serialize_struct("SharePathError", 1)?; + let mut s = serializer.serialize_struct("SharePathErrorV2", 1)?; s.serialize_field(".tag", "is_public_folder")?; s.end() } - SharePathError::InsidePublicFolder => { + SharePathErrorV2::InsidePublicFolder => { // unit - let mut s = serializer.serialize_struct("SharePathError", 1)?; + let mut s = serializer.serialize_struct("SharePathErrorV2", 1)?; s.serialize_field(".tag", "inside_public_folder")?; s.end() } - SharePathError::AlreadyShared(x) => { + SharePathErrorV2::AlreadyShared(x) => { // struct - let mut s = serializer.serialize_struct("SharePathError", 18)?; + let mut s = serializer.serialize_struct("SharePathErrorV2", 19)?; s.serialize_field(".tag", "already_shared")?; x.internal_serialize::(&mut s)?; s.end() } - SharePathError::InvalidPath => { + SharePathErrorV2::InvalidPath => { // unit - let mut s = serializer.serialize_struct("SharePathError", 1)?; + let mut s = serializer.serialize_struct("SharePathErrorV2", 1)?; s.serialize_field(".tag", "invalid_path")?; s.end() } - SharePathError::IsOsxPackage => { + SharePathErrorV2::IsOsxPackage => { // unit - let mut s = serializer.serialize_struct("SharePathError", 1)?; + let mut s = serializer.serialize_struct("SharePathErrorV2", 1)?; s.serialize_field(".tag", "is_osx_package")?; s.end() } - SharePathError::InsideOsxPackage => { + SharePathErrorV2::InsideOsxPackage => { // unit - let mut s = serializer.serialize_struct("SharePathError", 1)?; + let mut s = serializer.serialize_struct("SharePathErrorV2", 1)?; s.serialize_field(".tag", "inside_osx_package")?; s.end() } - SharePathError::IsVault => { + SharePathErrorV2::IsVault => { // unit - let mut s = serializer.serialize_struct("SharePathError", 1)?; + let mut s = serializer.serialize_struct("SharePathErrorV2", 1)?; s.serialize_field(".tag", "is_vault")?; s.end() } - SharePathError::IsVaultLocked => { + SharePathErrorV2::IsVaultLocked => { // unit - let mut s = serializer.serialize_struct("SharePathError", 1)?; + let mut s = serializer.serialize_struct("SharePathErrorV2", 1)?; s.serialize_field(".tag", "is_vault_locked")?; s.end() } - SharePathError::IsFamily => { + SharePathErrorV2::IsFamily => { // unit - let mut s = serializer.serialize_struct("SharePathError", 1)?; + let mut s = serializer.serialize_struct("SharePathErrorV2", 1)?; s.serialize_field(".tag", "is_family")?; s.end() } - SharePathError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) + SharePathErrorV2::ContainsAppFolder => { + // unit + let mut s = serializer.serialize_struct("SharePathErrorV2", 1)?; + s.serialize_field(".tag", "contains_app_folder")?; + s.end() + } + SharePathErrorV2::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) } } } -impl ::std::error::Error for SharePathError { -} - -impl ::std::fmt::Display for SharePathError { - fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - match self { - SharePathError::IsFile => f.write_str("A file is at the specified path."), - SharePathError::InsideSharedFolder => f.write_str("We do not support sharing a folder inside a shared folder."), - SharePathError::ContainsSharedFolder => f.write_str("We do not support shared folders that contain shared folders."), - SharePathError::ContainsAppFolder => f.write_str("We do not support shared folders that contain app folders."), - SharePathError::ContainsTeamFolder => f.write_str("We do not support shared folders that contain team folders."), - SharePathError::IsAppFolder => f.write_str("We do not support sharing an app folder."), - SharePathError::InsideAppFolder => f.write_str("We do not support sharing a folder inside an app folder."), - SharePathError::IsPublicFolder => f.write_str("A public folder can't be shared this way. Use a public link instead."), - SharePathError::InsidePublicFolder => f.write_str("A folder inside a public folder can't be shared this way. Use a public link instead."), - SharePathError::AlreadyShared(inner) => write!(f, "Folder is already shared. Contains metadata about the existing shared folder: {:?}", inner), - SharePathError::InvalidPath => f.write_str("Path is not valid."), - SharePathError::IsOsxPackage => f.write_str("We do not support sharing a Mac OS X package."), - SharePathError::InsideOsxPackage => f.write_str("We do not support sharing a folder inside a Mac OS X package."), - SharePathError::IsVault => f.write_str("We do not support sharing the Vault folder."), - SharePathError::IsVaultLocked => f.write_str("We do not support sharing a folder inside a locked Vault."), - SharePathError::IsFamily => f.write_str("We do not support sharing the Family folder."), - _ => write!(f, "{:?}", *self), +// union extends SharePathErrorBaseV2 +impl From for SharePathErrorV2 { + fn from(parent: SharePathErrorBaseV2) -> Self { + match parent { + SharePathErrorBaseV2::IsFile => SharePathErrorV2::IsFile, + SharePathErrorBaseV2::InsideSharedFolder => SharePathErrorV2::InsideSharedFolder, + SharePathErrorBaseV2::ContainsSharedFolder => SharePathErrorV2::ContainsSharedFolder, + SharePathErrorBaseV2::ContainsTeamFolder => SharePathErrorV2::ContainsTeamFolder, + SharePathErrorBaseV2::IsAppFolder => SharePathErrorV2::IsAppFolder, + SharePathErrorBaseV2::InsideAppFolder => SharePathErrorV2::InsideAppFolder, + SharePathErrorBaseV2::IsPublicFolder => SharePathErrorV2::IsPublicFolder, + SharePathErrorBaseV2::InsidePublicFolder => SharePathErrorV2::InsidePublicFolder, + SharePathErrorBaseV2::AlreadyShared(x) => SharePathErrorV2::AlreadyShared(x), + SharePathErrorBaseV2::InvalidPath => SharePathErrorV2::InvalidPath, + SharePathErrorBaseV2::IsOsxPackage => SharePathErrorV2::IsOsxPackage, + SharePathErrorBaseV2::InsideOsxPackage => SharePathErrorV2::InsideOsxPackage, + SharePathErrorBaseV2::IsVault => SharePathErrorV2::IsVault, + SharePathErrorBaseV2::IsVaultLocked => SharePathErrorV2::IsVaultLocked, + SharePathErrorBaseV2::Other => SharePathErrorV2::Other, } } } - /// Metadata of a shared link for a file or folder. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. @@ -14843,7 +16079,7 @@ pub struct SharedContentLinkMetadata { pub access_level: Option, /// The shared folder that prevents the link audience for this link from being more restrictive. pub audience_restricting_shared_folder: Option, - /// Whether the link has an expiry set on it. A link with an expiry will have its audience + /// Whether the link has an expiry set on it. A link with an expiry will have its audience /// changed to members when the expiry is reached. pub expiry: Option, /// The content inside this folder with link audience different than this folder's. This is only @@ -15093,7 +16329,7 @@ pub struct SharedContentLinkMetadataBase { pub access_level: Option, /// The shared folder that prevents the link audience for this link from being more restrictive. pub audience_restricting_shared_folder: Option, - /// Whether the link has an expiry set on it. A link with an expiry will have its audience + /// Whether the link has an expiry set on it. A link with an expiry will have its audience /// changed to members when the expiry is reached. pub expiry: Option, } @@ -16168,6 +17404,8 @@ pub struct SharedFolderMetadata { pub permissions: Option>, /// Whether the folder inherits its members from its parent. pub access_inheritance: AccessInheritance, + /// The ID of the content. + pub folder_id: Option, } impl SharedFolderMetadata { @@ -16199,6 +17437,7 @@ impl SharedFolderMetadata { link_metadata: None, permissions: None, access_inheritance: AccessInheritance::Inherit, + folder_id: None, } } @@ -16249,6 +17488,11 @@ impl SharedFolderMetadata { self.access_inheritance = value; self } + + pub fn with_folder_id(mut self, value: crate::types::files::FileId) -> Self { + self.folder_id = Some(value); + self + } } const SHARED_FOLDER_METADATA_FIELDS: &[&str] = &["access_type", @@ -16267,7 +17511,8 @@ const SHARED_FOLDER_METADATA_FIELDS: &[&str] = &["access_type", "parent_folder_name", "link_metadata", "permissions", - "access_inheritance"]; + "access_inheritance", + "folder_id"]; impl SharedFolderMetadata { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, @@ -16296,6 +17541,7 @@ impl SharedFolderMetadata { let mut field_link_metadata = None; let mut field_permissions = None; let mut field_access_inheritance = None; + let mut field_folder_id = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; @@ -16402,6 +17648,12 @@ impl SharedFolderMetadata { } field_access_inheritance = Some(map.next_value()?); } + "folder_id" => { + if field_folder_id.is_some() { + return Err(::serde::de::Error::duplicate_field("folder_id")); + } + field_folder_id = Some(map.next_value()?); + } _ => { // unknown field allowed and ignored map.next_value::<::serde_json::Value>()?; @@ -16429,6 +17681,7 @@ impl SharedFolderMetadata { link_metadata: field_link_metadata.and_then(Option::flatten), permissions: field_permissions.and_then(Option::flatten), access_inheritance: field_access_inheritance.unwrap_or(AccessInheritance::Inherit), + folder_id: field_folder_id.and_then(Option::flatten), }; Ok(Some(result)) } @@ -16473,6 +17726,9 @@ impl SharedFolderMetadata { if self.access_inheritance != AccessInheritance::Inherit { s.serialize_field("access_inheritance", &self.access_inheritance)?; } + if let Some(val) = &self.folder_id { + s.serialize_field("folder_id", val)?; + } Ok(()) } } @@ -16499,7 +17755,7 @@ impl ::serde::ser::Serialize for SharedFolderMetadata { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SharedFolderMetadata", 17)?; + let mut s = serializer.serialize_struct("SharedFolderMetadata", 18)?; self.internal_serialize::(&mut s)?; s.end() } @@ -16938,6 +18194,8 @@ pub enum SharedLinkError { SharedLinkAccessDenied, /// This type of link is not supported; use [`files::export()`](crate::files::export) instead. UnsupportedLinkType, + /// Private shared links do not support `path` or `link_password` parameter fields. + UnsupportedParameterField, /// Catch-all used for unrecognized values returned from the server. Encountering this value /// typically indicates that this SDK version is out of date. Other, @@ -16962,6 +18220,7 @@ impl<'de> ::serde::de::Deserialize<'de> for SharedLinkError { "shared_link_not_found" => SharedLinkError::SharedLinkNotFound, "shared_link_access_denied" => SharedLinkError::SharedLinkAccessDenied, "unsupported_link_type" => SharedLinkError::UnsupportedLinkType, + "unsupported_parameter_field" => SharedLinkError::UnsupportedParameterField, _ => SharedLinkError::Other, }; crate::eat_json_fields(&mut map)?; @@ -16971,6 +18230,7 @@ impl<'de> ::serde::de::Deserialize<'de> for SharedLinkError { const VARIANTS: &[&str] = &["shared_link_not_found", "shared_link_access_denied", "unsupported_link_type", + "unsupported_parameter_field", "other"]; deserializer.deserialize_struct("SharedLinkError", VARIANTS, EnumVisitor) } @@ -16999,6 +18259,12 @@ impl ::serde::ser::Serialize for SharedLinkError { s.serialize_field(".tag", "unsupported_link_type")?; s.end() } + SharedLinkError::UnsupportedParameterField => { + // unit + let mut s = serializer.serialize_struct("SharedLinkError", 1)?; + s.serialize_field(".tag", "unsupported_parameter_field")?; + s.end() + } SharedLinkError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) } } @@ -17012,6 +18278,7 @@ impl ::std::fmt::Display for SharedLinkError { match self { SharedLinkError::SharedLinkNotFound => f.write_str("The shared link wasn't found."), SharedLinkError::SharedLinkAccessDenied => f.write_str("The caller is not allowed to access this shared link."), + SharedLinkError::UnsupportedParameterField => f.write_str("Private shared links do not support `path` or `link_password` parameter fields."), _ => write!(f, "{:?}", *self), } } @@ -17081,6 +18348,118 @@ impl ::serde::ser::Serialize for SharedLinkMetadata { } } +/// The potential errors for a call to get_shared_link_metadata. +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // variants may be added in the future +pub enum SharedLinkMetadataError { + /// The shared link wasn't found. + SharedLinkNotFound, + /// The caller is not allowed to access this shared link. + SharedLinkAccessDenied, + /// This type of link is not supported; use [`files::export()`](crate::files::export) instead. + UnsupportedLinkType, + /// Private shared links do not support `path` or `link_password` parameter fields. + UnsupportedParameterField, + /// Catch-all used for unrecognized values returned from the server. Encountering this value + /// typically indicates that this SDK version is out of date. + Other, +} + +impl<'de> ::serde::de::Deserialize<'de> for SharedLinkMetadataError { + fn deserialize>(deserializer: D) -> Result { + // union deserializer + use serde::de::{self, MapAccess, Visitor}; + struct EnumVisitor; + impl<'de> Visitor<'de> for EnumVisitor { + type Value = SharedLinkMetadataError; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a SharedLinkMetadataError structure") + } + fn visit_map>(self, mut map: V) -> Result { + let tag: &str = match map.next_key()? { + Some(".tag") => map.next_value()?, + _ => return Err(de::Error::missing_field(".tag")) + }; + let value = match tag { + "shared_link_not_found" => SharedLinkMetadataError::SharedLinkNotFound, + "shared_link_access_denied" => SharedLinkMetadataError::SharedLinkAccessDenied, + "unsupported_link_type" => SharedLinkMetadataError::UnsupportedLinkType, + "unsupported_parameter_field" => SharedLinkMetadataError::UnsupportedParameterField, + _ => SharedLinkMetadataError::Other, + }; + crate::eat_json_fields(&mut map)?; + Ok(value) + } + } + const VARIANTS: &[&str] = &["shared_link_not_found", + "shared_link_access_denied", + "unsupported_link_type", + "unsupported_parameter_field", + "other"]; + deserializer.deserialize_struct("SharedLinkMetadataError", VARIANTS, EnumVisitor) + } +} + +impl ::serde::ser::Serialize for SharedLinkMetadataError { + fn serialize(&self, serializer: S) -> Result { + // union serializer + use serde::ser::SerializeStruct; + match self { + SharedLinkMetadataError::SharedLinkNotFound => { + // unit + let mut s = serializer.serialize_struct("SharedLinkMetadataError", 1)?; + s.serialize_field(".tag", "shared_link_not_found")?; + s.end() + } + SharedLinkMetadataError::SharedLinkAccessDenied => { + // unit + let mut s = serializer.serialize_struct("SharedLinkMetadataError", 1)?; + s.serialize_field(".tag", "shared_link_access_denied")?; + s.end() + } + SharedLinkMetadataError::UnsupportedLinkType => { + // unit + let mut s = serializer.serialize_struct("SharedLinkMetadataError", 1)?; + s.serialize_field(".tag", "unsupported_link_type")?; + s.end() + } + SharedLinkMetadataError::UnsupportedParameterField => { + // unit + let mut s = serializer.serialize_struct("SharedLinkMetadataError", 1)?; + s.serialize_field(".tag", "unsupported_parameter_field")?; + s.end() + } + SharedLinkMetadataError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) + } + } +} + +impl ::std::error::Error for SharedLinkMetadataError { +} + +impl ::std::fmt::Display for SharedLinkMetadataError { + fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + match self { + SharedLinkMetadataError::SharedLinkNotFound => f.write_str("The shared link wasn't found."), + SharedLinkMetadataError::SharedLinkAccessDenied => f.write_str("The caller is not allowed to access this shared link."), + SharedLinkMetadataError::UnsupportedParameterField => f.write_str("Private shared links do not support `path` or `link_password` parameter fields."), + _ => write!(f, "{:?}", *self), + } + } +} + +// union extends SharedLinkError +impl From for SharedLinkMetadataError { + fn from(parent: SharedLinkError) -> Self { + match parent { + SharedLinkError::SharedLinkNotFound => SharedLinkMetadataError::SharedLinkNotFound, + SharedLinkError::SharedLinkAccessDenied => SharedLinkMetadataError::SharedLinkAccessDenied, + SharedLinkError::UnsupportedLinkType => SharedLinkMetadataError::UnsupportedLinkType, + SharedLinkError::UnsupportedParameterField => SharedLinkMetadataError::UnsupportedParameterField, + SharedLinkError::Other => SharedLinkMetadataError::Other, + } + } +} /// Who can view shared links in this folder. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // variants may be added in the future @@ -18995,7 +20374,7 @@ pub struct UpdateFolderPolicyArg { pub link_settings: Option, /// A list of `FolderAction`s corresponding to `FolderPermission`s that should appear in the /// response's [`SharedFolderMetadata::permissions`](SharedFolderMetadata) field describing the - /// actions the authenticated user can perform on the folder. + /// actions the authenticated user can perform on the folder. pub actions: Option>, } @@ -19198,7 +20577,8 @@ pub enum UpdateFolderPolicyError { /// [`UpdateFolderPolicyArg::member_policy`](UpdateFolderPolicyArg) was set even though user is /// not on a team. NotOnTeam, - /// Team policy is more restrictive than [`ShareFolderArg::member_policy`](ShareFolderArg). + /// Team policy or group sharing settings are more restrictive than + /// [`ShareFolderArg::member_policy`](ShareFolderArg). TeamPolicyDisallowsMemberPolicy, /// The current account is not allowed to select the specified /// [`ShareFolderArg::shared_link_policy`](ShareFolderArg). @@ -19338,7 +20718,7 @@ pub struct UserFileMembershipInfo { pub permissions: Option>, /// Never set. pub initials: Option, - /// True if the member has access from a parent folder. + /// True if the member has access on a parent folder. pub is_inherited: bool, /// The UTC timestamp of when the user has last seen the content. Only populated if the user has /// seen the content and the caller has a plan that includes viewer history. @@ -19716,7 +21096,7 @@ pub struct UserMembershipInfo { pub permissions: Option>, /// Never set. pub initials: Option, - /// True if the member has access from a parent folder. + /// True if the member has access on a parent folder. pub is_inherited: bool, } diff --git a/src/generated/types/team.rs b/src/generated/types/team.rs index 2e980476..f63f42bd 100644 --- a/src/generated/types/team.rs +++ b/src/generated/types/team.rs @@ -19,7 +19,6 @@ pub type ListHeldRevisionCursor = String; pub type MembersGetInfoResult = Vec; pub type NumberPerDay = Vec>; pub type Path = String; -pub type SecondaryEmail = crate::types::secondary_emails::SecondaryEmail; pub type TeamMemberRoleId = String; pub type UserQuota = u32; @@ -273,7 +272,7 @@ impl From for DeviceSession { #[non_exhaustive] // variants may be added in the future pub enum AddSecondaryEmailResult { /// Describes a secondary email that was successfully added to a user. - Success(SecondaryEmail), + Success(crate::types::secondary_emails::SecondaryEmail), /// Secondary email is not available to be claimed by the user. Unavailable(crate::types::common::EmailAddress), /// Secondary email is already a pending email for the user. @@ -311,7 +310,7 @@ impl<'de> ::serde::de::Deserialize<'de> for AddSecondaryEmailResult { _ => return Err(de::Error::missing_field(".tag")) }; let value = match tag { - "success" => AddSecondaryEmailResult::Success(SecondaryEmail::internal_deserialize(&mut map)?), + "success" => AddSecondaryEmailResult::Success(crate::types::secondary_emails::SecondaryEmail::internal_deserialize(&mut map)?), "unavailable" => { match map.next_key()? { Some("unavailable") => AddSecondaryEmailResult::Unavailable(map.next_value()?), @@ -2478,7 +2477,7 @@ pub struct DevicesActive { pub ios: NumberPerDay, /// Array of number of linked android devices with activity. pub android: NumberPerDay, - /// Array of number of other linked devices (blackberry, windows phone, etc) with activity. + /// Array of number of other linked devices (blackberry, windows phone, etc) with activity. pub other: NumberPerDay, /// Array of total number of linked clients with activity. pub total: NumberPerDay, @@ -3411,6 +3410,8 @@ pub enum Feature { HasTeamFileEvents, /// Does this team have team selective sync enabled. HasTeamSelectiveSync, + /// Does this team have team member folder. + HasDistinctMemberHomes, /// Catch-all used for unrecognized values returned from the server. Encountering this value /// typically indicates that this SDK version is out of date. Other, @@ -3436,6 +3437,7 @@ impl<'de> ::serde::de::Deserialize<'de> for Feature { "has_team_shared_dropbox" => Feature::HasTeamSharedDropbox, "has_team_file_events" => Feature::HasTeamFileEvents, "has_team_selective_sync" => Feature::HasTeamSelectiveSync, + "has_distinct_member_homes" => Feature::HasDistinctMemberHomes, _ => Feature::Other, }; crate::eat_json_fields(&mut map)?; @@ -3446,6 +3448,7 @@ impl<'de> ::serde::de::Deserialize<'de> for Feature { "has_team_shared_dropbox", "has_team_file_events", "has_team_selective_sync", + "has_distinct_member_homes", "other"]; deserializer.deserialize_struct("Feature", VARIANTS, EnumVisitor) } @@ -3480,6 +3483,12 @@ impl ::serde::ser::Serialize for Feature { s.serialize_field(".tag", "has_team_selective_sync")?; s.end() } + Feature::HasDistinctMemberHomes => { + // unit + let mut s = serializer.serialize_struct("Feature", 1)?; + s.serialize_field(".tag", "has_distinct_member_homes")?; + s.end() + } Feature::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) } } @@ -3494,6 +3503,7 @@ pub enum FeatureValue { HasTeamSharedDropbox(HasTeamSharedDropboxValue), HasTeamFileEvents(HasTeamFileEventsValue), HasTeamSelectiveSync(HasTeamSelectiveSyncValue), + HasDistinctMemberHomes(HasDistinctMemberHomesValue), /// Catch-all used for unrecognized values returned from the server. Encountering this value /// typically indicates that this SDK version is out of date. Other, @@ -3543,6 +3553,13 @@ impl<'de> ::serde::de::Deserialize<'de> for FeatureValue { _ => return Err(de::Error::unknown_field(tag, VARIANTS)) } } + "has_distinct_member_homes" => { + match map.next_key()? { + Some("has_distinct_member_homes") => FeatureValue::HasDistinctMemberHomes(map.next_value()?), + None => return Err(de::Error::missing_field("has_distinct_member_homes")), + _ => return Err(de::Error::unknown_field(tag, VARIANTS)) + } + } _ => FeatureValue::Other, }; crate::eat_json_fields(&mut map)?; @@ -3553,6 +3570,7 @@ impl<'de> ::serde::de::Deserialize<'de> for FeatureValue { "has_team_shared_dropbox", "has_team_file_events", "has_team_selective_sync", + "has_distinct_member_homes", "other"]; deserializer.deserialize_struct("FeatureValue", VARIANTS, EnumVisitor) } @@ -3591,6 +3609,13 @@ impl ::serde::ser::Serialize for FeatureValue { s.serialize_field("has_team_selective_sync", x)?; s.end() } + FeatureValue::HasDistinctMemberHomes(x) => { + // union or polymporphic struct + let mut s = serializer.serialize_struct("FeatureValue", 2)?; + s.serialize_field(".tag", "has_distinct_member_homes")?; + s.serialize_field("has_distinct_member_homes", x)?; + s.end() + } FeatureValue::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) } } @@ -5693,8 +5718,8 @@ pub struct GroupMembersAddArg { pub group: GroupSelector, /// List of users to be added to the group. pub members: Vec, - /// Whether to return the list of members in the group. Note that the default value will cause - /// all the group members to be returned in the response. This may take a long time for large + /// Whether to return the list of members in the group. Note that the default value will cause + /// all the group members to be returned in the response. This may take a long time for large /// groups. pub return_members: bool, } @@ -6116,8 +6141,8 @@ pub struct GroupMembersRemoveArg { pub group: GroupSelector, /// List of users to be removed from the group. pub users: Vec, - /// Whether to return the list of members in the group. Note that the default value will cause - /// all the group members to be returned in the response. This may take a long time for large + /// Whether to return the list of members in the group. Note that the default value will cause + /// all the group members to be returned in the response. This may take a long time for large /// groups. pub return_members: bool, } @@ -6606,8 +6631,8 @@ pub struct GroupMembersSetAccessTypeArg { pub user: UserSelectorArg, /// New group access type the user will have. pub access_type: GroupAccessType, - /// Whether to return the list of members in the group. Note that the default value will cause - /// all the group members to be returned in the response. This may take a long time for large + /// Whether to return the list of members in the group. Note that the default value will cause + /// all the group members to be returned in the response. This may take a long time for large /// groups. pub return_members: bool, } @@ -6981,8 +7006,8 @@ impl From for GroupSelectorWithTeamGroupError { pub struct GroupUpdateArgs { /// Specify a group. pub group: GroupSelector, - /// Whether to return the list of members in the group. Note that the default value will cause - /// all the group members to be returned in the response. This may take a long time for large + /// Whether to return the list of members in the group. Note that the default value will cause + /// all the group members to be returned in the response. This may take a long time for large /// groups. pub return_members: bool, /// Optional argument. Set group name to this if provided. @@ -8353,6 +8378,69 @@ impl ::serde::ser::Serialize for GroupsSelector { } } +/// The value for [`Feature::HasDistinctMemberHomes`]. +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // variants may be added in the future +pub enum HasDistinctMemberHomesValue { + /// Does this team have distinct team member homes. + HasDistinctMemberHomes(bool), + /// Catch-all used for unrecognized values returned from the server. Encountering this value + /// typically indicates that this SDK version is out of date. + Other, +} + +impl<'de> ::serde::de::Deserialize<'de> for HasDistinctMemberHomesValue { + fn deserialize>(deserializer: D) -> Result { + // union deserializer + use serde::de::{self, MapAccess, Visitor}; + struct EnumVisitor; + impl<'de> Visitor<'de> for EnumVisitor { + type Value = HasDistinctMemberHomesValue; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a HasDistinctMemberHomesValue structure") + } + fn visit_map>(self, mut map: V) -> Result { + let tag: &str = match map.next_key()? { + Some(".tag") => map.next_value()?, + _ => return Err(de::Error::missing_field(".tag")) + }; + let value = match tag { + "has_distinct_member_homes" => { + match map.next_key()? { + Some("has_distinct_member_homes") => HasDistinctMemberHomesValue::HasDistinctMemberHomes(map.next_value()?), + None => return Err(de::Error::missing_field("has_distinct_member_homes")), + _ => return Err(de::Error::unknown_field(tag, VARIANTS)) + } + } + _ => HasDistinctMemberHomesValue::Other, + }; + crate::eat_json_fields(&mut map)?; + Ok(value) + } + } + const VARIANTS: &[&str] = &["has_distinct_member_homes", + "other"]; + deserializer.deserialize_struct("HasDistinctMemberHomesValue", VARIANTS, EnumVisitor) + } +} + +impl ::serde::ser::Serialize for HasDistinctMemberHomesValue { + fn serialize(&self, serializer: S) -> Result { + // union serializer + use serde::ser::SerializeStruct; + match self { + HasDistinctMemberHomesValue::HasDistinctMemberHomes(x) => { + // primitive + let mut s = serializer.serialize_struct("HasDistinctMemberHomesValue", 2)?; + s.serialize_field(".tag", "has_distinct_member_homes")?; + s.serialize_field("has_distinct_member_homes", x)?; + s.end() + } + HasDistinctMemberHomesValue::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) + } + } +} + /// The value for [`Feature::HasTeamFileEvents`]. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // variants may be added in the future @@ -8545,8 +8633,8 @@ impl ::serde::ser::Serialize for HasTeamSharedDropboxValue { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. pub struct IncludeMembersArg { - /// Whether to return the list of members in the group. Note that the default value will cause - /// all the group members to be returned in the response. This may take a long time for large + /// Whether to return the list of members in the group. Note that the default value will cause + /// all the group members to be returned in the response. This may take a long time for large /// groups. pub return_members: bool, } @@ -16313,6 +16401,142 @@ impl From for MembersDeactivateError { } } #[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // variants may be added in the future +pub enum MembersDeleteFormerMemberFilesError { + /// No matching user found. The provided team_member_id, email, or external_id does not exist on + /// this team. + UserNotFound, + /// The user is not a member of the team. + UserNotInTeam, + /// Cannot permanently delete files while it's being transferred. + TransferInProgress, + /// Cannot permanently delete files that have already been transferred. + AlreadyTransferred, + /// Cannot permanently delete files that have already been transferred or deleted. + AlreadyTransferredOrDeleted, + /// User has not been removed from the team. + UserNotRemoved, + /// Catch-all used for unrecognized values returned from the server. Encountering this value + /// typically indicates that this SDK version is out of date. + Other, +} + +impl<'de> ::serde::de::Deserialize<'de> for MembersDeleteFormerMemberFilesError { + fn deserialize>(deserializer: D) -> Result { + // union deserializer + use serde::de::{self, MapAccess, Visitor}; + struct EnumVisitor; + impl<'de> Visitor<'de> for EnumVisitor { + type Value = MembersDeleteFormerMemberFilesError; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a MembersDeleteFormerMemberFilesError structure") + } + fn visit_map>(self, mut map: V) -> Result { + let tag: &str = match map.next_key()? { + Some(".tag") => map.next_value()?, + _ => return Err(de::Error::missing_field(".tag")) + }; + let value = match tag { + "user_not_found" => MembersDeleteFormerMemberFilesError::UserNotFound, + "user_not_in_team" => MembersDeleteFormerMemberFilesError::UserNotInTeam, + "transfer_in_progress" => MembersDeleteFormerMemberFilesError::TransferInProgress, + "already_transferred" => MembersDeleteFormerMemberFilesError::AlreadyTransferred, + "already_transferred_or_deleted" => MembersDeleteFormerMemberFilesError::AlreadyTransferredOrDeleted, + "user_not_removed" => MembersDeleteFormerMemberFilesError::UserNotRemoved, + _ => MembersDeleteFormerMemberFilesError::Other, + }; + crate::eat_json_fields(&mut map)?; + Ok(value) + } + } + const VARIANTS: &[&str] = &["user_not_found", + "user_not_in_team", + "other", + "transfer_in_progress", + "already_transferred", + "already_transferred_or_deleted", + "user_not_removed"]; + deserializer.deserialize_struct("MembersDeleteFormerMemberFilesError", VARIANTS, EnumVisitor) + } +} + +impl ::serde::ser::Serialize for MembersDeleteFormerMemberFilesError { + fn serialize(&self, serializer: S) -> Result { + // union serializer + use serde::ser::SerializeStruct; + match self { + MembersDeleteFormerMemberFilesError::UserNotFound => { + // unit + let mut s = serializer.serialize_struct("MembersDeleteFormerMemberFilesError", 1)?; + s.serialize_field(".tag", "user_not_found")?; + s.end() + } + MembersDeleteFormerMemberFilesError::UserNotInTeam => { + // unit + let mut s = serializer.serialize_struct("MembersDeleteFormerMemberFilesError", 1)?; + s.serialize_field(".tag", "user_not_in_team")?; + s.end() + } + MembersDeleteFormerMemberFilesError::TransferInProgress => { + // unit + let mut s = serializer.serialize_struct("MembersDeleteFormerMemberFilesError", 1)?; + s.serialize_field(".tag", "transfer_in_progress")?; + s.end() + } + MembersDeleteFormerMemberFilesError::AlreadyTransferred => { + // unit + let mut s = serializer.serialize_struct("MembersDeleteFormerMemberFilesError", 1)?; + s.serialize_field(".tag", "already_transferred")?; + s.end() + } + MembersDeleteFormerMemberFilesError::AlreadyTransferredOrDeleted => { + // unit + let mut s = serializer.serialize_struct("MembersDeleteFormerMemberFilesError", 1)?; + s.serialize_field(".tag", "already_transferred_or_deleted")?; + s.end() + } + MembersDeleteFormerMemberFilesError::UserNotRemoved => { + // unit + let mut s = serializer.serialize_struct("MembersDeleteFormerMemberFilesError", 1)?; + s.serialize_field(".tag", "user_not_removed")?; + s.end() + } + MembersDeleteFormerMemberFilesError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) + } + } +} + +impl ::std::error::Error for MembersDeleteFormerMemberFilesError { +} + +impl ::std::fmt::Display for MembersDeleteFormerMemberFilesError { + fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + match self { + MembersDeleteFormerMemberFilesError::UserNotFound => f.write_str("No matching user found. The provided team_member_id, email, or external_id does not exist on this team."), + MembersDeleteFormerMemberFilesError::UserNotInTeam => f.write_str("The user is not a member of the team."), + MembersDeleteFormerMemberFilesError::TransferInProgress => f.write_str("Cannot permanently delete files while it's being transferred."), + MembersDeleteFormerMemberFilesError::AlreadyTransferred => f.write_str("Cannot permanently delete files that have already been transferred."), + MembersDeleteFormerMemberFilesError::AlreadyTransferredOrDeleted => f.write_str("Cannot permanently delete files that have already been transferred or deleted."), + MembersDeleteFormerMemberFilesError::UserNotRemoved => f.write_str("User has not been removed from the team."), + _ => write!(f, "{:?}", *self), + } + } +} + +// union extends MembersPermanentlyDeleteFilesError +impl From for MembersDeleteFormerMemberFilesError { + fn from(parent: MembersPermanentlyDeleteFilesError) -> Self { + match parent { + MembersPermanentlyDeleteFilesError::UserNotFound => MembersDeleteFormerMemberFilesError::UserNotFound, + MembersPermanentlyDeleteFilesError::UserNotInTeam => MembersDeleteFormerMemberFilesError::UserNotInTeam, + MembersPermanentlyDeleteFilesError::Other => MembersDeleteFormerMemberFilesError::Other, + MembersPermanentlyDeleteFilesError::TransferInProgress => MembersDeleteFormerMemberFilesError::TransferInProgress, + MembersPermanentlyDeleteFilesError::AlreadyTransferred => MembersDeleteFormerMemberFilesError::AlreadyTransferred, + MembersPermanentlyDeleteFilesError::AlreadyTransferredOrDeleted => MembersDeleteFormerMemberFilesError::AlreadyTransferredOrDeleted, + } + } +} +#[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. pub struct MembersDeleteProfilePhotoArg { /// Identity of the user whose profile photo will be deleted. @@ -16502,6 +16726,99 @@ impl From for MembersDeleteProfilePhotoError { } } } +/// Exactly one of team_member_id, email, or external_id must be provided to identify a former team +/// member. +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct MembersFormerMemberArg { + /// Identity of user whose files will be permanently deleted. + pub user: UserSelectorArg, +} + +impl MembersFormerMemberArg { + pub fn new(user: UserSelectorArg) -> Self { + MembersFormerMemberArg { + user, + } + } +} + +const MEMBERS_FORMER_MEMBER_ARG_FIELDS: &[&str] = &["user"]; +impl MembersFormerMemberArg { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_user = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "user" => { + if field_user.is_some() { + return Err(::serde::de::Error::duplicate_field("user")); + } + field_user = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } + } + } + if optional && nothing { + return Ok(None); + } + let result = MembersFormerMemberArg { + user: field_user.ok_or_else(|| ::serde::de::Error::missing_field("user"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("user", &self.user)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for MembersFormerMemberArg { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = MembersFormerMemberArg; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a MembersFormerMemberArg struct") + } + fn visit_map>(self, map: V) -> Result { + MembersFormerMemberArg::internal_deserialize(map) + } + } + deserializer.deserialize_struct("MembersFormerMemberArg", MEMBERS_FORMER_MEMBER_ARG_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for MembersFormerMemberArg { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("MembersFormerMemberArg", 1)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + /// Available TeamMemberRole for the connected team. To be used with /// [`members_set_admin_permissions_v2()`](crate::team::members_set_admin_permissions_v2). #[derive(Debug, Clone, PartialEq, Eq)] @@ -17813,6 +18130,128 @@ impl ::serde::ser::Serialize for MembersListV2Result { } } +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // variants may be added in the future +pub enum MembersPermanentlyDeleteFilesError { + /// No matching user found. The provided team_member_id, email, or external_id does not exist on + /// this team. + UserNotFound, + /// The user is not a member of the team. + UserNotInTeam, + /// Cannot permanently delete files while it's being transferred. + TransferInProgress, + /// Cannot permanently delete files that have already been transferred. + AlreadyTransferred, + /// Cannot permanently delete files that have already been transferred or deleted. + AlreadyTransferredOrDeleted, + /// Catch-all used for unrecognized values returned from the server. Encountering this value + /// typically indicates that this SDK version is out of date. + Other, +} + +impl<'de> ::serde::de::Deserialize<'de> for MembersPermanentlyDeleteFilesError { + fn deserialize>(deserializer: D) -> Result { + // union deserializer + use serde::de::{self, MapAccess, Visitor}; + struct EnumVisitor; + impl<'de> Visitor<'de> for EnumVisitor { + type Value = MembersPermanentlyDeleteFilesError; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a MembersPermanentlyDeleteFilesError structure") + } + fn visit_map>(self, mut map: V) -> Result { + let tag: &str = match map.next_key()? { + Some(".tag") => map.next_value()?, + _ => return Err(de::Error::missing_field(".tag")) + }; + let value = match tag { + "user_not_found" => MembersPermanentlyDeleteFilesError::UserNotFound, + "user_not_in_team" => MembersPermanentlyDeleteFilesError::UserNotInTeam, + "transfer_in_progress" => MembersPermanentlyDeleteFilesError::TransferInProgress, + "already_transferred" => MembersPermanentlyDeleteFilesError::AlreadyTransferred, + "already_transferred_or_deleted" => MembersPermanentlyDeleteFilesError::AlreadyTransferredOrDeleted, + _ => MembersPermanentlyDeleteFilesError::Other, + }; + crate::eat_json_fields(&mut map)?; + Ok(value) + } + } + const VARIANTS: &[&str] = &["user_not_found", + "user_not_in_team", + "other", + "transfer_in_progress", + "already_transferred", + "already_transferred_or_deleted"]; + deserializer.deserialize_struct("MembersPermanentlyDeleteFilesError", VARIANTS, EnumVisitor) + } +} + +impl ::serde::ser::Serialize for MembersPermanentlyDeleteFilesError { + fn serialize(&self, serializer: S) -> Result { + // union serializer + use serde::ser::SerializeStruct; + match self { + MembersPermanentlyDeleteFilesError::UserNotFound => { + // unit + let mut s = serializer.serialize_struct("MembersPermanentlyDeleteFilesError", 1)?; + s.serialize_field(".tag", "user_not_found")?; + s.end() + } + MembersPermanentlyDeleteFilesError::UserNotInTeam => { + // unit + let mut s = serializer.serialize_struct("MembersPermanentlyDeleteFilesError", 1)?; + s.serialize_field(".tag", "user_not_in_team")?; + s.end() + } + MembersPermanentlyDeleteFilesError::TransferInProgress => { + // unit + let mut s = serializer.serialize_struct("MembersPermanentlyDeleteFilesError", 1)?; + s.serialize_field(".tag", "transfer_in_progress")?; + s.end() + } + MembersPermanentlyDeleteFilesError::AlreadyTransferred => { + // unit + let mut s = serializer.serialize_struct("MembersPermanentlyDeleteFilesError", 1)?; + s.serialize_field(".tag", "already_transferred")?; + s.end() + } + MembersPermanentlyDeleteFilesError::AlreadyTransferredOrDeleted => { + // unit + let mut s = serializer.serialize_struct("MembersPermanentlyDeleteFilesError", 1)?; + s.serialize_field(".tag", "already_transferred_or_deleted")?; + s.end() + } + MembersPermanentlyDeleteFilesError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) + } + } +} + +impl ::std::error::Error for MembersPermanentlyDeleteFilesError { +} + +impl ::std::fmt::Display for MembersPermanentlyDeleteFilesError { + fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + match self { + MembersPermanentlyDeleteFilesError::UserNotFound => f.write_str("No matching user found. The provided team_member_id, email, or external_id does not exist on this team."), + MembersPermanentlyDeleteFilesError::UserNotInTeam => f.write_str("The user is not a member of the team."), + MembersPermanentlyDeleteFilesError::TransferInProgress => f.write_str("Cannot permanently delete files while it's being transferred."), + MembersPermanentlyDeleteFilesError::AlreadyTransferred => f.write_str("Cannot permanently delete files that have already been transferred."), + MembersPermanentlyDeleteFilesError::AlreadyTransferredOrDeleted => f.write_str("Cannot permanently delete files that have already been transferred or deleted."), + _ => write!(f, "{:?}", *self), + } + } +} + +// union extends MembersDeactivateError +impl From for MembersPermanentlyDeleteFilesError { + fn from(parent: MembersDeactivateError) -> Self { + match parent { + MembersDeactivateError::UserNotFound => MembersPermanentlyDeleteFilesError::UserNotFound, + MembersDeactivateError::UserNotInTeam => MembersPermanentlyDeleteFilesError::UserNotInTeam, + MembersDeactivateError::Other => MembersPermanentlyDeleteFilesError::Other, + } + } +} /// Exactly one of team_member_id, email, or external_id must be provided to identify the user /// account. #[derive(Debug, Clone, PartialEq, Eq)] @@ -18028,8 +18467,8 @@ pub struct MembersRemoveArg { /// transfer_dest_id argument was provided, then this argument must be provided as well. pub transfer_admin_id: Option, /// Downgrade the member to a Basic account. The user will retain the email address associated - /// with their Dropbox account and data in their account that is not restricted to team - /// members. In order to keep the account the argument `wipe_data` should be set to `false`. + /// with their Dropbox account and data in their account that is not restricted to team members. + /// In order to keep the account the argument `wipe_data` should be set to `false`. pub keep_account: bool, /// If provided, allows removed users to keep access to Dropbox folders (not Dropbox Paper /// folders) already explicitly shared with them (not via a group) when they are downgraded to a @@ -18037,6 +18476,9 @@ pub struct MembersRemoveArg { /// In order to keep the sharing relationships, the arguments `wipe_data` should be set to /// `false` and `keep_account` should be set to `true`. pub retain_team_shares: bool, + /// Permanently delete the data in the deleted member's account. After permanent deletion, the + /// data is no longer available to be transferred to a different user. + pub permanently_delete_files: bool, } impl MembersRemoveArg { @@ -18048,6 +18490,7 @@ impl MembersRemoveArg { transfer_admin_id: None, keep_account: false, retain_team_shares: false, + permanently_delete_files: false, } } @@ -18075,6 +18518,11 @@ impl MembersRemoveArg { self.retain_team_shares = value; self } + + pub fn with_permanently_delete_files(mut self, value: bool) -> Self { + self.permanently_delete_files = value; + self + } } const MEMBERS_REMOVE_ARG_FIELDS: &[&str] = &["user", @@ -18082,7 +18530,8 @@ const MEMBERS_REMOVE_ARG_FIELDS: &[&str] = &["user", "transfer_dest_id", "transfer_admin_id", "keep_account", - "retain_team_shares"]; + "retain_team_shares", + "permanently_delete_files"]; impl MembersRemoveArg { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, @@ -18100,6 +18549,7 @@ impl MembersRemoveArg { let mut field_transfer_admin_id = None; let mut field_keep_account = None; let mut field_retain_team_shares = None; + let mut field_permanently_delete_files = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; @@ -18140,6 +18590,12 @@ impl MembersRemoveArg { } field_retain_team_shares = Some(map.next_value()?); } + "permanently_delete_files" => { + if field_permanently_delete_files.is_some() { + return Err(::serde::de::Error::duplicate_field("permanently_delete_files")); + } + field_permanently_delete_files = Some(map.next_value()?); + } _ => { // unknown field allowed and ignored map.next_value::<::serde_json::Value>()?; @@ -18156,6 +18612,7 @@ impl MembersRemoveArg { transfer_admin_id: field_transfer_admin_id.and_then(Option::flatten), keep_account: field_keep_account.unwrap_or(false), retain_team_shares: field_retain_team_shares.unwrap_or(false), + permanently_delete_files: field_permanently_delete_files.unwrap_or(false), }; Ok(Some(result)) } @@ -18181,6 +18638,9 @@ impl MembersRemoveArg { if self.retain_team_shares { s.serialize_field("retain_team_shares", &self.retain_team_shares)?; } + if self.permanently_delete_files { + s.serialize_field("permanently_delete_files", &self.permanently_delete_files)?; + } Ok(()) } } @@ -18207,7 +18667,7 @@ impl ::serde::ser::Serialize for MembersRemoveArg { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("MembersRemoveArg", 6)?; + let mut s = serializer.serialize_struct("MembersRemoveArg", 7)?; self.internal_serialize::(&mut s)?; s.end() } @@ -18230,6 +18690,12 @@ pub enum MembersRemoveError { UserNotFound, /// The user is not a member of the team. UserNotInTeam, + /// Cannot permanently delete files while it's being transferred. + TransferInProgress, + /// Cannot permanently delete files that have already been transferred. + AlreadyTransferred, + /// Cannot permanently delete files that have already been transferred or deleted. + AlreadyTransferredOrDeleted, /// Expected removed user and transfer_dest user to be different. RemovedAndTransferDestShouldDiffer, /// Expected removed user and transfer_admin user to be different. @@ -18255,6 +18721,9 @@ pub enum MembersRemoveError { /// Cannot keep account and delete the data at the same time. To keep the account the argument /// wipe_data should be set to `false`. CannotKeepAccountAndDeleteData, + /// Cannot keep account and permanently delete the data at the same time. To keep the account + /// the argument permanently_delete_files should be set to `false`. + CannotKeepAccountAndPermanentlyDelete, /// The email address of the user is too long to be disabled. EmailAddressTooLongToBeDisabled, /// Cannot keep account of an invited user. @@ -18276,6 +18745,11 @@ pub enum MembersRemoveError { /// To convert this member to a Basic account, they'll first need to sign in to Dropbox and /// agree to the terms of service. CannotKeepAccountRequiredToSignTos, + /// Cannot permanently delete files and transfer the data to another user at the same time. + CannotPermanentlyDeleteAndTransfer, + /// This user is the active destination of an in-progress file transfer. Wait for the transfer + /// to complete before removing this member. + MemberIsTransferDestination, /// Catch-all used for unrecognized values returned from the server. Encountering this value /// typically indicates that this SDK version is out of date. Other, @@ -18299,6 +18773,9 @@ impl<'de> ::serde::de::Deserialize<'de> for MembersRemoveError { let value = match tag { "user_not_found" => MembersRemoveError::UserNotFound, "user_not_in_team" => MembersRemoveError::UserNotInTeam, + "transfer_in_progress" => MembersRemoveError::TransferInProgress, + "already_transferred" => MembersRemoveError::AlreadyTransferred, + "already_transferred_or_deleted" => MembersRemoveError::AlreadyTransferredOrDeleted, "removed_and_transfer_dest_should_differ" => MembersRemoveError::RemovedAndTransferDestShouldDiffer, "removed_and_transfer_admin_should_differ" => MembersRemoveError::RemovedAndTransferAdminShouldDiffer, "transfer_dest_user_not_found" => MembersRemoveError::TransferDestUserNotFound, @@ -18311,6 +18788,7 @@ impl<'de> ::serde::de::Deserialize<'de> for MembersRemoveError { "remove_last_admin" => MembersRemoveError::RemoveLastAdmin, "cannot_keep_account_and_transfer" => MembersRemoveError::CannotKeepAccountAndTransfer, "cannot_keep_account_and_delete_data" => MembersRemoveError::CannotKeepAccountAndDeleteData, + "cannot_keep_account_and_permanently_delete" => MembersRemoveError::CannotKeepAccountAndPermanentlyDelete, "email_address_too_long_to_be_disabled" => MembersRemoveError::EmailAddressTooLongToBeDisabled, "cannot_keep_invited_user_account" => MembersRemoveError::CannotKeepInvitedUserAccount, "cannot_retain_shares_when_data_wiped" => MembersRemoveError::CannotRetainSharesWhenDataWiped, @@ -18319,6 +18797,8 @@ impl<'de> ::serde::de::Deserialize<'de> for MembersRemoveError { "cannot_keep_account" => MembersRemoveError::CannotKeepAccount, "cannot_keep_account_under_legal_hold" => MembersRemoveError::CannotKeepAccountUnderLegalHold, "cannot_keep_account_required_to_sign_tos" => MembersRemoveError::CannotKeepAccountRequiredToSignTos, + "cannot_permanently_delete_and_transfer" => MembersRemoveError::CannotPermanentlyDeleteAndTransfer, + "member_is_transfer_destination" => MembersRemoveError::MemberIsTransferDestination, _ => MembersRemoveError::Other, }; crate::eat_json_fields(&mut map)?; @@ -18328,6 +18808,9 @@ impl<'de> ::serde::de::Deserialize<'de> for MembersRemoveError { const VARIANTS: &[&str] = &["user_not_found", "user_not_in_team", "other", + "transfer_in_progress", + "already_transferred", + "already_transferred_or_deleted", "removed_and_transfer_dest_should_differ", "removed_and_transfer_admin_should_differ", "transfer_dest_user_not_found", @@ -18340,6 +18823,7 @@ impl<'de> ::serde::de::Deserialize<'de> for MembersRemoveError { "remove_last_admin", "cannot_keep_account_and_transfer", "cannot_keep_account_and_delete_data", + "cannot_keep_account_and_permanently_delete", "email_address_too_long_to_be_disabled", "cannot_keep_invited_user_account", "cannot_retain_shares_when_data_wiped", @@ -18347,7 +18831,9 @@ impl<'de> ::serde::de::Deserialize<'de> for MembersRemoveError { "cannot_retain_shares_when_team_external_sharing_off", "cannot_keep_account", "cannot_keep_account_under_legal_hold", - "cannot_keep_account_required_to_sign_tos"]; + "cannot_keep_account_required_to_sign_tos", + "cannot_permanently_delete_and_transfer", + "member_is_transfer_destination"]; deserializer.deserialize_struct("MembersRemoveError", VARIANTS, EnumVisitor) } } @@ -18369,6 +18855,24 @@ impl ::serde::ser::Serialize for MembersRemoveError { s.serialize_field(".tag", "user_not_in_team")?; s.end() } + MembersRemoveError::TransferInProgress => { + // unit + let mut s = serializer.serialize_struct("MembersRemoveError", 1)?; + s.serialize_field(".tag", "transfer_in_progress")?; + s.end() + } + MembersRemoveError::AlreadyTransferred => { + // unit + let mut s = serializer.serialize_struct("MembersRemoveError", 1)?; + s.serialize_field(".tag", "already_transferred")?; + s.end() + } + MembersRemoveError::AlreadyTransferredOrDeleted => { + // unit + let mut s = serializer.serialize_struct("MembersRemoveError", 1)?; + s.serialize_field(".tag", "already_transferred_or_deleted")?; + s.end() + } MembersRemoveError::RemovedAndTransferDestShouldDiffer => { // unit let mut s = serializer.serialize_struct("MembersRemoveError", 1)?; @@ -18441,6 +18945,12 @@ impl ::serde::ser::Serialize for MembersRemoveError { s.serialize_field(".tag", "cannot_keep_account_and_delete_data")?; s.end() } + MembersRemoveError::CannotKeepAccountAndPermanentlyDelete => { + // unit + let mut s = serializer.serialize_struct("MembersRemoveError", 1)?; + s.serialize_field(".tag", "cannot_keep_account_and_permanently_delete")?; + s.end() + } MembersRemoveError::EmailAddressTooLongToBeDisabled => { // unit let mut s = serializer.serialize_struct("MembersRemoveError", 1)?; @@ -18489,6 +18999,18 @@ impl ::serde::ser::Serialize for MembersRemoveError { s.serialize_field(".tag", "cannot_keep_account_required_to_sign_tos")?; s.end() } + MembersRemoveError::CannotPermanentlyDeleteAndTransfer => { + // unit + let mut s = serializer.serialize_struct("MembersRemoveError", 1)?; + s.serialize_field(".tag", "cannot_permanently_delete_and_transfer")?; + s.end() + } + MembersRemoveError::MemberIsTransferDestination => { + // unit + let mut s = serializer.serialize_struct("MembersRemoveError", 1)?; + s.serialize_field(".tag", "member_is_transfer_destination")?; + s.end() + } MembersRemoveError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) } } @@ -18502,6 +19024,9 @@ impl ::std::fmt::Display for MembersRemoveError { match self { MembersRemoveError::UserNotFound => f.write_str("No matching user found. The provided team_member_id, email, or external_id does not exist on this team."), MembersRemoveError::UserNotInTeam => f.write_str("The user is not a member of the team."), + MembersRemoveError::TransferInProgress => f.write_str("Cannot permanently delete files while it's being transferred."), + MembersRemoveError::AlreadyTransferred => f.write_str("Cannot permanently delete files that have already been transferred."), + MembersRemoveError::AlreadyTransferredOrDeleted => f.write_str("Cannot permanently delete files that have already been transferred or deleted."), MembersRemoveError::RemovedAndTransferDestShouldDiffer => f.write_str("Expected removed user and transfer_dest user to be different."), MembersRemoveError::RemovedAndTransferAdminShouldDiffer => f.write_str("Expected removed user and transfer_admin user to be different."), MembersRemoveError::TransferDestUserNotFound => f.write_str("No matching user found for the argument transfer_dest_id."), @@ -18519,6 +19044,8 @@ impl ::std::fmt::Display for MembersRemoveError { MembersRemoveError::CannotKeepAccount => f.write_str("Only a team admin, can convert this account to a Basic account."), MembersRemoveError::CannotKeepAccountUnderLegalHold => f.write_str("This user content is currently being held. To convert this member's account to a Basic account, you'll first need to remove them from the hold."), MembersRemoveError::CannotKeepAccountRequiredToSignTos => f.write_str("To convert this member to a Basic account, they'll first need to sign in to Dropbox and agree to the terms of service."), + MembersRemoveError::CannotPermanentlyDeleteAndTransfer => f.write_str("Cannot permanently delete files and transfer the data to another user at the same time."), + MembersRemoveError::MemberIsTransferDestination => f.write_str("This user is the active destination of an in-progress file transfer. Wait for the transfer to complete before removing this member."), _ => write!(f, "{:?}", *self), } } @@ -18531,6 +19058,9 @@ impl From for MembersRemoveError { MembersTransferFilesError::UserNotFound => MembersRemoveError::UserNotFound, MembersTransferFilesError::UserNotInTeam => MembersRemoveError::UserNotInTeam, MembersTransferFilesError::Other => MembersRemoveError::Other, + MembersTransferFilesError::TransferInProgress => MembersRemoveError::TransferInProgress, + MembersTransferFilesError::AlreadyTransferred => MembersRemoveError::AlreadyTransferred, + MembersTransferFilesError::AlreadyTransferredOrDeleted => MembersRemoveError::AlreadyTransferredOrDeleted, MembersTransferFilesError::RemovedAndTransferDestShouldDiffer => MembersRemoveError::RemovedAndTransferDestShouldDiffer, MembersTransferFilesError::RemovedAndTransferAdminShouldDiffer => MembersRemoveError::RemovedAndTransferAdminShouldDiffer, MembersTransferFilesError::TransferDestUserNotFound => MembersRemoveError::TransferDestUserNotFound, @@ -20069,6 +20599,12 @@ pub enum MembersTransferFilesError { UserNotFound, /// The user is not a member of the team. UserNotInTeam, + /// Cannot permanently delete files while it's being transferred. + TransferInProgress, + /// Cannot permanently delete files that have already been transferred. + AlreadyTransferred, + /// Cannot permanently delete files that have already been transferred or deleted. + AlreadyTransferredOrDeleted, /// Expected removed user and transfer_dest user to be different. RemovedAndTransferDestShouldDiffer, /// Expected removed user and transfer_admin user to be different. @@ -20110,6 +20646,9 @@ impl<'de> ::serde::de::Deserialize<'de> for MembersTransferFilesError { let value = match tag { "user_not_found" => MembersTransferFilesError::UserNotFound, "user_not_in_team" => MembersTransferFilesError::UserNotInTeam, + "transfer_in_progress" => MembersTransferFilesError::TransferInProgress, + "already_transferred" => MembersTransferFilesError::AlreadyTransferred, + "already_transferred_or_deleted" => MembersTransferFilesError::AlreadyTransferredOrDeleted, "removed_and_transfer_dest_should_differ" => MembersTransferFilesError::RemovedAndTransferDestShouldDiffer, "removed_and_transfer_admin_should_differ" => MembersTransferFilesError::RemovedAndTransferAdminShouldDiffer, "transfer_dest_user_not_found" => MembersTransferFilesError::TransferDestUserNotFound, @@ -20128,6 +20667,9 @@ impl<'de> ::serde::de::Deserialize<'de> for MembersTransferFilesError { const VARIANTS: &[&str] = &["user_not_found", "user_not_in_team", "other", + "transfer_in_progress", + "already_transferred", + "already_transferred_or_deleted", "removed_and_transfer_dest_should_differ", "removed_and_transfer_admin_should_differ", "transfer_dest_user_not_found", @@ -20158,6 +20700,24 @@ impl ::serde::ser::Serialize for MembersTransferFilesError { s.serialize_field(".tag", "user_not_in_team")?; s.end() } + MembersTransferFilesError::TransferInProgress => { + // unit + let mut s = serializer.serialize_struct("MembersTransferFilesError", 1)?; + s.serialize_field(".tag", "transfer_in_progress")?; + s.end() + } + MembersTransferFilesError::AlreadyTransferred => { + // unit + let mut s = serializer.serialize_struct("MembersTransferFilesError", 1)?; + s.serialize_field(".tag", "already_transferred")?; + s.end() + } + MembersTransferFilesError::AlreadyTransferredOrDeleted => { + // unit + let mut s = serializer.serialize_struct("MembersTransferFilesError", 1)?; + s.serialize_field(".tag", "already_transferred_or_deleted")?; + s.end() + } MembersTransferFilesError::RemovedAndTransferDestShouldDiffer => { // unit let mut s = serializer.serialize_struct("MembersTransferFilesError", 1)?; @@ -20225,6 +20785,9 @@ impl ::std::fmt::Display for MembersTransferFilesError { match self { MembersTransferFilesError::UserNotFound => f.write_str("No matching user found. The provided team_member_id, email, or external_id does not exist on this team."), MembersTransferFilesError::UserNotInTeam => f.write_str("The user is not a member of the team."), + MembersTransferFilesError::TransferInProgress => f.write_str("Cannot permanently delete files while it's being transferred."), + MembersTransferFilesError::AlreadyTransferred => f.write_str("Cannot permanently delete files that have already been transferred."), + MembersTransferFilesError::AlreadyTransferredOrDeleted => f.write_str("Cannot permanently delete files that have already been transferred or deleted."), MembersTransferFilesError::RemovedAndTransferDestShouldDiffer => f.write_str("Expected removed user and transfer_dest user to be different."), MembersTransferFilesError::RemovedAndTransferAdminShouldDiffer => f.write_str("Expected removed user and transfer_admin user to be different."), MembersTransferFilesError::TransferDestUserNotFound => f.write_str("No matching user found for the argument transfer_dest_id."), @@ -20239,13 +20802,16 @@ impl ::std::fmt::Display for MembersTransferFilesError { } } -// union extends MembersDeactivateError -impl From for MembersTransferFilesError { - fn from(parent: MembersDeactivateError) -> Self { +// union extends MembersPermanentlyDeleteFilesError +impl From for MembersTransferFilesError { + fn from(parent: MembersPermanentlyDeleteFilesError) -> Self { match parent { - MembersDeactivateError::UserNotFound => MembersTransferFilesError::UserNotFound, - MembersDeactivateError::UserNotInTeam => MembersTransferFilesError::UserNotInTeam, - MembersDeactivateError::Other => MembersTransferFilesError::Other, + MembersPermanentlyDeleteFilesError::UserNotFound => MembersTransferFilesError::UserNotFound, + MembersPermanentlyDeleteFilesError::UserNotInTeam => MembersTransferFilesError::UserNotInTeam, + MembersPermanentlyDeleteFilesError::Other => MembersTransferFilesError::Other, + MembersPermanentlyDeleteFilesError::TransferInProgress => MembersTransferFilesError::TransferInProgress, + MembersPermanentlyDeleteFilesError::AlreadyTransferred => MembersTransferFilesError::AlreadyTransferred, + MembersPermanentlyDeleteFilesError::AlreadyTransferredOrDeleted => MembersTransferFilesError::AlreadyTransferredOrDeleted, } } } @@ -20257,6 +20823,12 @@ pub enum MembersTransferFormerMembersFilesError { UserNotFound, /// The user is not a member of the team. UserNotInTeam, + /// Cannot permanently delete files while it's being transferred. + TransferInProgress, + /// Cannot permanently delete files that have already been transferred. + AlreadyTransferred, + /// Cannot permanently delete files that have already been transferred or deleted. + AlreadyTransferredOrDeleted, /// Expected removed user and transfer_dest user to be different. RemovedAndTransferDestShouldDiffer, /// Expected removed user and transfer_admin user to be different. @@ -20306,6 +20878,9 @@ impl<'de> ::serde::de::Deserialize<'de> for MembersTransferFormerMembersFilesErr let value = match tag { "user_not_found" => MembersTransferFormerMembersFilesError::UserNotFound, "user_not_in_team" => MembersTransferFormerMembersFilesError::UserNotInTeam, + "transfer_in_progress" => MembersTransferFormerMembersFilesError::TransferInProgress, + "already_transferred" => MembersTransferFormerMembersFilesError::AlreadyTransferred, + "already_transferred_or_deleted" => MembersTransferFormerMembersFilesError::AlreadyTransferredOrDeleted, "removed_and_transfer_dest_should_differ" => MembersTransferFormerMembersFilesError::RemovedAndTransferDestShouldDiffer, "removed_and_transfer_admin_should_differ" => MembersTransferFormerMembersFilesError::RemovedAndTransferAdminShouldDiffer, "transfer_dest_user_not_found" => MembersTransferFormerMembersFilesError::TransferDestUserNotFound, @@ -20328,6 +20903,9 @@ impl<'de> ::serde::de::Deserialize<'de> for MembersTransferFormerMembersFilesErr const VARIANTS: &[&str] = &["user_not_found", "user_not_in_team", "other", + "transfer_in_progress", + "already_transferred", + "already_transferred_or_deleted", "removed_and_transfer_dest_should_differ", "removed_and_transfer_admin_should_differ", "transfer_dest_user_not_found", @@ -20362,6 +20940,24 @@ impl ::serde::ser::Serialize for MembersTransferFormerMembersFilesError { s.serialize_field(".tag", "user_not_in_team")?; s.end() } + MembersTransferFormerMembersFilesError::TransferInProgress => { + // unit + let mut s = serializer.serialize_struct("MembersTransferFormerMembersFilesError", 1)?; + s.serialize_field(".tag", "transfer_in_progress")?; + s.end() + } + MembersTransferFormerMembersFilesError::AlreadyTransferred => { + // unit + let mut s = serializer.serialize_struct("MembersTransferFormerMembersFilesError", 1)?; + s.serialize_field(".tag", "already_transferred")?; + s.end() + } + MembersTransferFormerMembersFilesError::AlreadyTransferredOrDeleted => { + // unit + let mut s = serializer.serialize_struct("MembersTransferFormerMembersFilesError", 1)?; + s.serialize_field(".tag", "already_transferred_or_deleted")?; + s.end() + } MembersTransferFormerMembersFilesError::RemovedAndTransferDestShouldDiffer => { // unit let mut s = serializer.serialize_struct("MembersTransferFormerMembersFilesError", 1)?; @@ -20453,6 +21049,9 @@ impl ::std::fmt::Display for MembersTransferFormerMembersFilesError { match self { MembersTransferFormerMembersFilesError::UserNotFound => f.write_str("No matching user found. The provided team_member_id, email, or external_id does not exist on this team."), MembersTransferFormerMembersFilesError::UserNotInTeam => f.write_str("The user is not a member of the team."), + MembersTransferFormerMembersFilesError::TransferInProgress => f.write_str("Cannot permanently delete files while it's being transferred."), + MembersTransferFormerMembersFilesError::AlreadyTransferred => f.write_str("Cannot permanently delete files that have already been transferred."), + MembersTransferFormerMembersFilesError::AlreadyTransferredOrDeleted => f.write_str("Cannot permanently delete files that have already been transferred or deleted."), MembersTransferFormerMembersFilesError::RemovedAndTransferDestShouldDiffer => f.write_str("Expected removed user and transfer_dest user to be different."), MembersTransferFormerMembersFilesError::RemovedAndTransferAdminShouldDiffer => f.write_str("Expected removed user and transfer_admin user to be different."), MembersTransferFormerMembersFilesError::TransferDestUserNotFound => f.write_str("No matching user found for the argument transfer_dest_id."), @@ -20478,6 +21077,9 @@ impl From for MembersTransferFormerMembersFilesError MembersTransferFilesError::UserNotFound => MembersTransferFormerMembersFilesError::UserNotFound, MembersTransferFilesError::UserNotInTeam => MembersTransferFormerMembersFilesError::UserNotInTeam, MembersTransferFilesError::Other => MembersTransferFormerMembersFilesError::Other, + MembersTransferFilesError::TransferInProgress => MembersTransferFormerMembersFilesError::TransferInProgress, + MembersTransferFilesError::AlreadyTransferred => MembersTransferFormerMembersFilesError::AlreadyTransferred, + MembersTransferFilesError::AlreadyTransferredOrDeleted => MembersTransferFormerMembersFilesError::AlreadyTransferredOrDeleted, MembersTransferFilesError::RemovedAndTransferDestShouldDiffer => MembersTransferFormerMembersFilesError::RemovedAndTransferDestShouldDiffer, MembersTransferFilesError::RemovedAndTransferAdminShouldDiffer => MembersTransferFormerMembersFilesError::RemovedAndTransferAdminShouldDiffer, MembersTransferFilesError::TransferDestUserNotFound => MembersTransferFormerMembersFilesError::TransferDestUserNotFound, @@ -21217,6 +21819,8 @@ pub enum NamespaceType { TeamFolder, /// Team member's home folder. TeamMemberFolder, + /// Team member's root folder. + TeamMemberRoot, /// Catch-all used for unrecognized values returned from the server. Encountering this value /// typically indicates that this SDK version is out of date. Other, @@ -21242,6 +21846,7 @@ impl<'de> ::serde::de::Deserialize<'de> for NamespaceType { "shared_folder" => NamespaceType::SharedFolder, "team_folder" => NamespaceType::TeamFolder, "team_member_folder" => NamespaceType::TeamMemberFolder, + "team_member_root" => NamespaceType::TeamMemberRoot, _ => NamespaceType::Other, }; crate::eat_json_fields(&mut map)?; @@ -21252,6 +21857,7 @@ impl<'de> ::serde::de::Deserialize<'de> for NamespaceType { "shared_folder", "team_folder", "team_member_folder", + "team_member_root", "other"]; deserializer.deserialize_struct("NamespaceType", VARIANTS, EnumVisitor) } @@ -21286,6 +21892,12 @@ impl ::serde::ser::Serialize for NamespaceType { s.serialize_field(".tag", "team_member_folder")?; s.end() } + NamespaceType::TeamMemberRoot => { + // unit + let mut s = serializer.serialize_struct("NamespaceType", 1)?; + s.serialize_field(".tag", "team_member_root")?; + s.end() + } NamespaceType::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) } } @@ -22391,7 +23003,7 @@ pub struct RevokeLinkedApiAppArg { /// The unique id of the member owning the device. pub team_member_id: String, /// This flag is not longer supported, the application dedicated folder (in case the application - /// uses one) will be kept. + /// uses one) will be kept. pub keep_app_folder: bool, } @@ -24743,7 +25355,7 @@ impl ::serde::ser::Serialize for TeamFolderArchiveJobStatus { } TeamFolderArchiveJobStatus::Complete(x) => { // struct - let mut s = serializer.serialize_struct("TeamFolderArchiveJobStatus", 7)?; + let mut s = serializer.serialize_struct("TeamFolderArchiveJobStatus", 8)?; s.serialize_field(".tag", "complete")?; x.internal_serialize::(&mut s)?; s.end() @@ -24825,7 +25437,7 @@ impl ::serde::ser::Serialize for TeamFolderArchiveLaunch { } TeamFolderArchiveLaunch::Complete(x) => { // struct - let mut s = serializer.serialize_struct("TeamFolderArchiveLaunch", 7)?; + let mut s = serializer.serialize_struct("TeamFolderArchiveLaunch", 8)?; s.serialize_field(".tag", "complete")?; x.internal_serialize::(&mut s)?; s.end() @@ -25127,7 +25739,7 @@ impl ::serde::ser::Serialize for TeamFolderGetInfoItem { } TeamFolderGetInfoItem::TeamFolderMetadata(x) => { // struct - let mut s = serializer.serialize_struct("TeamFolderGetInfoItem", 7)?; + let mut s = serializer.serialize_struct("TeamFolderGetInfoItem", 8)?; s.serialize_field(".tag", "team_folder_metadata")?; x.internal_serialize::(&mut s)?; s.end() @@ -25891,6 +26503,8 @@ pub struct TeamFolderMetadata { pub sync_setting: crate::types::files::SyncSetting, /// Sync settings applied to contents of this team folder. pub content_sync_settings: Vec, + /// The quota limit in bytes for this team folder namespace tree. + pub quota_limit: i64, } impl TeamFolderMetadata { @@ -25909,8 +26523,14 @@ impl TeamFolderMetadata { is_team_shared_dropbox, sync_setting, content_sync_settings, + quota_limit: 0, } } + + pub fn with_quota_limit(mut self, value: i64) -> Self { + self.quota_limit = value; + self + } } const TEAM_FOLDER_METADATA_FIELDS: &[&str] = &["team_folder_id", @@ -25918,7 +26538,8 @@ const TEAM_FOLDER_METADATA_FIELDS: &[&str] = &["team_folder_id", "status", "is_team_shared_dropbox", "sync_setting", - "content_sync_settings"]; + "content_sync_settings", + "quota_limit"]; impl TeamFolderMetadata { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, @@ -25936,6 +26557,7 @@ impl TeamFolderMetadata { let mut field_is_team_shared_dropbox = None; let mut field_sync_setting = None; let mut field_content_sync_settings = None; + let mut field_quota_limit = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; @@ -25976,6 +26598,12 @@ impl TeamFolderMetadata { } field_content_sync_settings = Some(map.next_value()?); } + "quota_limit" => { + if field_quota_limit.is_some() { + return Err(::serde::de::Error::duplicate_field("quota_limit")); + } + field_quota_limit = Some(map.next_value()?); + } _ => { // unknown field allowed and ignored map.next_value::<::serde_json::Value>()?; @@ -25992,6 +26620,7 @@ impl TeamFolderMetadata { is_team_shared_dropbox: field_is_team_shared_dropbox.ok_or_else(|| ::serde::de::Error::missing_field("is_team_shared_dropbox"))?, sync_setting: field_sync_setting.ok_or_else(|| ::serde::de::Error::missing_field("sync_setting"))?, content_sync_settings: field_content_sync_settings.ok_or_else(|| ::serde::de::Error::missing_field("content_sync_settings"))?, + quota_limit: field_quota_limit.unwrap_or(0), }; Ok(Some(result)) } @@ -26007,6 +26636,9 @@ impl TeamFolderMetadata { s.serialize_field("is_team_shared_dropbox", &self.is_team_shared_dropbox)?; s.serialize_field("sync_setting", &self.sync_setting)?; s.serialize_field("content_sync_settings", &self.content_sync_settings)?; + if self.quota_limit != 0 { + s.serialize_field("quota_limit", &self.quota_limit)?; + } Ok(()) } } @@ -26033,7 +26665,7 @@ impl ::serde::ser::Serialize for TeamFolderMetadata { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("TeamFolderMetadata", 6)?; + let mut s = serializer.serialize_struct("TeamFolderMetadata", 7)?; self.internal_serialize::(&mut s)?; s.end() } @@ -26437,15 +27069,145 @@ impl From for TeamFolderRenameError { } } } + +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // variants may be added in the future +pub enum TeamFolderRestoreError { + AccessError(TeamFolderAccessError), + StatusError(TeamFolderInvalidStatusError), + TeamSharedDropboxError(TeamFolderTeamSharedDropboxError), + /// Catch-all used for unrecognized values returned from the server. Encountering this value + /// typically indicates that this SDK version is out of date. + Other, +} + +impl<'de> ::serde::de::Deserialize<'de> for TeamFolderRestoreError { + fn deserialize>(deserializer: D) -> Result { + // union deserializer + use serde::de::{self, MapAccess, Visitor}; + struct EnumVisitor; + impl<'de> Visitor<'de> for EnumVisitor { + type Value = TeamFolderRestoreError; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a TeamFolderRestoreError structure") + } + fn visit_map>(self, mut map: V) -> Result { + let tag: &str = match map.next_key()? { + Some(".tag") => map.next_value()?, + _ => return Err(de::Error::missing_field(".tag")) + }; + let value = match tag { + "access_error" => { + match map.next_key()? { + Some("access_error") => TeamFolderRestoreError::AccessError(map.next_value()?), + None => return Err(de::Error::missing_field("access_error")), + _ => return Err(de::Error::unknown_field(tag, VARIANTS)) + } + } + "status_error" => { + match map.next_key()? { + Some("status_error") => TeamFolderRestoreError::StatusError(map.next_value()?), + None => return Err(de::Error::missing_field("status_error")), + _ => return Err(de::Error::unknown_field(tag, VARIANTS)) + } + } + "team_shared_dropbox_error" => { + match map.next_key()? { + Some("team_shared_dropbox_error") => TeamFolderRestoreError::TeamSharedDropboxError(map.next_value()?), + None => return Err(de::Error::missing_field("team_shared_dropbox_error")), + _ => return Err(de::Error::unknown_field(tag, VARIANTS)) + } + } + _ => TeamFolderRestoreError::Other, + }; + crate::eat_json_fields(&mut map)?; + Ok(value) + } + } + const VARIANTS: &[&str] = &["access_error", + "status_error", + "team_shared_dropbox_error", + "other"]; + deserializer.deserialize_struct("TeamFolderRestoreError", VARIANTS, EnumVisitor) + } +} + +impl ::serde::ser::Serialize for TeamFolderRestoreError { + fn serialize(&self, serializer: S) -> Result { + // union serializer + use serde::ser::SerializeStruct; + match self { + TeamFolderRestoreError::AccessError(x) => { + // union or polymporphic struct + let mut s = serializer.serialize_struct("TeamFolderRestoreError", 2)?; + s.serialize_field(".tag", "access_error")?; + s.serialize_field("access_error", x)?; + s.end() + } + TeamFolderRestoreError::StatusError(x) => { + // union or polymporphic struct + let mut s = serializer.serialize_struct("TeamFolderRestoreError", 2)?; + s.serialize_field(".tag", "status_error")?; + s.serialize_field("status_error", x)?; + s.end() + } + TeamFolderRestoreError::TeamSharedDropboxError(x) => { + // union or polymporphic struct + let mut s = serializer.serialize_struct("TeamFolderRestoreError", 2)?; + s.serialize_field(".tag", "team_shared_dropbox_error")?; + s.serialize_field("team_shared_dropbox_error", x)?; + s.end() + } + TeamFolderRestoreError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) + } + } +} + +impl ::std::error::Error for TeamFolderRestoreError { + fn source(&self) -> Option<&(dyn ::std::error::Error + 'static)> { + match self { + TeamFolderRestoreError::AccessError(inner) => Some(inner), + TeamFolderRestoreError::StatusError(inner) => Some(inner), + TeamFolderRestoreError::TeamSharedDropboxError(inner) => Some(inner), + _ => None, + } + } +} + +impl ::std::fmt::Display for TeamFolderRestoreError { + fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + match self { + TeamFolderRestoreError::AccessError(inner) => write!(f, "TeamFolderRestoreError: {}", inner), + TeamFolderRestoreError::StatusError(inner) => write!(f, "TeamFolderRestoreError: {}", inner), + TeamFolderRestoreError::TeamSharedDropboxError(inner) => write!(f, "TeamFolderRestoreError: {}", inner), + _ => write!(f, "{:?}", *self), + } + } +} + +// union extends BaseTeamFolderError +impl From for TeamFolderRestoreError { + fn from(parent: BaseTeamFolderError) -> Self { + match parent { + BaseTeamFolderError::AccessError(x) => TeamFolderRestoreError::AccessError(x), + BaseTeamFolderError::StatusError(x) => TeamFolderRestoreError::StatusError(x), + BaseTeamFolderError::TeamSharedDropboxError(x) => TeamFolderRestoreError::TeamSharedDropboxError(x), + BaseTeamFolderError::Other => TeamFolderRestoreError::Other, + } + } +} #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // variants may be added in the future pub enum TeamFolderStatus { /// The team folder and sub-folders are available to all members. Active, - /// The team folder is not accessible outside of the team folder manager. + /// The team folder is archived and is not accessible outside of the team folder manager. Archived, - /// The team folder is not accessible outside of the team folder manager. + /// The team folder is in the process of being archived and is not accessible outside of the + /// team folder manager. ArchiveInProgress, + /// The team folder is unmounted and can be restored. + Inactive, /// Catch-all used for unrecognized values returned from the server. Encountering this value /// typically indicates that this SDK version is out of date. Other, @@ -26470,6 +27232,7 @@ impl<'de> ::serde::de::Deserialize<'de> for TeamFolderStatus { "active" => TeamFolderStatus::Active, "archived" => TeamFolderStatus::Archived, "archive_in_progress" => TeamFolderStatus::ArchiveInProgress, + "inactive" => TeamFolderStatus::Inactive, _ => TeamFolderStatus::Other, }; crate::eat_json_fields(&mut map)?; @@ -26479,6 +27242,7 @@ impl<'de> ::serde::de::Deserialize<'de> for TeamFolderStatus { const VARIANTS: &[&str] = &["active", "archived", "archive_in_progress", + "inactive", "other"]; deserializer.deserialize_struct("TeamFolderStatus", VARIANTS, EnumVisitor) } @@ -26507,6 +27271,12 @@ impl ::serde::ser::Serialize for TeamFolderStatus { s.serialize_field(".tag", "archive_in_progress")?; s.end() } + TeamFolderStatus::Inactive => { + // unit + let mut s = serializer.serialize_struct("TeamFolderStatus", 1)?; + s.serialize_field(".tag", "inactive")?; + s.end() + } TeamFolderStatus::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) } } @@ -27364,8 +28134,10 @@ pub struct TeamMemberProfile { pub membership_type: TeamMembershipType, /// List of group IDs of groups that the user belongs to. pub groups: Vec, - /// The namespace id of the user's root folder. + /// The namespace id of the user's member folder. pub member_folder_id: crate::types::common::NamespaceId, + /// The namespace id of the user's root folder. + pub root_folder_id: crate::types::common::NamespaceId, /// External ID that a team can attach to the user. An application using the API may find it /// easier to use their own IDs instead of Dropbox IDs like account_id or team_member_id. pub external_id: Option, @@ -27400,6 +28172,7 @@ impl TeamMemberProfile { membership_type: TeamMembershipType, groups: Vec, member_folder_id: crate::types::common::NamespaceId, + root_folder_id: crate::types::common::NamespaceId, ) -> Self { TeamMemberProfile { team_member_id, @@ -27410,6 +28183,7 @@ impl TeamMemberProfile { membership_type, groups, member_folder_id, + root_folder_id, external_id: None, account_id: None, secondary_emails: None, @@ -27479,6 +28253,7 @@ const TEAM_MEMBER_PROFILE_FIELDS: &[&str] = &["team_member_id", "membership_type", "groups", "member_folder_id", + "root_folder_id", "external_id", "account_id", "secondary_emails", @@ -27507,6 +28282,7 @@ impl TeamMemberProfile { let mut field_membership_type = None; let mut field_groups = None; let mut field_member_folder_id = None; + let mut field_root_folder_id = None; let mut field_external_id = None; let mut field_account_id = None; let mut field_secondary_emails = None; @@ -27568,6 +28344,12 @@ impl TeamMemberProfile { } field_member_folder_id = Some(map.next_value()?); } + "root_folder_id" => { + if field_root_folder_id.is_some() { + return Err(::serde::de::Error::duplicate_field("root_folder_id")); + } + field_root_folder_id = Some(map.next_value()?); + } "external_id" => { if field_external_id.is_some() { return Err(::serde::de::Error::duplicate_field("external_id")); @@ -27640,6 +28422,7 @@ impl TeamMemberProfile { membership_type: field_membership_type.ok_or_else(|| ::serde::de::Error::missing_field("membership_type"))?, groups: field_groups.ok_or_else(|| ::serde::de::Error::missing_field("groups"))?, member_folder_id: field_member_folder_id.ok_or_else(|| ::serde::de::Error::missing_field("member_folder_id"))?, + root_folder_id: field_root_folder_id.ok_or_else(|| ::serde::de::Error::missing_field("root_folder_id"))?, external_id: field_external_id.and_then(Option::flatten), account_id: field_account_id.and_then(Option::flatten), secondary_emails: field_secondary_emails.and_then(Option::flatten), @@ -27666,6 +28449,7 @@ impl TeamMemberProfile { s.serialize_field("membership_type", &self.membership_type)?; s.serialize_field("groups", &self.groups)?; s.serialize_field("member_folder_id", &self.member_folder_id)?; + s.serialize_field("root_folder_id", &self.root_folder_id)?; if let Some(val) = &self.external_id { s.serialize_field("external_id", val)?; } @@ -27719,7 +28503,7 @@ impl ::serde::ser::Serialize for TeamMemberProfile { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("TeamMemberProfile", 17)?; + let mut s = serializer.serialize_struct("TeamMemberProfile", 18)?; self.internal_serialize::(&mut s)?; s.end() } @@ -29002,7 +29786,7 @@ impl ::serde::ser::Serialize for UserCustomQuotaArg { } } -/// User and their custom quota in GB (1 TB = 1024 GB). No quota returns if the user has no custom +/// User and their custom quota in GB (1 TB = 1024 GB). No quota returns if the user has no custom /// quota set. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. diff --git a/src/generated/types/team_log.rs b/src/generated/types/team_log.rs index 89dab837..44c69cf7 100644 --- a/src/generated/types/team_log.rs +++ b/src/generated/types/team_log.rs @@ -1054,7 +1054,6 @@ pub enum AccountCapturePolicy { AllUsers, Disabled, InvitedUsers, - PreventPersonalCreation, /// Catch-all used for unrecognized values returned from the server. Encountering this value /// typically indicates that this SDK version is out of date. Other, @@ -1079,7 +1078,6 @@ impl<'de> ::serde::de::Deserialize<'de> for AccountCapturePolicy { "all_users" => AccountCapturePolicy::AllUsers, "disabled" => AccountCapturePolicy::Disabled, "invited_users" => AccountCapturePolicy::InvitedUsers, - "prevent_personal_creation" => AccountCapturePolicy::PreventPersonalCreation, _ => AccountCapturePolicy::Other, }; crate::eat_json_fields(&mut map)?; @@ -1089,7 +1087,6 @@ impl<'de> ::serde::de::Deserialize<'de> for AccountCapturePolicy { const VARIANTS: &[&str] = &["all_users", "disabled", "invited_users", - "prevent_personal_creation", "other"]; deserializer.deserialize_struct("AccountCapturePolicy", VARIANTS, EnumVisitor) } @@ -1118,12 +1115,6 @@ impl ::serde::ser::Serialize for AccountCapturePolicy { s.serialize_field(".tag", "invited_users")?; s.end() } - AccountCapturePolicy::PreventPersonalCreation => { - // unit - let mut s = serializer.serialize_struct("AccountCapturePolicy", 1)?; - s.serialize_field(".tag", "prevent_personal_creation")?; - s.end() - } AccountCapturePolicy::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) } } @@ -1575,7 +1566,7 @@ impl ::serde::ser::Serialize for AccountState { pub enum ActionDetails { /// Define how the user was removed from the team. RemoveAction(MemberRemoveActionType), - /// Additional information relevant when someone is invited to the team. + /// Additional information relevant when someone is invited to the team TeamInviteDetails(TeamInviteDetails), /// Additional information relevant when a new member joins the team. TeamJoinDetails(JoinTeamDetails), @@ -1782,6 +1773,488 @@ impl ::serde::ser::Serialize for ActorLogInfo { } } +/// Add-on Assigned. +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct AddonAssignedDetails { + /// User's name. + pub user_name: UserNameLogInfo, + /// Add-on name. + pub addon_name: AddonLogInfo, +} + +impl AddonAssignedDetails { + pub fn new(user_name: UserNameLogInfo, addon_name: AddonLogInfo) -> Self { + AddonAssignedDetails { + user_name, + addon_name, + } + } +} + +const ADDON_ASSIGNED_DETAILS_FIELDS: &[&str] = &["user_name", + "addon_name"]; +impl AddonAssignedDetails { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_user_name = None; + let mut field_addon_name = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "user_name" => { + if field_user_name.is_some() { + return Err(::serde::de::Error::duplicate_field("user_name")); + } + field_user_name = Some(map.next_value()?); + } + "addon_name" => { + if field_addon_name.is_some() { + return Err(::serde::de::Error::duplicate_field("addon_name")); + } + field_addon_name = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } + } + } + if optional && nothing { + return Ok(None); + } + let result = AddonAssignedDetails { + user_name: field_user_name.ok_or_else(|| ::serde::de::Error::missing_field("user_name"))?, + addon_name: field_addon_name.ok_or_else(|| ::serde::de::Error::missing_field("addon_name"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("user_name", &self.user_name)?; + s.serialize_field("addon_name", &self.addon_name)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for AddonAssignedDetails { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = AddonAssignedDetails; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a AddonAssignedDetails struct") + } + fn visit_map>(self, map: V) -> Result { + AddonAssignedDetails::internal_deserialize(map) + } + } + deserializer.deserialize_struct("AddonAssignedDetails", ADDON_ASSIGNED_DETAILS_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for AddonAssignedDetails { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("AddonAssignedDetails", 2)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct AddonAssignedType { + pub description: String, +} + +impl AddonAssignedType { + pub fn new(description: String) -> Self { + AddonAssignedType { + description, + } + } +} + +const ADDON_ASSIGNED_TYPE_FIELDS: &[&str] = &["description"]; +impl AddonAssignedType { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_description = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); + } + field_description = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } + } + } + if optional && nothing { + return Ok(None); + } + let result = AddonAssignedType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("description", &self.description)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for AddonAssignedType { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = AddonAssignedType; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a AddonAssignedType struct") + } + fn visit_map>(self, map: V) -> Result { + AddonAssignedType::internal_deserialize(map) + } + } + deserializer.deserialize_struct("AddonAssignedType", ADDON_ASSIGNED_TYPE_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for AddonAssignedType { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("AddonAssignedType", 1)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +/// Add-on logged information +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct AddonLogInfo { + /// Add-on name. + pub addon_name: String, +} + +impl AddonLogInfo { + pub fn new(addon_name: String) -> Self { + AddonLogInfo { + addon_name, + } + } +} + +const ADDON_LOG_INFO_FIELDS: &[&str] = &["addon_name"]; +impl AddonLogInfo { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_addon_name = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "addon_name" => { + if field_addon_name.is_some() { + return Err(::serde::de::Error::duplicate_field("addon_name")); + } + field_addon_name = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } + } + } + if optional && nothing { + return Ok(None); + } + let result = AddonLogInfo { + addon_name: field_addon_name.ok_or_else(|| ::serde::de::Error::missing_field("addon_name"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("addon_name", &self.addon_name)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for AddonLogInfo { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = AddonLogInfo; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a AddonLogInfo struct") + } + fn visit_map>(self, map: V) -> Result { + AddonLogInfo::internal_deserialize(map) + } + } + deserializer.deserialize_struct("AddonLogInfo", ADDON_LOG_INFO_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for AddonLogInfo { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("AddonLogInfo", 1)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +/// Add-on Removed. +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct AddonRemovedDetails { + /// User's name. + pub user_name: UserNameLogInfo, + /// Add-on name. + pub addon_name: AddonLogInfo, +} + +impl AddonRemovedDetails { + pub fn new(user_name: UserNameLogInfo, addon_name: AddonLogInfo) -> Self { + AddonRemovedDetails { + user_name, + addon_name, + } + } +} + +const ADDON_REMOVED_DETAILS_FIELDS: &[&str] = &["user_name", + "addon_name"]; +impl AddonRemovedDetails { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_user_name = None; + let mut field_addon_name = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "user_name" => { + if field_user_name.is_some() { + return Err(::serde::de::Error::duplicate_field("user_name")); + } + field_user_name = Some(map.next_value()?); + } + "addon_name" => { + if field_addon_name.is_some() { + return Err(::serde::de::Error::duplicate_field("addon_name")); + } + field_addon_name = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } + } + } + if optional && nothing { + return Ok(None); + } + let result = AddonRemovedDetails { + user_name: field_user_name.ok_or_else(|| ::serde::de::Error::missing_field("user_name"))?, + addon_name: field_addon_name.ok_or_else(|| ::serde::de::Error::missing_field("addon_name"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("user_name", &self.user_name)?; + s.serialize_field("addon_name", &self.addon_name)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for AddonRemovedDetails { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = AddonRemovedDetails; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a AddonRemovedDetails struct") + } + fn visit_map>(self, map: V) -> Result { + AddonRemovedDetails::internal_deserialize(map) + } + } + deserializer.deserialize_struct("AddonRemovedDetails", ADDON_REMOVED_DETAILS_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for AddonRemovedDetails { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("AddonRemovedDetails", 2)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct AddonRemovedType { + pub description: String, +} + +impl AddonRemovedType { + pub fn new(description: String) -> Self { + AddonRemovedType { + description, + } + } +} + +const ADDON_REMOVED_TYPE_FIELDS: &[&str] = &["description"]; +impl AddonRemovedType { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_description = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); + } + field_description = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } + } + } + if optional && nothing { + return Ok(None); + } + let result = AddonRemovedType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("description", &self.description)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for AddonRemovedType { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = AddonRemovedType; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a AddonRemovedType struct") + } + fn visit_map>(self, map: V) -> Result { + AddonRemovedType::internal_deserialize(map) + } + } + deserializer.deserialize_struct("AddonRemovedType", ADDON_REMOVED_TYPE_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for AddonRemovedType { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("AddonRemovedType", 1)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + /// Alert category #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // variants may be added in the future @@ -2087,6 +2560,8 @@ pub struct AdminAlertingAlertConfiguration { pub text: Option, /// Excluded file extensions. pub excluded_file_extensions: Option, + /// Malware exclusion list state. + pub malware_exclusion_state: Option, } impl AdminAlertingAlertConfiguration { @@ -2114,13 +2589,19 @@ impl AdminAlertingAlertConfiguration { self.excluded_file_extensions = Some(value); self } + + pub fn with_malware_exclusion_state(mut self, value: MalwareExclusionState) -> Self { + self.malware_exclusion_state = Some(value); + self + } } const ADMIN_ALERTING_ALERT_CONFIGURATION_FIELDS: &[&str] = &["alert_state", "sensitivity_level", "recipients_settings", "text", - "excluded_file_extensions"]; + "excluded_file_extensions", + "malware_exclusion_state"]; impl AdminAlertingAlertConfiguration { // no _opt deserializer pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( @@ -2131,6 +2612,7 @@ impl AdminAlertingAlertConfiguration { let mut field_recipients_settings = None; let mut field_text = None; let mut field_excluded_file_extensions = None; + let mut field_malware_exclusion_state = None; while let Some(key) = map.next_key::<&str>()? { match key { "alert_state" => { @@ -2163,6 +2645,12 @@ impl AdminAlertingAlertConfiguration { } field_excluded_file_extensions = Some(map.next_value()?); } + "malware_exclusion_state" => { + if field_malware_exclusion_state.is_some() { + return Err(::serde::de::Error::duplicate_field("malware_exclusion_state")); + } + field_malware_exclusion_state = Some(map.next_value()?); + } _ => { // unknown field allowed and ignored map.next_value::<::serde_json::Value>()?; @@ -2175,6 +2663,7 @@ impl AdminAlertingAlertConfiguration { recipients_settings: field_recipients_settings.and_then(Option::flatten), text: field_text.and_then(Option::flatten), excluded_file_extensions: field_excluded_file_extensions.and_then(Option::flatten), + malware_exclusion_state: field_malware_exclusion_state.and_then(Option::flatten), }; Ok(result) } @@ -2199,6 +2688,9 @@ impl AdminAlertingAlertConfiguration { if let Some(val) = &self.excluded_file_extensions { s.serialize_field("excluded_file_extensions", val)?; } + if let Some(val) = &self.malware_exclusion_state { + s.serialize_field("malware_exclusion_state", val)?; + } Ok(()) } } @@ -2225,7 +2717,7 @@ impl ::serde::ser::Serialize for AdminAlertingAlertConfiguration { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("AdminAlertingAlertConfiguration", 5)?; + let mut s = serializer.serialize_struct("AdminAlertingAlertConfiguration", 6)?; self.internal_serialize::(&mut s)?; s.end() } @@ -3499,6 +3991,8 @@ pub enum AdminRole { BillingAdmin, ComplianceAdmin, ContentAdmin, + DeprecatedFreemiumTeamMember, + FreemiumTeamCreator, LimitedAdmin, MemberOnly, ReportingAdmin, @@ -3530,6 +4024,8 @@ impl<'de> ::serde::de::Deserialize<'de> for AdminRole { "billing_admin" => AdminRole::BillingAdmin, "compliance_admin" => AdminRole::ComplianceAdmin, "content_admin" => AdminRole::ContentAdmin, + "deprecated_freemium_team_member" => AdminRole::DeprecatedFreemiumTeamMember, + "freemium_team_creator" => AdminRole::FreemiumTeamCreator, "limited_admin" => AdminRole::LimitedAdmin, "member_only" => AdminRole::MemberOnly, "reporting_admin" => AdminRole::ReportingAdmin, @@ -3546,6 +4042,8 @@ impl<'de> ::serde::de::Deserialize<'de> for AdminRole { const VARIANTS: &[&str] = &["billing_admin", "compliance_admin", "content_admin", + "deprecated_freemium_team_member", + "freemium_team_creator", "limited_admin", "member_only", "reporting_admin", @@ -3581,6 +4079,18 @@ impl ::serde::ser::Serialize for AdminRole { s.serialize_field(".tag", "content_admin")?; s.end() } + AdminRole::DeprecatedFreemiumTeamMember => { + // unit + let mut s = serializer.serialize_struct("AdminRole", 1)?; + s.serialize_field(".tag", "deprecated_freemium_team_member")?; + s.end() + } + AdminRole::FreemiumTeamCreator => { + // unit + let mut s = serializer.serialize_struct("AdminRole", 1)?; + s.serialize_field(".tag", "freemium_team_creator")?; + s.end() + } AdminRole::LimitedAdmin => { // unit let mut s = serializer.serialize_struct("AdminRole", 1)?; @@ -3628,6 +4138,286 @@ impl ::serde::ser::Serialize for AdminRole { } } +/// Policy for deciding whether team users can use third party AI services +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // variants may be added in the future +pub enum AiThirdPartySharingDropboxBasePolicy { + AdminsOnly, + Default, + Disabled, + Enabled, + /// Catch-all used for unrecognized values returned from the server. Encountering this value + /// typically indicates that this SDK version is out of date. + Other, +} + +impl<'de> ::serde::de::Deserialize<'de> for AiThirdPartySharingDropboxBasePolicy { + fn deserialize>(deserializer: D) -> Result { + // union deserializer + use serde::de::{self, MapAccess, Visitor}; + struct EnumVisitor; + impl<'de> Visitor<'de> for EnumVisitor { + type Value = AiThirdPartySharingDropboxBasePolicy; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a AiThirdPartySharingDropboxBasePolicy structure") + } + fn visit_map>(self, mut map: V) -> Result { + let tag: &str = match map.next_key()? { + Some(".tag") => map.next_value()?, + _ => return Err(de::Error::missing_field(".tag")) + }; + let value = match tag { + "admins_only" => AiThirdPartySharingDropboxBasePolicy::AdminsOnly, + "default" => AiThirdPartySharingDropboxBasePolicy::Default, + "disabled" => AiThirdPartySharingDropboxBasePolicy::Disabled, + "enabled" => AiThirdPartySharingDropboxBasePolicy::Enabled, + _ => AiThirdPartySharingDropboxBasePolicy::Other, + }; + crate::eat_json_fields(&mut map)?; + Ok(value) + } + } + const VARIANTS: &[&str] = &["admins_only", + "default", + "disabled", + "enabled", + "other"]; + deserializer.deserialize_struct("AiThirdPartySharingDropboxBasePolicy", VARIANTS, EnumVisitor) + } +} + +impl ::serde::ser::Serialize for AiThirdPartySharingDropboxBasePolicy { + fn serialize(&self, serializer: S) -> Result { + // union serializer + use serde::ser::SerializeStruct; + match self { + AiThirdPartySharingDropboxBasePolicy::AdminsOnly => { + // unit + let mut s = serializer.serialize_struct("AiThirdPartySharingDropboxBasePolicy", 1)?; + s.serialize_field(".tag", "admins_only")?; + s.end() + } + AiThirdPartySharingDropboxBasePolicy::Default => { + // unit + let mut s = serializer.serialize_struct("AiThirdPartySharingDropboxBasePolicy", 1)?; + s.serialize_field(".tag", "default")?; + s.end() + } + AiThirdPartySharingDropboxBasePolicy::Disabled => { + // unit + let mut s = serializer.serialize_struct("AiThirdPartySharingDropboxBasePolicy", 1)?; + s.serialize_field(".tag", "disabled")?; + s.end() + } + AiThirdPartySharingDropboxBasePolicy::Enabled => { + // unit + let mut s = serializer.serialize_struct("AiThirdPartySharingDropboxBasePolicy", 1)?; + s.serialize_field(".tag", "enabled")?; + s.end() + } + AiThirdPartySharingDropboxBasePolicy::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) + } + } +} + +/// Changed AI third party sharing policy for team. +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct AiThirdPartySharingDropboxBasePolicyChangedDetails { + /// To. + pub new_value: AiThirdPartySharingDropboxBasePolicy, + /// From. + pub previous_value: AiThirdPartySharingDropboxBasePolicy, +} + +impl AiThirdPartySharingDropboxBasePolicyChangedDetails { + pub fn new( + new_value: AiThirdPartySharingDropboxBasePolicy, + previous_value: AiThirdPartySharingDropboxBasePolicy, + ) -> Self { + AiThirdPartySharingDropboxBasePolicyChangedDetails { + new_value, + previous_value, + } + } +} + +const AI_THIRD_PARTY_SHARING_DROPBOX_BASE_POLICY_CHANGED_DETAILS_FIELDS: &[&str] = &["new_value", + "previous_value"]; +impl AiThirdPartySharingDropboxBasePolicyChangedDetails { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_new_value = None; + let mut field_previous_value = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "new_value" => { + if field_new_value.is_some() { + return Err(::serde::de::Error::duplicate_field("new_value")); + } + field_new_value = Some(map.next_value()?); + } + "previous_value" => { + if field_previous_value.is_some() { + return Err(::serde::de::Error::duplicate_field("previous_value")); + } + field_previous_value = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } + } + } + if optional && nothing { + return Ok(None); + } + let result = AiThirdPartySharingDropboxBasePolicyChangedDetails { + new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, + previous_value: field_previous_value.ok_or_else(|| ::serde::de::Error::missing_field("previous_value"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("new_value", &self.new_value)?; + s.serialize_field("previous_value", &self.previous_value)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for AiThirdPartySharingDropboxBasePolicyChangedDetails { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = AiThirdPartySharingDropboxBasePolicyChangedDetails; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a AiThirdPartySharingDropboxBasePolicyChangedDetails struct") + } + fn visit_map>(self, map: V) -> Result { + AiThirdPartySharingDropboxBasePolicyChangedDetails::internal_deserialize(map) + } + } + deserializer.deserialize_struct("AiThirdPartySharingDropboxBasePolicyChangedDetails", AI_THIRD_PARTY_SHARING_DROPBOX_BASE_POLICY_CHANGED_DETAILS_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for AiThirdPartySharingDropboxBasePolicyChangedDetails { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("AiThirdPartySharingDropboxBasePolicyChangedDetails", 2)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct AiThirdPartySharingDropboxBasePolicyChangedType { + pub description: String, +} + +impl AiThirdPartySharingDropboxBasePolicyChangedType { + pub fn new(description: String) -> Self { + AiThirdPartySharingDropboxBasePolicyChangedType { + description, + } + } +} + +const AI_THIRD_PARTY_SHARING_DROPBOX_BASE_POLICY_CHANGED_TYPE_FIELDS: &[&str] = &["description"]; +impl AiThirdPartySharingDropboxBasePolicyChangedType { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_description = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); + } + field_description = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } + } + } + if optional && nothing { + return Ok(None); + } + let result = AiThirdPartySharingDropboxBasePolicyChangedType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("description", &self.description)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for AiThirdPartySharingDropboxBasePolicyChangedType { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = AiThirdPartySharingDropboxBasePolicyChangedType; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a AiThirdPartySharingDropboxBasePolicyChangedType struct") + } + fn visit_map>(self, map: V) -> Result { + AiThirdPartySharingDropboxBasePolicyChangedType::internal_deserialize(map) + } + } + deserializer.deserialize_struct("AiThirdPartySharingDropboxBasePolicyChangedType", AI_THIRD_PARTY_SHARING_DROPBOX_BASE_POLICY_CHANGED_TYPE_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for AiThirdPartySharingDropboxBasePolicyChangedType { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("AiThirdPartySharingDropboxBasePolicyChangedType", 1)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + /// Alert recipients setting type #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // variants may be added in the future @@ -4620,9 +5410,9 @@ impl ::serde::ser::Serialize for AppLinkUserType { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // variants may be added in the future pub enum AppLogInfo { - UserOrTeamLinkedApp(UserOrTeamLinkedAppLogInfo), - UserLinkedApp(UserLinkedAppLogInfo), TeamLinkedApp(TeamLinkedAppLogInfo), + UserLinkedApp(UserLinkedAppLogInfo), + UserOrTeamLinkedApp(UserOrTeamLinkedAppLogInfo), /// Catch-all used for unrecognized values returned from the server. Encountering this value /// typically indicates that this SDK version is out of date. Other, @@ -4644,9 +5434,9 @@ impl<'de> ::serde::de::Deserialize<'de> for AppLogInfo { _ => return Err(de::Error::missing_field(".tag")) }; match tag { - "user_or_team_linked_app" => Ok(AppLogInfo::UserOrTeamLinkedApp(UserOrTeamLinkedAppLogInfo::internal_deserialize(map)?)), - "user_linked_app" => Ok(AppLogInfo::UserLinkedApp(UserLinkedAppLogInfo::internal_deserialize(map)?)), "team_linked_app" => Ok(AppLogInfo::TeamLinkedApp(TeamLinkedAppLogInfo::internal_deserialize(map)?)), + "user_linked_app" => Ok(AppLogInfo::UserLinkedApp(UserLinkedAppLogInfo::internal_deserialize(map)?)), + "user_or_team_linked_app" => Ok(AppLogInfo::UserOrTeamLinkedApp(UserOrTeamLinkedAppLogInfo::internal_deserialize(map)?)), _ => { crate::eat_json_fields(&mut map)?; Ok(AppLogInfo::Other) @@ -4654,9 +5444,9 @@ impl<'de> ::serde::de::Deserialize<'de> for AppLogInfo { } } } - const VARIANTS: &[&str] = &["user_or_team_linked_app", + const VARIANTS: &[&str] = &["team_linked_app", "user_linked_app", - "team_linked_app"]; + "user_or_team_linked_app"]; deserializer.deserialize_struct("AppLogInfo", VARIANTS, EnumVisitor) } } @@ -4666,9 +5456,9 @@ impl ::serde::ser::Serialize for AppLogInfo { // polymorphic struct serializer use serde::ser::SerializeStruct; match self { - AppLogInfo::UserOrTeamLinkedApp(x) => { + AppLogInfo::TeamLinkedApp(x) => { let mut s = serializer.serialize_struct("AppLogInfo", 3)?; - s.serialize_field(".tag", "user_or_team_linked_app")?; + s.serialize_field(".tag", "team_linked_app")?; x.internal_serialize::(&mut s)?; s.end() } @@ -4678,9 +5468,9 @@ impl ::serde::ser::Serialize for AppLogInfo { x.internal_serialize::(&mut s)?; s.end() } - AppLogInfo::TeamLinkedApp(x) => { + AppLogInfo::UserOrTeamLinkedApp(x) => { let mut s = serializer.serialize_struct("AppLogInfo", 3)?; - s.serialize_field(".tag", "team_linked_app")?; + s.serialize_field(".tag", "user_or_team_linked_app")?; x.internal_serialize::(&mut s)?; s.end() } @@ -5288,6 +6078,281 @@ impl ::serde::ser::Serialize for AppUnlinkUserType { } } +/// Enabled/disabled Apple login for team. +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct AppleLoginChangePolicyDetails { + /// New Apple login policy. + pub new_value: AppleLoginPolicy, + /// Previous Apple login policy. Might be missing due to historical data gap. + pub previous_value: Option, +} + +impl AppleLoginChangePolicyDetails { + pub fn new(new_value: AppleLoginPolicy) -> Self { + AppleLoginChangePolicyDetails { + new_value, + previous_value: None, + } + } + + pub fn with_previous_value(mut self, value: AppleLoginPolicy) -> Self { + self.previous_value = Some(value); + self + } +} + +const APPLE_LOGIN_CHANGE_POLICY_DETAILS_FIELDS: &[&str] = &["new_value", + "previous_value"]; +impl AppleLoginChangePolicyDetails { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_new_value = None; + let mut field_previous_value = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "new_value" => { + if field_new_value.is_some() { + return Err(::serde::de::Error::duplicate_field("new_value")); + } + field_new_value = Some(map.next_value()?); + } + "previous_value" => { + if field_previous_value.is_some() { + return Err(::serde::de::Error::duplicate_field("previous_value")); + } + field_previous_value = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } + } + } + if optional && nothing { + return Ok(None); + } + let result = AppleLoginChangePolicyDetails { + new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, + previous_value: field_previous_value.and_then(Option::flatten), + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("new_value", &self.new_value)?; + if let Some(val) = &self.previous_value { + s.serialize_field("previous_value", val)?; + } + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for AppleLoginChangePolicyDetails { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = AppleLoginChangePolicyDetails; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a AppleLoginChangePolicyDetails struct") + } + fn visit_map>(self, map: V) -> Result { + AppleLoginChangePolicyDetails::internal_deserialize(map) + } + } + deserializer.deserialize_struct("AppleLoginChangePolicyDetails", APPLE_LOGIN_CHANGE_POLICY_DETAILS_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for AppleLoginChangePolicyDetails { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("AppleLoginChangePolicyDetails", 2)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct AppleLoginChangePolicyType { + pub description: String, +} + +impl AppleLoginChangePolicyType { + pub fn new(description: String) -> Self { + AppleLoginChangePolicyType { + description, + } + } +} + +const APPLE_LOGIN_CHANGE_POLICY_TYPE_FIELDS: &[&str] = &["description"]; +impl AppleLoginChangePolicyType { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_description = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); + } + field_description = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } + } + } + if optional && nothing { + return Ok(None); + } + let result = AppleLoginChangePolicyType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("description", &self.description)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for AppleLoginChangePolicyType { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = AppleLoginChangePolicyType; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a AppleLoginChangePolicyType struct") + } + fn visit_map>(self, map: V) -> Result { + AppleLoginChangePolicyType::internal_deserialize(map) + } + } + deserializer.deserialize_struct("AppleLoginChangePolicyType", APPLE_LOGIN_CHANGE_POLICY_TYPE_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for AppleLoginChangePolicyType { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("AppleLoginChangePolicyType", 1)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +/// Apple login policy +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // variants may be added in the future +pub enum AppleLoginPolicy { + Default, + Disabled, + Enabled, + /// Catch-all used for unrecognized values returned from the server. Encountering this value + /// typically indicates that this SDK version is out of date. + Other, +} + +impl<'de> ::serde::de::Deserialize<'de> for AppleLoginPolicy { + fn deserialize>(deserializer: D) -> Result { + // union deserializer + use serde::de::{self, MapAccess, Visitor}; + struct EnumVisitor; + impl<'de> Visitor<'de> for EnumVisitor { + type Value = AppleLoginPolicy; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a AppleLoginPolicy structure") + } + fn visit_map>(self, mut map: V) -> Result { + let tag: &str = match map.next_key()? { + Some(".tag") => map.next_value()?, + _ => return Err(de::Error::missing_field(".tag")) + }; + let value = match tag { + "default" => AppleLoginPolicy::Default, + "disabled" => AppleLoginPolicy::Disabled, + "enabled" => AppleLoginPolicy::Enabled, + _ => AppleLoginPolicy::Other, + }; + crate::eat_json_fields(&mut map)?; + Ok(value) + } + } + const VARIANTS: &[&str] = &["default", + "disabled", + "enabled", + "other"]; + deserializer.deserialize_struct("AppleLoginPolicy", VARIANTS, EnumVisitor) + } +} + +impl ::serde::ser::Serialize for AppleLoginPolicy { + fn serialize(&self, serializer: S) -> Result { + // union serializer + use serde::ser::SerializeStruct; + match self { + AppleLoginPolicy::Default => { + // unit + let mut s = serializer.serialize_struct("AppleLoginPolicy", 1)?; + s.serialize_field(".tag", "default")?; + s.end() + } + AppleLoginPolicy::Disabled => { + // unit + let mut s = serializer.serialize_struct("AppleLoginPolicy", 1)?; + s.serialize_field(".tag", "disabled")?; + s.end() + } + AppleLoginPolicy::Enabled => { + // unit + let mut s = serializer.serialize_struct("AppleLoginPolicy", 1)?; + s.serialize_field(".tag", "enabled")?; + s.end() + } + AppleLoginPolicy::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) + } + } +} + /// Applied naming convention. #[derive(Debug, Clone, PartialEq, Eq, Default)] #[non_exhaustive] // structs may have more fields added in the future. @@ -7818,6 +8883,265 @@ impl ::serde::ser::Serialize for CameraUploadsPolicyChangedType { } } +/// Policy for deciding whether team users have access to the Capture team space +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // variants may be added in the future +pub enum CaptureTeamSpacePolicy { + Disabled, + Enabled, + /// Catch-all used for unrecognized values returned from the server. Encountering this value + /// typically indicates that this SDK version is out of date. + Other, +} + +impl<'de> ::serde::de::Deserialize<'de> for CaptureTeamSpacePolicy { + fn deserialize>(deserializer: D) -> Result { + // union deserializer + use serde::de::{self, MapAccess, Visitor}; + struct EnumVisitor; + impl<'de> Visitor<'de> for EnumVisitor { + type Value = CaptureTeamSpacePolicy; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a CaptureTeamSpacePolicy structure") + } + fn visit_map>(self, mut map: V) -> Result { + let tag: &str = match map.next_key()? { + Some(".tag") => map.next_value()?, + _ => return Err(de::Error::missing_field(".tag")) + }; + let value = match tag { + "disabled" => CaptureTeamSpacePolicy::Disabled, + "enabled" => CaptureTeamSpacePolicy::Enabled, + _ => CaptureTeamSpacePolicy::Other, + }; + crate::eat_json_fields(&mut map)?; + Ok(value) + } + } + const VARIANTS: &[&str] = &["disabled", + "enabled", + "other"]; + deserializer.deserialize_struct("CaptureTeamSpacePolicy", VARIANTS, EnumVisitor) + } +} + +impl ::serde::ser::Serialize for CaptureTeamSpacePolicy { + fn serialize(&self, serializer: S) -> Result { + // union serializer + use serde::ser::SerializeStruct; + match self { + CaptureTeamSpacePolicy::Disabled => { + // unit + let mut s = serializer.serialize_struct("CaptureTeamSpacePolicy", 1)?; + s.serialize_field(".tag", "disabled")?; + s.end() + } + CaptureTeamSpacePolicy::Enabled => { + // unit + let mut s = serializer.serialize_struct("CaptureTeamSpacePolicy", 1)?; + s.serialize_field(".tag", "enabled")?; + s.end() + } + CaptureTeamSpacePolicy::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) + } + } +} + +/// Changed Capture team space policy for team. +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct CaptureTeamSpacePolicyChangedDetails { + /// To. + pub new_value: CaptureTeamSpacePolicy, + /// From. + pub previous_value: CaptureTeamSpacePolicy, +} + +impl CaptureTeamSpacePolicyChangedDetails { + pub fn new(new_value: CaptureTeamSpacePolicy, previous_value: CaptureTeamSpacePolicy) -> Self { + CaptureTeamSpacePolicyChangedDetails { + new_value, + previous_value, + } + } +} + +const CAPTURE_TEAM_SPACE_POLICY_CHANGED_DETAILS_FIELDS: &[&str] = &["new_value", + "previous_value"]; +impl CaptureTeamSpacePolicyChangedDetails { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_new_value = None; + let mut field_previous_value = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "new_value" => { + if field_new_value.is_some() { + return Err(::serde::de::Error::duplicate_field("new_value")); + } + field_new_value = Some(map.next_value()?); + } + "previous_value" => { + if field_previous_value.is_some() { + return Err(::serde::de::Error::duplicate_field("previous_value")); + } + field_previous_value = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } + } + } + if optional && nothing { + return Ok(None); + } + let result = CaptureTeamSpacePolicyChangedDetails { + new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, + previous_value: field_previous_value.ok_or_else(|| ::serde::de::Error::missing_field("previous_value"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("new_value", &self.new_value)?; + s.serialize_field("previous_value", &self.previous_value)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for CaptureTeamSpacePolicyChangedDetails { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = CaptureTeamSpacePolicyChangedDetails; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a CaptureTeamSpacePolicyChangedDetails struct") + } + fn visit_map>(self, map: V) -> Result { + CaptureTeamSpacePolicyChangedDetails::internal_deserialize(map) + } + } + deserializer.deserialize_struct("CaptureTeamSpacePolicyChangedDetails", CAPTURE_TEAM_SPACE_POLICY_CHANGED_DETAILS_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for CaptureTeamSpacePolicyChangedDetails { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("CaptureTeamSpacePolicyChangedDetails", 2)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct CaptureTeamSpacePolicyChangedType { + pub description: String, +} + +impl CaptureTeamSpacePolicyChangedType { + pub fn new(description: String) -> Self { + CaptureTeamSpacePolicyChangedType { + description, + } + } +} + +const CAPTURE_TEAM_SPACE_POLICY_CHANGED_TYPE_FIELDS: &[&str] = &["description"]; +impl CaptureTeamSpacePolicyChangedType { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_description = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); + } + field_description = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } + } + } + if optional && nothing { + return Ok(None); + } + let result = CaptureTeamSpacePolicyChangedType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("description", &self.description)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for CaptureTeamSpacePolicyChangedType { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = CaptureTeamSpacePolicyChangedType; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a CaptureTeamSpacePolicyChangedType struct") + } + fn visit_map>(self, map: V) -> Result { + CaptureTeamSpacePolicyChangedType::internal_deserialize(map) + } + } + deserializer.deserialize_struct("CaptureTeamSpacePolicyChangedType", CAPTURE_TEAM_SPACE_POLICY_CHANGED_TYPE_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for CaptureTeamSpacePolicyChangedType { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("CaptureTeamSpacePolicyChangedType", 1)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + /// Policy for deciding whether team users can transcription in Capture #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // variants may be added in the future @@ -10183,6 +11507,322 @@ impl ::serde::ser::Serialize for ContentAdministrationPolicyChangedType { } } +/// Changed content deletion protection policy for team. +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct ContentDeletionProtectionChangePolicyDetails { + /// New content deletion protection policy. + pub new_value: ContentDeletionProtectionPolicy, + /// New threshold value in bytes (only present when new policy is on_above_threshold). + pub new_threshold_bytes: Option, + /// Previous content deletion protection policy. Might be missing due to historical data gap. + pub previous_value: Option, + /// Previous threshold value in bytes (only present when previous policy was + /// on_above_threshold). + pub previous_threshold_bytes: Option, +} + +impl ContentDeletionProtectionChangePolicyDetails { + pub fn new(new_value: ContentDeletionProtectionPolicy) -> Self { + ContentDeletionProtectionChangePolicyDetails { + new_value, + new_threshold_bytes: None, + previous_value: None, + previous_threshold_bytes: None, + } + } + + pub fn with_new_threshold_bytes(mut self, value: u64) -> Self { + self.new_threshold_bytes = Some(value); + self + } + + pub fn with_previous_value(mut self, value: ContentDeletionProtectionPolicy) -> Self { + self.previous_value = Some(value); + self + } + + pub fn with_previous_threshold_bytes(mut self, value: u64) -> Self { + self.previous_threshold_bytes = Some(value); + self + } +} + +const CONTENT_DELETION_PROTECTION_CHANGE_POLICY_DETAILS_FIELDS: &[&str] = &["new_value", + "new_threshold_bytes", + "previous_value", + "previous_threshold_bytes"]; +impl ContentDeletionProtectionChangePolicyDetails { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_new_value = None; + let mut field_new_threshold_bytes = None; + let mut field_previous_value = None; + let mut field_previous_threshold_bytes = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "new_value" => { + if field_new_value.is_some() { + return Err(::serde::de::Error::duplicate_field("new_value")); + } + field_new_value = Some(map.next_value()?); + } + "new_threshold_bytes" => { + if field_new_threshold_bytes.is_some() { + return Err(::serde::de::Error::duplicate_field("new_threshold_bytes")); + } + field_new_threshold_bytes = Some(map.next_value()?); + } + "previous_value" => { + if field_previous_value.is_some() { + return Err(::serde::de::Error::duplicate_field("previous_value")); + } + field_previous_value = Some(map.next_value()?); + } + "previous_threshold_bytes" => { + if field_previous_threshold_bytes.is_some() { + return Err(::serde::de::Error::duplicate_field("previous_threshold_bytes")); + } + field_previous_threshold_bytes = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } + } + } + if optional && nothing { + return Ok(None); + } + let result = ContentDeletionProtectionChangePolicyDetails { + new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, + new_threshold_bytes: field_new_threshold_bytes.and_then(Option::flatten), + previous_value: field_previous_value.and_then(Option::flatten), + previous_threshold_bytes: field_previous_threshold_bytes.and_then(Option::flatten), + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("new_value", &self.new_value)?; + if let Some(val) = &self.new_threshold_bytes { + s.serialize_field("new_threshold_bytes", val)?; + } + if let Some(val) = &self.previous_value { + s.serialize_field("previous_value", val)?; + } + if let Some(val) = &self.previous_threshold_bytes { + s.serialize_field("previous_threshold_bytes", val)?; + } + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for ContentDeletionProtectionChangePolicyDetails { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = ContentDeletionProtectionChangePolicyDetails; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a ContentDeletionProtectionChangePolicyDetails struct") + } + fn visit_map>(self, map: V) -> Result { + ContentDeletionProtectionChangePolicyDetails::internal_deserialize(map) + } + } + deserializer.deserialize_struct("ContentDeletionProtectionChangePolicyDetails", CONTENT_DELETION_PROTECTION_CHANGE_POLICY_DETAILS_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for ContentDeletionProtectionChangePolicyDetails { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("ContentDeletionProtectionChangePolicyDetails", 4)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct ContentDeletionProtectionChangePolicyType { + pub description: String, +} + +impl ContentDeletionProtectionChangePolicyType { + pub fn new(description: String) -> Self { + ContentDeletionProtectionChangePolicyType { + description, + } + } +} + +const CONTENT_DELETION_PROTECTION_CHANGE_POLICY_TYPE_FIELDS: &[&str] = &["description"]; +impl ContentDeletionProtectionChangePolicyType { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_description = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); + } + field_description = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } + } + } + if optional && nothing { + return Ok(None); + } + let result = ContentDeletionProtectionChangePolicyType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("description", &self.description)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for ContentDeletionProtectionChangePolicyType { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = ContentDeletionProtectionChangePolicyType; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a ContentDeletionProtectionChangePolicyType struct") + } + fn visit_map>(self, map: V) -> Result { + ContentDeletionProtectionChangePolicyType::internal_deserialize(map) + } + } + deserializer.deserialize_struct("ContentDeletionProtectionChangePolicyType", CONTENT_DELETION_PROTECTION_CHANGE_POLICY_TYPE_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for ContentDeletionProtectionChangePolicyType { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("ContentDeletionProtectionChangePolicyType", 1)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +/// Content deletion protection policy +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // variants may be added in the future +pub enum ContentDeletionProtectionPolicy { + Off, + OnAboveThreshold, + OnAllFiles, + /// Catch-all used for unrecognized values returned from the server. Encountering this value + /// typically indicates that this SDK version is out of date. + Other, +} + +impl<'de> ::serde::de::Deserialize<'de> for ContentDeletionProtectionPolicy { + fn deserialize>(deserializer: D) -> Result { + // union deserializer + use serde::de::{self, MapAccess, Visitor}; + struct EnumVisitor; + impl<'de> Visitor<'de> for EnumVisitor { + type Value = ContentDeletionProtectionPolicy; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a ContentDeletionProtectionPolicy structure") + } + fn visit_map>(self, mut map: V) -> Result { + let tag: &str = match map.next_key()? { + Some(".tag") => map.next_value()?, + _ => return Err(de::Error::missing_field(".tag")) + }; + let value = match tag { + "off" => ContentDeletionProtectionPolicy::Off, + "on_above_threshold" => ContentDeletionProtectionPolicy::OnAboveThreshold, + "on_all_files" => ContentDeletionProtectionPolicy::OnAllFiles, + _ => ContentDeletionProtectionPolicy::Other, + }; + crate::eat_json_fields(&mut map)?; + Ok(value) + } + } + const VARIANTS: &[&str] = &["off", + "on_above_threshold", + "on_all_files", + "other"]; + deserializer.deserialize_struct("ContentDeletionProtectionPolicy", VARIANTS, EnumVisitor) + } +} + +impl ::serde::ser::Serialize for ContentDeletionProtectionPolicy { + fn serialize(&self, serializer: S) -> Result { + // union serializer + use serde::ser::SerializeStruct; + match self { + ContentDeletionProtectionPolicy::Off => { + // unit + let mut s = serializer.serialize_struct("ContentDeletionProtectionPolicy", 1)?; + s.serialize_field(".tag", "off")?; + s.end() + } + ContentDeletionProtectionPolicy::OnAboveThreshold => { + // unit + let mut s = serializer.serialize_struct("ContentDeletionProtectionPolicy", 1)?; + s.serialize_field(".tag", "on_above_threshold")?; + s.end() + } + ContentDeletionProtectionPolicy::OnAllFiles => { + // unit + let mut s = serializer.serialize_struct("ContentDeletionProtectionPolicy", 1)?; + s.serialize_field(".tag", "on_all_files")?; + s.end() + } + ContentDeletionProtectionPolicy::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) + } + } +} + /// Policy for pemanent content deletion #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // variants may be added in the future @@ -10686,55 +12326,82 @@ impl ::serde::ser::Serialize for CreateTeamInviteLinkType { } } -/// Set restrictions on data center locations where team data resides. +/// Added a comment to a stack. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct DataPlacementRestrictionChangePolicyDetails { - /// Previous placement restriction. - pub previous_value: PlacementRestriction, - /// New placement restriction. - pub new_value: PlacementRestriction, +pub struct DashAddedCommentToStackDetails { + /// The name of the stack where the comment exists. + pub stack_name: String, + /// The name of the stack item that the comment is tied to. + pub stack_item_name: String, + /// The text of the comment. + pub comment_text: String, + /// The type of stack backend. + pub stack_type: Option, } -impl DataPlacementRestrictionChangePolicyDetails { - pub fn new(previous_value: PlacementRestriction, new_value: PlacementRestriction) -> Self { - DataPlacementRestrictionChangePolicyDetails { - previous_value, - new_value, +impl DashAddedCommentToStackDetails { + pub fn new(stack_name: String, stack_item_name: String, comment_text: String) -> Self { + DashAddedCommentToStackDetails { + stack_name, + stack_item_name, + comment_text, + stack_type: None, } } + + pub fn with_stack_type(mut self, value: DashStackType) -> Self { + self.stack_type = Some(value); + self + } } -const DATA_PLACEMENT_RESTRICTION_CHANGE_POLICY_DETAILS_FIELDS: &[&str] = &["previous_value", - "new_value"]; -impl DataPlacementRestrictionChangePolicyDetails { +const DASH_ADDED_COMMENT_TO_STACK_DETAILS_FIELDS: &[&str] = &["stack_name", + "stack_item_name", + "comment_text", + "stack_type"]; +impl DashAddedCommentToStackDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_previous_value = None; - let mut field_new_value = None; + ) -> Result, V::Error> { + let mut field_stack_name = None; + let mut field_stack_item_name = None; + let mut field_comment_text = None; + let mut field_stack_type = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "previous_value" => { - if field_previous_value.is_some() { - return Err(::serde::de::Error::duplicate_field("previous_value")); + "stack_name" => { + if field_stack_name.is_some() { + return Err(::serde::de::Error::duplicate_field("stack_name")); } - field_previous_value = Some(map.next_value()?); + field_stack_name = Some(map.next_value()?); } - "new_value" => { - if field_new_value.is_some() { - return Err(::serde::de::Error::duplicate_field("new_value")); + "stack_item_name" => { + if field_stack_item_name.is_some() { + return Err(::serde::de::Error::duplicate_field("stack_item_name")); } - field_new_value = Some(map.next_value()?); + field_stack_item_name = Some(map.next_value()?); + } + "comment_text" => { + if field_comment_text.is_some() { + return Err(::serde::de::Error::duplicate_field("comment_text")); + } + field_comment_text = Some(map.next_value()?); + } + "stack_type" => { + if field_stack_type.is_some() { + return Err(::serde::de::Error::duplicate_field("stack_type")); + } + field_stack_type = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -10745,9 +12412,11 @@ impl DataPlacementRestrictionChangePolicyDetails { if optional && nothing { return Ok(None); } - let result = DataPlacementRestrictionChangePolicyDetails { - previous_value: field_previous_value.ok_or_else(|| ::serde::de::Error::missing_field("previous_value"))?, - new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, + let result = DashAddedCommentToStackDetails { + stack_name: field_stack_name.ok_or_else(|| ::serde::de::Error::missing_field("stack_name"))?, + stack_item_name: field_stack_item_name.ok_or_else(|| ::serde::de::Error::missing_field("stack_item_name"))?, + comment_text: field_comment_text.ok_or_else(|| ::serde::de::Error::missing_field("comment_text"))?, + stack_type: field_stack_type.and_then(Option::flatten), }; Ok(Some(result)) } @@ -10757,35 +12426,39 @@ impl DataPlacementRestrictionChangePolicyDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("previous_value", &self.previous_value)?; - s.serialize_field("new_value", &self.new_value)?; + s.serialize_field("stack_name", &self.stack_name)?; + s.serialize_field("stack_item_name", &self.stack_item_name)?; + s.serialize_field("comment_text", &self.comment_text)?; + if let Some(val) = &self.stack_type { + s.serialize_field("stack_type", val)?; + } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for DataPlacementRestrictionChangePolicyDetails { +impl<'de> ::serde::de::Deserialize<'de> for DashAddedCommentToStackDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = DataPlacementRestrictionChangePolicyDetails; + type Value = DashAddedCommentToStackDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a DataPlacementRestrictionChangePolicyDetails struct") + f.write_str("a DashAddedCommentToStackDetails struct") } fn visit_map>(self, map: V) -> Result { - DataPlacementRestrictionChangePolicyDetails::internal_deserialize(map) + DashAddedCommentToStackDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("DataPlacementRestrictionChangePolicyDetails", DATA_PLACEMENT_RESTRICTION_CHANGE_POLICY_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("DashAddedCommentToStackDetails", DASH_ADDED_COMMENT_TO_STACK_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for DataPlacementRestrictionChangePolicyDetails { +impl ::serde::ser::Serialize for DashAddedCommentToStackDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("DataPlacementRestrictionChangePolicyDetails", 2)?; + let mut s = serializer.serialize_struct("DashAddedCommentToStackDetails", 4)?; self.internal_serialize::(&mut s)?; s.end() } @@ -10793,30 +12466,30 @@ impl ::serde::ser::Serialize for DataPlacementRestrictionChangePolicyDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct DataPlacementRestrictionChangePolicyType { +pub struct DashAddedCommentToStackType { pub description: String, } -impl DataPlacementRestrictionChangePolicyType { +impl DashAddedCommentToStackType { pub fn new(description: String) -> Self { - DataPlacementRestrictionChangePolicyType { + DashAddedCommentToStackType { description, } } } -const DATA_PLACEMENT_RESTRICTION_CHANGE_POLICY_TYPE_FIELDS: &[&str] = &["description"]; -impl DataPlacementRestrictionChangePolicyType { +const DASH_ADDED_COMMENT_TO_STACK_TYPE_FIELDS: &[&str] = &["description"]; +impl DashAddedCommentToStackType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -10837,7 +12510,7 @@ impl DataPlacementRestrictionChangePolicyType { if optional && nothing { return Ok(None); } - let result = DataPlacementRestrictionChangePolicyType { + let result = DashAddedCommentToStackType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -10853,72 +12526,83 @@ impl DataPlacementRestrictionChangePolicyType { } } -impl<'de> ::serde::de::Deserialize<'de> for DataPlacementRestrictionChangePolicyType { +impl<'de> ::serde::de::Deserialize<'de> for DashAddedCommentToStackType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = DataPlacementRestrictionChangePolicyType; + type Value = DashAddedCommentToStackType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a DataPlacementRestrictionChangePolicyType struct") + f.write_str("a DashAddedCommentToStackType struct") } fn visit_map>(self, map: V) -> Result { - DataPlacementRestrictionChangePolicyType::internal_deserialize(map) + DashAddedCommentToStackType::internal_deserialize(map) } } - deserializer.deserialize_struct("DataPlacementRestrictionChangePolicyType", DATA_PLACEMENT_RESTRICTION_CHANGE_POLICY_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("DashAddedCommentToStackType", DASH_ADDED_COMMENT_TO_STACK_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for DataPlacementRestrictionChangePolicyType { +impl ::serde::ser::Serialize for DashAddedCommentToStackType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("DataPlacementRestrictionChangePolicyType", 1)?; + let mut s = serializer.serialize_struct("DashAddedCommentToStackType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Completed restrictions on data center locations where team data resides. +/// Connected to a user connector. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct DataPlacementRestrictionSatisfyPolicyDetails { - /// Placement restriction. - pub placement_restriction: PlacementRestriction, +pub struct DashAddedConnectorDetails { + /// The name of the Connector. + pub connector_name: String, + /// The status of the Connector. + pub connector_status: DashConnectorStatus, } -impl DataPlacementRestrictionSatisfyPolicyDetails { - pub fn new(placement_restriction: PlacementRestriction) -> Self { - DataPlacementRestrictionSatisfyPolicyDetails { - placement_restriction, +impl DashAddedConnectorDetails { + pub fn new(connector_name: String, connector_status: DashConnectorStatus) -> Self { + DashAddedConnectorDetails { + connector_name, + connector_status, } } } -const DATA_PLACEMENT_RESTRICTION_SATISFY_POLICY_DETAILS_FIELDS: &[&str] = &["placement_restriction"]; -impl DataPlacementRestrictionSatisfyPolicyDetails { +const DASH_ADDED_CONNECTOR_DETAILS_FIELDS: &[&str] = &["connector_name", + "connector_status"]; +impl DashAddedConnectorDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_placement_restriction = None; + ) -> Result, V::Error> { + let mut field_connector_name = None; + let mut field_connector_status = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "placement_restriction" => { - if field_placement_restriction.is_some() { - return Err(::serde::de::Error::duplicate_field("placement_restriction")); + "connector_name" => { + if field_connector_name.is_some() { + return Err(::serde::de::Error::duplicate_field("connector_name")); } - field_placement_restriction = Some(map.next_value()?); + field_connector_name = Some(map.next_value()?); + } + "connector_status" => { + if field_connector_status.is_some() { + return Err(::serde::de::Error::duplicate_field("connector_status")); + } + field_connector_status = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -10929,8 +12613,9 @@ impl DataPlacementRestrictionSatisfyPolicyDetails { if optional && nothing { return Ok(None); } - let result = DataPlacementRestrictionSatisfyPolicyDetails { - placement_restriction: field_placement_restriction.ok_or_else(|| ::serde::de::Error::missing_field("placement_restriction"))?, + let result = DashAddedConnectorDetails { + connector_name: field_connector_name.ok_or_else(|| ::serde::de::Error::missing_field("connector_name"))?, + connector_status: field_connector_status.ok_or_else(|| ::serde::de::Error::missing_field("connector_status"))?, }; Ok(Some(result)) } @@ -10940,34 +12625,35 @@ impl DataPlacementRestrictionSatisfyPolicyDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("placement_restriction", &self.placement_restriction)?; + s.serialize_field("connector_name", &self.connector_name)?; + s.serialize_field("connector_status", &self.connector_status)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for DataPlacementRestrictionSatisfyPolicyDetails { +impl<'de> ::serde::de::Deserialize<'de> for DashAddedConnectorDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = DataPlacementRestrictionSatisfyPolicyDetails; + type Value = DashAddedConnectorDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a DataPlacementRestrictionSatisfyPolicyDetails struct") + f.write_str("a DashAddedConnectorDetails struct") } fn visit_map>(self, map: V) -> Result { - DataPlacementRestrictionSatisfyPolicyDetails::internal_deserialize(map) + DashAddedConnectorDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("DataPlacementRestrictionSatisfyPolicyDetails", DATA_PLACEMENT_RESTRICTION_SATISFY_POLICY_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("DashAddedConnectorDetails", DASH_ADDED_CONNECTOR_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for DataPlacementRestrictionSatisfyPolicyDetails { +impl ::serde::ser::Serialize for DashAddedConnectorDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("DataPlacementRestrictionSatisfyPolicyDetails", 1)?; + let mut s = serializer.serialize_struct("DashAddedConnectorDetails", 2)?; self.internal_serialize::(&mut s)?; s.end() } @@ -10975,30 +12661,30 @@ impl ::serde::ser::Serialize for DataPlacementRestrictionSatisfyPolicyDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct DataPlacementRestrictionSatisfyPolicyType { +pub struct DashAddedConnectorType { pub description: String, } -impl DataPlacementRestrictionSatisfyPolicyType { +impl DashAddedConnectorType { pub fn new(description: String) -> Self { - DataPlacementRestrictionSatisfyPolicyType { + DashAddedConnectorType { description, } } } -const DATA_PLACEMENT_RESTRICTION_SATISFY_POLICY_TYPE_FIELDS: &[&str] = &["description"]; -impl DataPlacementRestrictionSatisfyPolicyType { +const DASH_ADDED_CONNECTOR_TYPE_FIELDS: &[&str] = &["description"]; +impl DashAddedConnectorType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -11019,7 +12705,7 @@ impl DataPlacementRestrictionSatisfyPolicyType { if optional && nothing { return Ok(None); } - let result = DataPlacementRestrictionSatisfyPolicyType { + let result = DashAddedConnectorType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -11035,104 +12721,185 @@ impl DataPlacementRestrictionSatisfyPolicyType { } } -impl<'de> ::serde::de::Deserialize<'de> for DataPlacementRestrictionSatisfyPolicyType { +impl<'de> ::serde::de::Deserialize<'de> for DashAddedConnectorType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = DataPlacementRestrictionSatisfyPolicyType; + type Value = DashAddedConnectorType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a DataPlacementRestrictionSatisfyPolicyType struct") + f.write_str("a DashAddedConnectorType struct") } fn visit_map>(self, map: V) -> Result { - DataPlacementRestrictionSatisfyPolicyType::internal_deserialize(map) + DashAddedConnectorType::internal_deserialize(map) } } - deserializer.deserialize_struct("DataPlacementRestrictionSatisfyPolicyType", DATA_PLACEMENT_RESTRICTION_SATISFY_POLICY_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("DashAddedConnectorType", DASH_ADDED_CONNECTOR_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for DataPlacementRestrictionSatisfyPolicyType { +impl ::serde::ser::Serialize for DashAddedConnectorType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("DataPlacementRestrictionSatisfyPolicyType", 1)?; + let mut s = serializer.serialize_struct("DashAddedConnectorType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Requested data residency migration for team data. -#[derive(Debug, Clone, PartialEq, Eq, Default)] +/// Added a link to a stack. +#[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct DataResidencyMigrationRequestSuccessfulDetails { +pub struct DashAddedLinkToStackDetails { + /// The name of the stack. + pub stack_name: String, + /// The link to the item in the stack. + pub stack_item_link: String, + /// The type of stack backend. + pub stack_type: Option, } -const DATA_RESIDENCY_MIGRATION_REQUEST_SUCCESSFUL_DETAILS_FIELDS: &[&str] = &[]; -impl DataResidencyMigrationRequestSuccessfulDetails { - // no _opt deserializer +impl DashAddedLinkToStackDetails { + pub fn new(stack_name: String, stack_item_link: String) -> Self { + DashAddedLinkToStackDetails { + stack_name, + stack_item_link, + stack_type: None, + } + } + + pub fn with_stack_type(mut self, value: DashStackType) -> Self { + self.stack_type = Some(value); + self + } +} + +const DASH_ADDED_LINK_TO_STACK_DETAILS_FIELDS: &[&str] = &["stack_name", + "stack_item_link", + "stack_type"]; +impl DashAddedLinkToStackDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - ) -> Result { - // ignore any fields found; none are presently recognized - crate::eat_json_fields(&mut map)?; - Ok(DataResidencyMigrationRequestSuccessfulDetails {}) + optional: bool, + ) -> Result, V::Error> { + let mut field_stack_name = None; + let mut field_stack_item_link = None; + let mut field_stack_type = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "stack_name" => { + if field_stack_name.is_some() { + return Err(::serde::de::Error::duplicate_field("stack_name")); + } + field_stack_name = Some(map.next_value()?); + } + "stack_item_link" => { + if field_stack_item_link.is_some() { + return Err(::serde::de::Error::duplicate_field("stack_item_link")); + } + field_stack_item_link = Some(map.next_value()?); + } + "stack_type" => { + if field_stack_type.is_some() { + return Err(::serde::de::Error::duplicate_field("stack_type")); + } + field_stack_type = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } + } + } + if optional && nothing { + return Ok(None); + } + let result = DashAddedLinkToStackDetails { + stack_name: field_stack_name.ok_or_else(|| ::serde::de::Error::missing_field("stack_name"))?, + stack_item_link: field_stack_item_link.ok_or_else(|| ::serde::de::Error::missing_field("stack_item_link"))?, + stack_type: field_stack_type.and_then(Option::flatten), + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("stack_name", &self.stack_name)?; + s.serialize_field("stack_item_link", &self.stack_item_link)?; + if let Some(val) = &self.stack_type { + s.serialize_field("stack_type", val)?; + } + Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for DataResidencyMigrationRequestSuccessfulDetails { +impl<'de> ::serde::de::Deserialize<'de> for DashAddedLinkToStackDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = DataResidencyMigrationRequestSuccessfulDetails; + type Value = DashAddedLinkToStackDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a DataResidencyMigrationRequestSuccessfulDetails struct") + f.write_str("a DashAddedLinkToStackDetails struct") } fn visit_map>(self, map: V) -> Result { - DataResidencyMigrationRequestSuccessfulDetails::internal_deserialize(map) + DashAddedLinkToStackDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("DataResidencyMigrationRequestSuccessfulDetails", DATA_RESIDENCY_MIGRATION_REQUEST_SUCCESSFUL_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("DashAddedLinkToStackDetails", DASH_ADDED_LINK_TO_STACK_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for DataResidencyMigrationRequestSuccessfulDetails { +impl ::serde::ser::Serialize for DashAddedLinkToStackDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - serializer.serialize_struct("DataResidencyMigrationRequestSuccessfulDetails", 0)?.end() + let mut s = serializer.serialize_struct("DashAddedLinkToStackDetails", 3)?; + self.internal_serialize::(&mut s)?; + s.end() } } #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct DataResidencyMigrationRequestSuccessfulType { +pub struct DashAddedLinkToStackType { pub description: String, } -impl DataResidencyMigrationRequestSuccessfulType { +impl DashAddedLinkToStackType { pub fn new(description: String) -> Self { - DataResidencyMigrationRequestSuccessfulType { + DashAddedLinkToStackType { description, } } } -const DATA_RESIDENCY_MIGRATION_REQUEST_SUCCESSFUL_TYPE_FIELDS: &[&str] = &["description"]; -impl DataResidencyMigrationRequestSuccessfulType { +const DASH_ADDED_LINK_TO_STACK_TYPE_FIELDS: &[&str] = &["description"]; +impl DashAddedLinkToStackType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -11153,7 +12920,7 @@ impl DataResidencyMigrationRequestSuccessfulType { if optional && nothing { return Ok(None); } - let result = DataResidencyMigrationRequestSuccessfulType { + let result = DashAddedLinkToStackType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -11169,104 +12936,152 @@ impl DataResidencyMigrationRequestSuccessfulType { } } -impl<'de> ::serde::de::Deserialize<'de> for DataResidencyMigrationRequestSuccessfulType { +impl<'de> ::serde::de::Deserialize<'de> for DashAddedLinkToStackType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = DataResidencyMigrationRequestSuccessfulType; + type Value = DashAddedLinkToStackType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a DataResidencyMigrationRequestSuccessfulType struct") + f.write_str("a DashAddedLinkToStackType struct") } fn visit_map>(self, map: V) -> Result { - DataResidencyMigrationRequestSuccessfulType::internal_deserialize(map) + DashAddedLinkToStackType::internal_deserialize(map) } } - deserializer.deserialize_struct("DataResidencyMigrationRequestSuccessfulType", DATA_RESIDENCY_MIGRATION_REQUEST_SUCCESSFUL_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("DashAddedLinkToStackType", DASH_ADDED_LINK_TO_STACK_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for DataResidencyMigrationRequestSuccessfulType { +impl ::serde::ser::Serialize for DashAddedLinkToStackType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("DataResidencyMigrationRequestSuccessfulType", 1)?; + let mut s = serializer.serialize_struct("DashAddedLinkToStackType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Request for data residency migration for team data has failed. -#[derive(Debug, Clone, PartialEq, Eq, Default)] +/// Admin added an email domain to the team allowlist. +#[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct DataResidencyMigrationRequestUnsuccessfulDetails { +pub struct DashAddedTeamEmailDomainAllowlistDetails { + /// The email domain that gets added/removed from the team allowlist. + pub email_domain: String, } -const DATA_RESIDENCY_MIGRATION_REQUEST_UNSUCCESSFUL_DETAILS_FIELDS: &[&str] = &[]; -impl DataResidencyMigrationRequestUnsuccessfulDetails { - // no _opt deserializer +impl DashAddedTeamEmailDomainAllowlistDetails { + pub fn new(email_domain: String) -> Self { + DashAddedTeamEmailDomainAllowlistDetails { + email_domain, + } + } +} + +const DASH_ADDED_TEAM_EMAIL_DOMAIN_ALLOWLIST_DETAILS_FIELDS: &[&str] = &["email_domain"]; +impl DashAddedTeamEmailDomainAllowlistDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - ) -> Result { - // ignore any fields found; none are presently recognized - crate::eat_json_fields(&mut map)?; - Ok(DataResidencyMigrationRequestUnsuccessfulDetails {}) + optional: bool, + ) -> Result, V::Error> { + let mut field_email_domain = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "email_domain" => { + if field_email_domain.is_some() { + return Err(::serde::de::Error::duplicate_field("email_domain")); + } + field_email_domain = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } + } + } + if optional && nothing { + return Ok(None); + } + let result = DashAddedTeamEmailDomainAllowlistDetails { + email_domain: field_email_domain.ok_or_else(|| ::serde::de::Error::missing_field("email_domain"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("email_domain", &self.email_domain)?; + Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for DataResidencyMigrationRequestUnsuccessfulDetails { +impl<'de> ::serde::de::Deserialize<'de> for DashAddedTeamEmailDomainAllowlistDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = DataResidencyMigrationRequestUnsuccessfulDetails; + type Value = DashAddedTeamEmailDomainAllowlistDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a DataResidencyMigrationRequestUnsuccessfulDetails struct") + f.write_str("a DashAddedTeamEmailDomainAllowlistDetails struct") } fn visit_map>(self, map: V) -> Result { - DataResidencyMigrationRequestUnsuccessfulDetails::internal_deserialize(map) + DashAddedTeamEmailDomainAllowlistDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("DataResidencyMigrationRequestUnsuccessfulDetails", DATA_RESIDENCY_MIGRATION_REQUEST_UNSUCCESSFUL_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("DashAddedTeamEmailDomainAllowlistDetails", DASH_ADDED_TEAM_EMAIL_DOMAIN_ALLOWLIST_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for DataResidencyMigrationRequestUnsuccessfulDetails { +impl ::serde::ser::Serialize for DashAddedTeamEmailDomainAllowlistDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - serializer.serialize_struct("DataResidencyMigrationRequestUnsuccessfulDetails", 0)?.end() + let mut s = serializer.serialize_struct("DashAddedTeamEmailDomainAllowlistDetails", 1)?; + self.internal_serialize::(&mut s)?; + s.end() } } #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct DataResidencyMigrationRequestUnsuccessfulType { +pub struct DashAddedTeamEmailDomainAllowlistType { pub description: String, } -impl DataResidencyMigrationRequestUnsuccessfulType { +impl DashAddedTeamEmailDomainAllowlistType { pub fn new(description: String) -> Self { - DataResidencyMigrationRequestUnsuccessfulType { + DashAddedTeamEmailDomainAllowlistType { description, } } } -const DATA_RESIDENCY_MIGRATION_REQUEST_UNSUCCESSFUL_TYPE_FIELDS: &[&str] = &["description"]; -impl DataResidencyMigrationRequestUnsuccessfulType { +const DASH_ADDED_TEAM_EMAIL_DOMAIN_ALLOWLIST_TYPE_FIELDS: &[&str] = &["description"]; +impl DashAddedTeamEmailDomainAllowlistType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -11287,7 +13102,7 @@ impl DataResidencyMigrationRequestUnsuccessfulType { if optional && nothing { return Ok(None); } - let result = DataResidencyMigrationRequestUnsuccessfulType { + let result = DashAddedTeamEmailDomainAllowlistType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -11303,190 +13118,83 @@ impl DataResidencyMigrationRequestUnsuccessfulType { } } -impl<'de> ::serde::de::Deserialize<'de> for DataResidencyMigrationRequestUnsuccessfulType { +impl<'de> ::serde::de::Deserialize<'de> for DashAddedTeamEmailDomainAllowlistType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = DataResidencyMigrationRequestUnsuccessfulType; + type Value = DashAddedTeamEmailDomainAllowlistType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a DataResidencyMigrationRequestUnsuccessfulType struct") + f.write_str("a DashAddedTeamEmailDomainAllowlistType struct") } fn visit_map>(self, map: V) -> Result { - DataResidencyMigrationRequestUnsuccessfulType::internal_deserialize(map) + DashAddedTeamEmailDomainAllowlistType::internal_deserialize(map) } } - deserializer.deserialize_struct("DataResidencyMigrationRequestUnsuccessfulType", DATA_RESIDENCY_MIGRATION_REQUEST_UNSUCCESSFUL_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("DashAddedTeamEmailDomainAllowlistType", DASH_ADDED_TEAM_EMAIL_DOMAIN_ALLOWLIST_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for DataResidencyMigrationRequestUnsuccessfulType { +impl ::serde::ser::Serialize for DashAddedTeamEmailDomainAllowlistType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("DataResidencyMigrationRequestUnsuccessfulType", 1)?; + let mut s = serializer.serialize_struct("DashAddedTeamEmailDomainAllowlistType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Policy for the default number of days until an externally shared link expires -#[derive(Debug, Clone, PartialEq, Eq)] -#[non_exhaustive] // variants may be added in the future -pub enum DefaultLinkExpirationDaysPolicy { - Day1, - Day180, - Day3, - Day30, - Day7, - Day90, - None, - Year1, - /// Catch-all used for unrecognized values returned from the server. Encountering this value - /// typically indicates that this SDK version is out of date. - Other, -} - -impl<'de> ::serde::de::Deserialize<'de> for DefaultLinkExpirationDaysPolicy { - fn deserialize>(deserializer: D) -> Result { - // union deserializer - use serde::de::{self, MapAccess, Visitor}; - struct EnumVisitor; - impl<'de> Visitor<'de> for EnumVisitor { - type Value = DefaultLinkExpirationDaysPolicy; - fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a DefaultLinkExpirationDaysPolicy structure") - } - fn visit_map>(self, mut map: V) -> Result { - let tag: &str = match map.next_key()? { - Some(".tag") => map.next_value()?, - _ => return Err(de::Error::missing_field(".tag")) - }; - let value = match tag { - "day_1" => DefaultLinkExpirationDaysPolicy::Day1, - "day_180" => DefaultLinkExpirationDaysPolicy::Day180, - "day_3" => DefaultLinkExpirationDaysPolicy::Day3, - "day_30" => DefaultLinkExpirationDaysPolicy::Day30, - "day_7" => DefaultLinkExpirationDaysPolicy::Day7, - "day_90" => DefaultLinkExpirationDaysPolicy::Day90, - "none" => DefaultLinkExpirationDaysPolicy::None, - "year_1" => DefaultLinkExpirationDaysPolicy::Year1, - _ => DefaultLinkExpirationDaysPolicy::Other, - }; - crate::eat_json_fields(&mut map)?; - Ok(value) - } - } - const VARIANTS: &[&str] = &["day_1", - "day_180", - "day_3", - "day_30", - "day_7", - "day_90", - "none", - "year_1", - "other"]; - deserializer.deserialize_struct("DefaultLinkExpirationDaysPolicy", VARIANTS, EnumVisitor) - } -} - -impl ::serde::ser::Serialize for DefaultLinkExpirationDaysPolicy { - fn serialize(&self, serializer: S) -> Result { - // union serializer - use serde::ser::SerializeStruct; - match self { - DefaultLinkExpirationDaysPolicy::Day1 => { - // unit - let mut s = serializer.serialize_struct("DefaultLinkExpirationDaysPolicy", 1)?; - s.serialize_field(".tag", "day_1")?; - s.end() - } - DefaultLinkExpirationDaysPolicy::Day180 => { - // unit - let mut s = serializer.serialize_struct("DefaultLinkExpirationDaysPolicy", 1)?; - s.serialize_field(".tag", "day_180")?; - s.end() - } - DefaultLinkExpirationDaysPolicy::Day3 => { - // unit - let mut s = serializer.serialize_struct("DefaultLinkExpirationDaysPolicy", 1)?; - s.serialize_field(".tag", "day_3")?; - s.end() - } - DefaultLinkExpirationDaysPolicy::Day30 => { - // unit - let mut s = serializer.serialize_struct("DefaultLinkExpirationDaysPolicy", 1)?; - s.serialize_field(".tag", "day_30")?; - s.end() - } - DefaultLinkExpirationDaysPolicy::Day7 => { - // unit - let mut s = serializer.serialize_struct("DefaultLinkExpirationDaysPolicy", 1)?; - s.serialize_field(".tag", "day_7")?; - s.end() - } - DefaultLinkExpirationDaysPolicy::Day90 => { - // unit - let mut s = serializer.serialize_struct("DefaultLinkExpirationDaysPolicy", 1)?; - s.serialize_field(".tag", "day_90")?; - s.end() - } - DefaultLinkExpirationDaysPolicy::None => { - // unit - let mut s = serializer.serialize_struct("DefaultLinkExpirationDaysPolicy", 1)?; - s.serialize_field(".tag", "none")?; - s.end() - } - DefaultLinkExpirationDaysPolicy::Year1 => { - // unit - let mut s = serializer.serialize_struct("DefaultLinkExpirationDaysPolicy", 1)?; - s.serialize_field(".tag", "year_1")?; - s.end() - } - DefaultLinkExpirationDaysPolicy::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) - } - } -} - -/// Deleted team invite link. +/// Admin added an admin connector. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct DeleteTeamInviteLinkDetails { - /// The invite link url that was deleted. - pub link_url: String, +pub struct DashAdminAddedOrgWideConnectorDetails { + /// The name of the Connector. + pub connector_name: String, + /// The status of the Connector. + pub connector_status: DashConnectorStatus, } -impl DeleteTeamInviteLinkDetails { - pub fn new(link_url: String) -> Self { - DeleteTeamInviteLinkDetails { - link_url, +impl DashAdminAddedOrgWideConnectorDetails { + pub fn new(connector_name: String, connector_status: DashConnectorStatus) -> Self { + DashAdminAddedOrgWideConnectorDetails { + connector_name, + connector_status, } } } -const DELETE_TEAM_INVITE_LINK_DETAILS_FIELDS: &[&str] = &["link_url"]; -impl DeleteTeamInviteLinkDetails { +const DASH_ADMIN_ADDED_ORG_WIDE_CONNECTOR_DETAILS_FIELDS: &[&str] = &["connector_name", + "connector_status"]; +impl DashAdminAddedOrgWideConnectorDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_link_url = None; + ) -> Result, V::Error> { + let mut field_connector_name = None; + let mut field_connector_status = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "link_url" => { - if field_link_url.is_some() { - return Err(::serde::de::Error::duplicate_field("link_url")); + "connector_name" => { + if field_connector_name.is_some() { + return Err(::serde::de::Error::duplicate_field("connector_name")); } - field_link_url = Some(map.next_value()?); + field_connector_name = Some(map.next_value()?); + } + "connector_status" => { + if field_connector_status.is_some() { + return Err(::serde::de::Error::duplicate_field("connector_status")); + } + field_connector_status = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -11497,8 +13205,9 @@ impl DeleteTeamInviteLinkDetails { if optional && nothing { return Ok(None); } - let result = DeleteTeamInviteLinkDetails { - link_url: field_link_url.ok_or_else(|| ::serde::de::Error::missing_field("link_url"))?, + let result = DashAdminAddedOrgWideConnectorDetails { + connector_name: field_connector_name.ok_or_else(|| ::serde::de::Error::missing_field("connector_name"))?, + connector_status: field_connector_status.ok_or_else(|| ::serde::de::Error::missing_field("connector_status"))?, }; Ok(Some(result)) } @@ -11508,34 +13217,35 @@ impl DeleteTeamInviteLinkDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("link_url", &self.link_url)?; + s.serialize_field("connector_name", &self.connector_name)?; + s.serialize_field("connector_status", &self.connector_status)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for DeleteTeamInviteLinkDetails { +impl<'de> ::serde::de::Deserialize<'de> for DashAdminAddedOrgWideConnectorDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = DeleteTeamInviteLinkDetails; + type Value = DashAdminAddedOrgWideConnectorDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a DeleteTeamInviteLinkDetails struct") + f.write_str("a DashAdminAddedOrgWideConnectorDetails struct") } fn visit_map>(self, map: V) -> Result { - DeleteTeamInviteLinkDetails::internal_deserialize(map) + DashAdminAddedOrgWideConnectorDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("DeleteTeamInviteLinkDetails", DELETE_TEAM_INVITE_LINK_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("DashAdminAddedOrgWideConnectorDetails", DASH_ADMIN_ADDED_ORG_WIDE_CONNECTOR_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for DeleteTeamInviteLinkDetails { +impl ::serde::ser::Serialize for DashAdminAddedOrgWideConnectorDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("DeleteTeamInviteLinkDetails", 1)?; + let mut s = serializer.serialize_struct("DashAdminAddedOrgWideConnectorDetails", 2)?; self.internal_serialize::(&mut s)?; s.end() } @@ -11543,30 +13253,30 @@ impl ::serde::ser::Serialize for DeleteTeamInviteLinkDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct DeleteTeamInviteLinkType { +pub struct DashAdminAddedOrgWideConnectorType { pub description: String, } -impl DeleteTeamInviteLinkType { +impl DashAdminAddedOrgWideConnectorType { pub fn new(description: String) -> Self { - DeleteTeamInviteLinkType { + DashAdminAddedOrgWideConnectorType { description, } } } -const DELETE_TEAM_INVITE_LINK_TYPE_FIELDS: &[&str] = &["description"]; -impl DeleteTeamInviteLinkType { +const DASH_ADMIN_ADDED_ORG_WIDE_CONNECTOR_TYPE_FIELDS: &[&str] = &["description"]; +impl DashAdminAddedOrgWideConnectorType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -11587,7 +13297,7 @@ impl DeleteTeamInviteLinkType { if optional && nothing { return Ok(None); } - let result = DeleteTeamInviteLinkType { + let result = DashAdminAddedOrgWideConnectorType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -11603,190 +13313,88 @@ impl DeleteTeamInviteLinkType { } } -impl<'de> ::serde::de::Deserialize<'de> for DeleteTeamInviteLinkType { +impl<'de> ::serde::de::Deserialize<'de> for DashAdminAddedOrgWideConnectorType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = DeleteTeamInviteLinkType; + type Value = DashAdminAddedOrgWideConnectorType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a DeleteTeamInviteLinkType struct") + f.write_str("a DashAdminAddedOrgWideConnectorType struct") } fn visit_map>(self, map: V) -> Result { - DeleteTeamInviteLinkType::internal_deserialize(map) + DashAdminAddedOrgWideConnectorType::internal_deserialize(map) } } - deserializer.deserialize_struct("DeleteTeamInviteLinkType", DELETE_TEAM_INVITE_LINK_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("DashAdminAddedOrgWideConnectorType", DASH_ADMIN_ADDED_ORG_WIDE_CONNECTOR_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for DeleteTeamInviteLinkType { +impl ::serde::ser::Serialize for DashAdminAddedOrgWideConnectorType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("DeleteTeamInviteLinkType", 1)?; + let mut s = serializer.serialize_struct("DashAdminAddedOrgWideConnectorType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Information about linked Dropbox desktop client sessions +/// Admin disabled a user connector. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct DesktopDeviceSessionLogInfo { - /// Name of the hosting desktop. - pub host_name: String, - /// The Dropbox desktop client type. - pub client_type: crate::types::team::DesktopPlatform, - /// Information on the hosting platform. - pub platform: String, - /// Whether itu2019s possible to delete all of the account files upon unlinking. - pub is_delete_on_unlink_supported: bool, - /// The IP address of the last activity from this session. - pub ip_address: Option, - /// The time this session was created. - pub created: Option, - /// The time of the last activity from this session. - pub updated: Option, - /// Desktop session unique id. - pub session_info: Option, - /// The Dropbox client version. - pub client_version: Option, +pub struct DashAdminDisabledConnectorDetails { + /// The name of the Connector. + pub connector_name: String, + /// The status of the Connector. + pub connector_status: Option, } -impl DesktopDeviceSessionLogInfo { - pub fn new( - host_name: String, - client_type: crate::types::team::DesktopPlatform, - platform: String, - is_delete_on_unlink_supported: bool, - ) -> Self { - DesktopDeviceSessionLogInfo { - host_name, - client_type, - platform, - is_delete_on_unlink_supported, - ip_address: None, - created: None, - updated: None, - session_info: None, - client_version: None, +impl DashAdminDisabledConnectorDetails { + pub fn new(connector_name: String) -> Self { + DashAdminDisabledConnectorDetails { + connector_name, + connector_status: None, } } - pub fn with_ip_address(mut self, value: IpAddress) -> Self { - self.ip_address = Some(value); - self - } - - pub fn with_created(mut self, value: crate::types::common::DropboxTimestamp) -> Self { - self.created = Some(value); - self - } - - pub fn with_updated(mut self, value: crate::types::common::DropboxTimestamp) -> Self { - self.updated = Some(value); - self - } - - pub fn with_session_info(mut self, value: DesktopSessionLogInfo) -> Self { - self.session_info = Some(value); - self - } - - pub fn with_client_version(mut self, value: String) -> Self { - self.client_version = Some(value); + pub fn with_connector_status(mut self, value: DashConnectorStatus) -> Self { + self.connector_status = Some(value); self } } -const DESKTOP_DEVICE_SESSION_LOG_INFO_FIELDS: &[&str] = &["host_name", - "client_type", - "platform", - "is_delete_on_unlink_supported", - "ip_address", - "created", - "updated", - "session_info", - "client_version"]; -impl DesktopDeviceSessionLogInfo { +const DASH_ADMIN_DISABLED_CONNECTOR_DETAILS_FIELDS: &[&str] = &["connector_name", + "connector_status"]; +impl DashAdminDisabledConnectorDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_host_name = None; - let mut field_client_type = None; - let mut field_platform = None; - let mut field_is_delete_on_unlink_supported = None; - let mut field_ip_address = None; - let mut field_created = None; - let mut field_updated = None; - let mut field_session_info = None; - let mut field_client_version = None; + ) -> Result, V::Error> { + let mut field_connector_name = None; + let mut field_connector_status = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "host_name" => { - if field_host_name.is_some() { - return Err(::serde::de::Error::duplicate_field("host_name")); + "connector_name" => { + if field_connector_name.is_some() { + return Err(::serde::de::Error::duplicate_field("connector_name")); } - field_host_name = Some(map.next_value()?); + field_connector_name = Some(map.next_value()?); } - "client_type" => { - if field_client_type.is_some() { - return Err(::serde::de::Error::duplicate_field("client_type")); + "connector_status" => { + if field_connector_status.is_some() { + return Err(::serde::de::Error::duplicate_field("connector_status")); } - field_client_type = Some(map.next_value()?); - } - "platform" => { - if field_platform.is_some() { - return Err(::serde::de::Error::duplicate_field("platform")); - } - field_platform = Some(map.next_value()?); - } - "is_delete_on_unlink_supported" => { - if field_is_delete_on_unlink_supported.is_some() { - return Err(::serde::de::Error::duplicate_field("is_delete_on_unlink_supported")); - } - field_is_delete_on_unlink_supported = Some(map.next_value()?); - } - "ip_address" => { - if field_ip_address.is_some() { - return Err(::serde::de::Error::duplicate_field("ip_address")); - } - field_ip_address = Some(map.next_value()?); - } - "created" => { - if field_created.is_some() { - return Err(::serde::de::Error::duplicate_field("created")); - } - field_created = Some(map.next_value()?); - } - "updated" => { - if field_updated.is_some() { - return Err(::serde::de::Error::duplicate_field("updated")); - } - field_updated = Some(map.next_value()?); - } - "session_info" => { - if field_session_info.is_some() { - return Err(::serde::de::Error::duplicate_field("session_info")); - } - field_session_info = Some(map.next_value()?); - } - "client_version" => { - if field_client_version.is_some() { - return Err(::serde::de::Error::duplicate_field("client_version")); - } - field_client_version = Some(map.next_value()?); + field_connector_status = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -11797,16 +13405,9 @@ impl DesktopDeviceSessionLogInfo { if optional && nothing { return Ok(None); } - let result = DesktopDeviceSessionLogInfo { - host_name: field_host_name.ok_or_else(|| ::serde::de::Error::missing_field("host_name"))?, - client_type: field_client_type.ok_or_else(|| ::serde::de::Error::missing_field("client_type"))?, - platform: field_platform.ok_or_else(|| ::serde::de::Error::missing_field("platform"))?, - is_delete_on_unlink_supported: field_is_delete_on_unlink_supported.ok_or_else(|| ::serde::de::Error::missing_field("is_delete_on_unlink_supported"))?, - ip_address: field_ip_address.and_then(Option::flatten), - created: field_created.and_then(Option::flatten), - updated: field_updated.and_then(Option::flatten), - session_info: field_session_info.and_then(Option::flatten), - client_version: field_client_version.and_then(Option::flatten), + let result = DashAdminDisabledConnectorDetails { + connector_name: field_connector_name.ok_or_else(|| ::serde::de::Error::missing_field("connector_name"))?, + connector_status: field_connector_status.and_then(Option::flatten), }; Ok(Some(result)) } @@ -11816,92 +13417,78 @@ impl DesktopDeviceSessionLogInfo { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("host_name", &self.host_name)?; - s.serialize_field("client_type", &self.client_type)?; - s.serialize_field("platform", &self.platform)?; - s.serialize_field("is_delete_on_unlink_supported", &self.is_delete_on_unlink_supported)?; - if let Some(val) = &self.ip_address { - s.serialize_field("ip_address", val)?; - } - if let Some(val) = &self.created { - s.serialize_field("created", val)?; - } - if let Some(val) = &self.updated { - s.serialize_field("updated", val)?; - } - if let Some(val) = &self.session_info { - s.serialize_field("session_info", val)?; - } - if let Some(val) = &self.client_version { - s.serialize_field("client_version", val)?; + s.serialize_field("connector_name", &self.connector_name)?; + if let Some(val) = &self.connector_status { + s.serialize_field("connector_status", val)?; } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for DesktopDeviceSessionLogInfo { +impl<'de> ::serde::de::Deserialize<'de> for DashAdminDisabledConnectorDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = DesktopDeviceSessionLogInfo; + type Value = DashAdminDisabledConnectorDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a DesktopDeviceSessionLogInfo struct") + f.write_str("a DashAdminDisabledConnectorDetails struct") } fn visit_map>(self, map: V) -> Result { - DesktopDeviceSessionLogInfo::internal_deserialize(map) + DashAdminDisabledConnectorDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("DesktopDeviceSessionLogInfo", DESKTOP_DEVICE_SESSION_LOG_INFO_FIELDS, StructVisitor) + deserializer.deserialize_struct("DashAdminDisabledConnectorDetails", DASH_ADMIN_DISABLED_CONNECTOR_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for DesktopDeviceSessionLogInfo { +impl ::serde::ser::Serialize for DashAdminDisabledConnectorDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("DesktopDeviceSessionLogInfo", 9)?; + let mut s = serializer.serialize_struct("DashAdminDisabledConnectorDetails", 2)?; self.internal_serialize::(&mut s)?; s.end() } } -// struct extends polymorphic struct DeviceSessionLogInfo -impl From for DeviceSessionLogInfo { - fn from(subtype: DesktopDeviceSessionLogInfo) -> Self { - DeviceSessionLogInfo::DesktopDeviceSession(subtype) - } -} -/// Desktop session. -#[derive(Debug, Clone, PartialEq, Eq, Default)] +#[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct DesktopSessionLogInfo { - /// Session ID. - pub session_id: Option, +pub struct DashAdminDisabledConnectorType { + pub description: String, } -impl DesktopSessionLogInfo { - pub fn with_session_id(mut self, value: crate::types::common::SessionId) -> Self { - self.session_id = Some(value); - self +impl DashAdminDisabledConnectorType { + pub fn new(description: String) -> Self { + DashAdminDisabledConnectorType { + description, + } } } -const DESKTOP_SESSION_LOG_INFO_FIELDS: &[&str] = &["session_id"]; -impl DesktopSessionLogInfo { - // no _opt deserializer +const DASH_ADMIN_DISABLED_CONNECTOR_TYPE_FIELDS: &[&str] = &["description"]; +impl DashAdminDisabledConnectorType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - ) -> Result { - let mut field_session_id = None; + optional: bool, + ) -> Result, V::Error> { + let mut field_description = None; + let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { + nothing = false; match key { - "session_id" => { - if field_session_id.is_some() { - return Err(::serde::de::Error::duplicate_field("session_id")); + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); } - field_session_id = Some(map.next_value()?); + field_description = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -11909,10 +13496,13 @@ impl DesktopSessionLogInfo { } } } - let result = DesktopSessionLogInfo { - session_id: field_session_id.and_then(Option::flatten), + if optional && nothing { + return Ok(None); + } + let result = DashAdminDisabledConnectorType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; - Ok(result) + Ok(Some(result)) } pub(crate) fn internal_serialize( @@ -11920,117 +13510,177 @@ impl DesktopSessionLogInfo { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - if let Some(val) = &self.session_id { - s.serialize_field("session_id", val)?; - } + s.serialize_field("description", &self.description)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for DesktopSessionLogInfo { +impl<'de> ::serde::de::Deserialize<'de> for DashAdminDisabledConnectorType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = DesktopSessionLogInfo; + type Value = DashAdminDisabledConnectorType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a DesktopSessionLogInfo struct") + f.write_str("a DashAdminDisabledConnectorType struct") } fn visit_map>(self, map: V) -> Result { - DesktopSessionLogInfo::internal_deserialize(map) + DashAdminDisabledConnectorType::internal_deserialize(map) } } - deserializer.deserialize_struct("DesktopSessionLogInfo", DESKTOP_SESSION_LOG_INFO_FIELDS, StructVisitor) + deserializer.deserialize_struct("DashAdminDisabledConnectorType", DASH_ADMIN_DISABLED_CONNECTOR_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for DesktopSessionLogInfo { +impl ::serde::ser::Serialize for DashAdminDisabledConnectorType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("DesktopSessionLogInfo", 1)?; + let mut s = serializer.serialize_struct("DashAdminDisabledConnectorType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -// struct extends polymorphic struct SessionLogInfo -impl From for SessionLogInfo { - fn from(subtype: DesktopSessionLogInfo) -> Self { - SessionLogInfo::Desktop(subtype) - } -} -/// Added members to device approvals exception list. -#[derive(Debug, Clone, PartialEq, Eq, Default)] +/// Admin enabled a user connector. +#[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct DeviceApprovalsAddExceptionDetails { +pub struct DashAdminEnabledConnectorDetails { + /// The name of the Connector. + pub connector_name: String, + /// The status of the Connector. + pub connector_status: Option, } -const DEVICE_APPROVALS_ADD_EXCEPTION_DETAILS_FIELDS: &[&str] = &[]; -impl DeviceApprovalsAddExceptionDetails { - // no _opt deserializer +impl DashAdminEnabledConnectorDetails { + pub fn new(connector_name: String) -> Self { + DashAdminEnabledConnectorDetails { + connector_name, + connector_status: None, + } + } + + pub fn with_connector_status(mut self, value: DashConnectorStatus) -> Self { + self.connector_status = Some(value); + self + } +} + +const DASH_ADMIN_ENABLED_CONNECTOR_DETAILS_FIELDS: &[&str] = &["connector_name", + "connector_status"]; +impl DashAdminEnabledConnectorDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - ) -> Result { - // ignore any fields found; none are presently recognized - crate::eat_json_fields(&mut map)?; - Ok(DeviceApprovalsAddExceptionDetails {}) + optional: bool, + ) -> Result, V::Error> { + let mut field_connector_name = None; + let mut field_connector_status = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "connector_name" => { + if field_connector_name.is_some() { + return Err(::serde::de::Error::duplicate_field("connector_name")); + } + field_connector_name = Some(map.next_value()?); + } + "connector_status" => { + if field_connector_status.is_some() { + return Err(::serde::de::Error::duplicate_field("connector_status")); + } + field_connector_status = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } + } + } + if optional && nothing { + return Ok(None); + } + let result = DashAdminEnabledConnectorDetails { + connector_name: field_connector_name.ok_or_else(|| ::serde::de::Error::missing_field("connector_name"))?, + connector_status: field_connector_status.and_then(Option::flatten), + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("connector_name", &self.connector_name)?; + if let Some(val) = &self.connector_status { + s.serialize_field("connector_status", val)?; + } + Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for DeviceApprovalsAddExceptionDetails { +impl<'de> ::serde::de::Deserialize<'de> for DashAdminEnabledConnectorDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = DeviceApprovalsAddExceptionDetails; + type Value = DashAdminEnabledConnectorDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a DeviceApprovalsAddExceptionDetails struct") + f.write_str("a DashAdminEnabledConnectorDetails struct") } fn visit_map>(self, map: V) -> Result { - DeviceApprovalsAddExceptionDetails::internal_deserialize(map) + DashAdminEnabledConnectorDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("DeviceApprovalsAddExceptionDetails", DEVICE_APPROVALS_ADD_EXCEPTION_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("DashAdminEnabledConnectorDetails", DASH_ADMIN_ENABLED_CONNECTOR_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for DeviceApprovalsAddExceptionDetails { +impl ::serde::ser::Serialize for DashAdminEnabledConnectorDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - serializer.serialize_struct("DeviceApprovalsAddExceptionDetails", 0)?.end() + let mut s = serializer.serialize_struct("DashAdminEnabledConnectorDetails", 2)?; + self.internal_serialize::(&mut s)?; + s.end() } } #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct DeviceApprovalsAddExceptionType { +pub struct DashAdminEnabledConnectorType { pub description: String, } -impl DeviceApprovalsAddExceptionType { +impl DashAdminEnabledConnectorType { pub fn new(description: String) -> Self { - DeviceApprovalsAddExceptionType { + DashAdminEnabledConnectorType { description, } } } -const DEVICE_APPROVALS_ADD_EXCEPTION_TYPE_FIELDS: &[&str] = &["description"]; -impl DeviceApprovalsAddExceptionType { +const DASH_ADMIN_ENABLED_CONNECTOR_TYPE_FIELDS: &[&str] = &["description"]; +impl DashAdminEnabledConnectorType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -12051,7 +13701,7 @@ impl DeviceApprovalsAddExceptionType { if optional && nothing { return Ok(None); } - let result = DeviceApprovalsAddExceptionType { + let result = DashAdminEnabledConnectorType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -12067,78 +13717,83 @@ impl DeviceApprovalsAddExceptionType { } } -impl<'de> ::serde::de::Deserialize<'de> for DeviceApprovalsAddExceptionType { +impl<'de> ::serde::de::Deserialize<'de> for DashAdminEnabledConnectorType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = DeviceApprovalsAddExceptionType; + type Value = DashAdminEnabledConnectorType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a DeviceApprovalsAddExceptionType struct") + f.write_str("a DashAdminEnabledConnectorType struct") } fn visit_map>(self, map: V) -> Result { - DeviceApprovalsAddExceptionType::internal_deserialize(map) + DashAdminEnabledConnectorType::internal_deserialize(map) } } - deserializer.deserialize_struct("DeviceApprovalsAddExceptionType", DEVICE_APPROVALS_ADD_EXCEPTION_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("DashAdminEnabledConnectorType", DASH_ADMIN_ENABLED_CONNECTOR_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for DeviceApprovalsAddExceptionType { +impl ::serde::ser::Serialize for DashAdminEnabledConnectorType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("DeviceApprovalsAddExceptionType", 1)?; + let mut s = serializer.serialize_struct("DashAdminEnabledConnectorType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Set/removed limit on number of computers member can link to team Dropbox account. -#[derive(Debug, Clone, PartialEq, Eq, Default)] +/// Admin removed an admin connector. +#[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct DeviceApprovalsChangeDesktopPolicyDetails { - /// New desktop device approvals policy. Might be missing due to historical data gap. - pub new_value: Option, - /// Previous desktop device approvals policy. Might be missing due to historical data gap. - pub previous_value: Option, +pub struct DashAdminRemovedOrgWideConnectorDetails { + /// The name of the Connector. + pub connector_name: String, + /// The status of the Connector. + pub connector_status: DashConnectorStatus, } -impl DeviceApprovalsChangeDesktopPolicyDetails { - pub fn with_new_value(mut self, value: DeviceApprovalsPolicy) -> Self { - self.new_value = Some(value); - self - } - - pub fn with_previous_value(mut self, value: DeviceApprovalsPolicy) -> Self { - self.previous_value = Some(value); - self +impl DashAdminRemovedOrgWideConnectorDetails { + pub fn new(connector_name: String, connector_status: DashConnectorStatus) -> Self { + DashAdminRemovedOrgWideConnectorDetails { + connector_name, + connector_status, + } } } -const DEVICE_APPROVALS_CHANGE_DESKTOP_POLICY_DETAILS_FIELDS: &[&str] = &["new_value", - "previous_value"]; -impl DeviceApprovalsChangeDesktopPolicyDetails { - // no _opt deserializer +const DASH_ADMIN_REMOVED_ORG_WIDE_CONNECTOR_DETAILS_FIELDS: &[&str] = &["connector_name", + "connector_status"]; +impl DashAdminRemovedOrgWideConnectorDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - ) -> Result { - let mut field_new_value = None; - let mut field_previous_value = None; + optional: bool, + ) -> Result, V::Error> { + let mut field_connector_name = None; + let mut field_connector_status = None; + let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { + nothing = false; match key { - "new_value" => { - if field_new_value.is_some() { - return Err(::serde::de::Error::duplicate_field("new_value")); + "connector_name" => { + if field_connector_name.is_some() { + return Err(::serde::de::Error::duplicate_field("connector_name")); } - field_new_value = Some(map.next_value()?); + field_connector_name = Some(map.next_value()?); } - "previous_value" => { - if field_previous_value.is_some() { - return Err(::serde::de::Error::duplicate_field("previous_value")); + "connector_status" => { + if field_connector_status.is_some() { + return Err(::serde::de::Error::duplicate_field("connector_status")); } - field_previous_value = Some(map.next_value()?); + field_connector_status = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -12146,11 +13801,14 @@ impl DeviceApprovalsChangeDesktopPolicyDetails { } } } - let result = DeviceApprovalsChangeDesktopPolicyDetails { - new_value: field_new_value.and_then(Option::flatten), - previous_value: field_previous_value.and_then(Option::flatten), + if optional && nothing { + return Ok(None); + } + let result = DashAdminRemovedOrgWideConnectorDetails { + connector_name: field_connector_name.ok_or_else(|| ::serde::de::Error::missing_field("connector_name"))?, + connector_status: field_connector_status.ok_or_else(|| ::serde::de::Error::missing_field("connector_status"))?, }; - Ok(result) + Ok(Some(result)) } pub(crate) fn internal_serialize( @@ -12158,39 +13816,35 @@ impl DeviceApprovalsChangeDesktopPolicyDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - if let Some(val) = &self.new_value { - s.serialize_field("new_value", val)?; - } - if let Some(val) = &self.previous_value { - s.serialize_field("previous_value", val)?; - } + s.serialize_field("connector_name", &self.connector_name)?; + s.serialize_field("connector_status", &self.connector_status)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for DeviceApprovalsChangeDesktopPolicyDetails { +impl<'de> ::serde::de::Deserialize<'de> for DashAdminRemovedOrgWideConnectorDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = DeviceApprovalsChangeDesktopPolicyDetails; + type Value = DashAdminRemovedOrgWideConnectorDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a DeviceApprovalsChangeDesktopPolicyDetails struct") + f.write_str("a DashAdminRemovedOrgWideConnectorDetails struct") } fn visit_map>(self, map: V) -> Result { - DeviceApprovalsChangeDesktopPolicyDetails::internal_deserialize(map) + DashAdminRemovedOrgWideConnectorDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("DeviceApprovalsChangeDesktopPolicyDetails", DEVICE_APPROVALS_CHANGE_DESKTOP_POLICY_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("DashAdminRemovedOrgWideConnectorDetails", DASH_ADMIN_REMOVED_ORG_WIDE_CONNECTOR_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for DeviceApprovalsChangeDesktopPolicyDetails { +impl ::serde::ser::Serialize for DashAdminRemovedOrgWideConnectorDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("DeviceApprovalsChangeDesktopPolicyDetails", 2)?; + let mut s = serializer.serialize_struct("DashAdminRemovedOrgWideConnectorDetails", 2)?; self.internal_serialize::(&mut s)?; s.end() } @@ -12198,30 +13852,30 @@ impl ::serde::ser::Serialize for DeviceApprovalsChangeDesktopPolicyDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct DeviceApprovalsChangeDesktopPolicyType { +pub struct DashAdminRemovedOrgWideConnectorType { pub description: String, } -impl DeviceApprovalsChangeDesktopPolicyType { +impl DashAdminRemovedOrgWideConnectorType { pub fn new(description: String) -> Self { - DeviceApprovalsChangeDesktopPolicyType { + DashAdminRemovedOrgWideConnectorType { description, } } } -const DEVICE_APPROVALS_CHANGE_DESKTOP_POLICY_TYPE_FIELDS: &[&str] = &["description"]; -impl DeviceApprovalsChangeDesktopPolicyType { +const DASH_ADMIN_REMOVED_ORG_WIDE_CONNECTOR_TYPE_FIELDS: &[&str] = &["description"]; +impl DashAdminRemovedOrgWideConnectorType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -12242,7 +13896,7 @@ impl DeviceApprovalsChangeDesktopPolicyType { if optional && nothing { return Ok(None); } - let result = DeviceApprovalsChangeDesktopPolicyType { + let result = DashAdminRemovedOrgWideConnectorType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -12258,78 +13912,88 @@ impl DeviceApprovalsChangeDesktopPolicyType { } } -impl<'de> ::serde::de::Deserialize<'de> for DeviceApprovalsChangeDesktopPolicyType { +impl<'de> ::serde::de::Deserialize<'de> for DashAdminRemovedOrgWideConnectorType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = DeviceApprovalsChangeDesktopPolicyType; + type Value = DashAdminRemovedOrgWideConnectorType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a DeviceApprovalsChangeDesktopPolicyType struct") + f.write_str("a DashAdminRemovedOrgWideConnectorType struct") } fn visit_map>(self, map: V) -> Result { - DeviceApprovalsChangeDesktopPolicyType::internal_deserialize(map) + DashAdminRemovedOrgWideConnectorType::internal_deserialize(map) } } - deserializer.deserialize_struct("DeviceApprovalsChangeDesktopPolicyType", DEVICE_APPROVALS_CHANGE_DESKTOP_POLICY_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("DashAdminRemovedOrgWideConnectorType", DASH_ADMIN_REMOVED_ORG_WIDE_CONNECTOR_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for DeviceApprovalsChangeDesktopPolicyType { +impl ::serde::ser::Serialize for DashAdminRemovedOrgWideConnectorType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("DeviceApprovalsChangeDesktopPolicyType", 1)?; + let mut s = serializer.serialize_struct("DashAdminRemovedOrgWideConnectorType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Set/removed limit on number of mobile devices member can link to team Dropbox account. -#[derive(Debug, Clone, PartialEq, Eq, Default)] +/// Archived a stack. +#[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct DeviceApprovalsChangeMobilePolicyDetails { - /// New mobile device approvals policy. Might be missing due to historical data gap. - pub new_value: Option, - /// Previous mobile device approvals policy. Might be missing due to historical data gap. - pub previous_value: Option, +pub struct DashArchivedStackDetails { + /// The name of the stack. + pub stack_name: String, + /// The type of stack backend. + pub stack_type: Option, } -impl DeviceApprovalsChangeMobilePolicyDetails { - pub fn with_new_value(mut self, value: DeviceApprovalsPolicy) -> Self { - self.new_value = Some(value); - self +impl DashArchivedStackDetails { + pub fn new(stack_name: String) -> Self { + DashArchivedStackDetails { + stack_name, + stack_type: None, + } } - pub fn with_previous_value(mut self, value: DeviceApprovalsPolicy) -> Self { - self.previous_value = Some(value); + pub fn with_stack_type(mut self, value: DashStackType) -> Self { + self.stack_type = Some(value); self } } -const DEVICE_APPROVALS_CHANGE_MOBILE_POLICY_DETAILS_FIELDS: &[&str] = &["new_value", - "previous_value"]; -impl DeviceApprovalsChangeMobilePolicyDetails { - // no _opt deserializer +const DASH_ARCHIVED_STACK_DETAILS_FIELDS: &[&str] = &["stack_name", + "stack_type"]; +impl DashArchivedStackDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - ) -> Result { - let mut field_new_value = None; - let mut field_previous_value = None; + optional: bool, + ) -> Result, V::Error> { + let mut field_stack_name = None; + let mut field_stack_type = None; + let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { + nothing = false; match key { - "new_value" => { - if field_new_value.is_some() { - return Err(::serde::de::Error::duplicate_field("new_value")); + "stack_name" => { + if field_stack_name.is_some() { + return Err(::serde::de::Error::duplicate_field("stack_name")); } - field_new_value = Some(map.next_value()?); + field_stack_name = Some(map.next_value()?); } - "previous_value" => { - if field_previous_value.is_some() { - return Err(::serde::de::Error::duplicate_field("previous_value")); + "stack_type" => { + if field_stack_type.is_some() { + return Err(::serde::de::Error::duplicate_field("stack_type")); } - field_previous_value = Some(map.next_value()?); + field_stack_type = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -12337,11 +14001,14 @@ impl DeviceApprovalsChangeMobilePolicyDetails { } } } - let result = DeviceApprovalsChangeMobilePolicyDetails { - new_value: field_new_value.and_then(Option::flatten), - previous_value: field_previous_value.and_then(Option::flatten), + if optional && nothing { + return Ok(None); + } + let result = DashArchivedStackDetails { + stack_name: field_stack_name.ok_or_else(|| ::serde::de::Error::missing_field("stack_name"))?, + stack_type: field_stack_type.and_then(Option::flatten), }; - Ok(result) + Ok(Some(result)) } pub(crate) fn internal_serialize( @@ -12349,39 +14016,37 @@ impl DeviceApprovalsChangeMobilePolicyDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - if let Some(val) = &self.new_value { - s.serialize_field("new_value", val)?; - } - if let Some(val) = &self.previous_value { - s.serialize_field("previous_value", val)?; + s.serialize_field("stack_name", &self.stack_name)?; + if let Some(val) = &self.stack_type { + s.serialize_field("stack_type", val)?; } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for DeviceApprovalsChangeMobilePolicyDetails { +impl<'de> ::serde::de::Deserialize<'de> for DashArchivedStackDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = DeviceApprovalsChangeMobilePolicyDetails; + type Value = DashArchivedStackDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a DeviceApprovalsChangeMobilePolicyDetails struct") + f.write_str("a DashArchivedStackDetails struct") } fn visit_map>(self, map: V) -> Result { - DeviceApprovalsChangeMobilePolicyDetails::internal_deserialize(map) + DashArchivedStackDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("DeviceApprovalsChangeMobilePolicyDetails", DEVICE_APPROVALS_CHANGE_MOBILE_POLICY_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("DashArchivedStackDetails", DASH_ARCHIVED_STACK_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for DeviceApprovalsChangeMobilePolicyDetails { +impl ::serde::ser::Serialize for DashArchivedStackDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("DeviceApprovalsChangeMobilePolicyDetails", 2)?; + let mut s = serializer.serialize_struct("DashArchivedStackDetails", 2)?; self.internal_serialize::(&mut s)?; s.end() } @@ -12389,30 +14054,30 @@ impl ::serde::ser::Serialize for DeviceApprovalsChangeMobilePolicyDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct DeviceApprovalsChangeMobilePolicyType { +pub struct DashArchivedStackType { pub description: String, } -impl DeviceApprovalsChangeMobilePolicyType { +impl DashArchivedStackType { pub fn new(description: String) -> Self { - DeviceApprovalsChangeMobilePolicyType { + DashArchivedStackType { description, } } } -const DEVICE_APPROVALS_CHANGE_MOBILE_POLICY_TYPE_FIELDS: &[&str] = &["description"]; -impl DeviceApprovalsChangeMobilePolicyType { +const DASH_ARCHIVED_STACK_TYPE_FIELDS: &[&str] = &["description"]; +impl DashArchivedStackType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -12433,7 +14098,7 @@ impl DeviceApprovalsChangeMobilePolicyType { if optional && nothing { return Ok(None); } - let result = DeviceApprovalsChangeMobilePolicyType { + let result = DashArchivedStackType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -12449,81 +14114,88 @@ impl DeviceApprovalsChangeMobilePolicyType { } } -impl<'de> ::serde::de::Deserialize<'de> for DeviceApprovalsChangeMobilePolicyType { +impl<'de> ::serde::de::Deserialize<'de> for DashArchivedStackType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = DeviceApprovalsChangeMobilePolicyType; + type Value = DashArchivedStackType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a DeviceApprovalsChangeMobilePolicyType struct") + f.write_str("a DashArchivedStackType struct") } fn visit_map>(self, map: V) -> Result { - DeviceApprovalsChangeMobilePolicyType::internal_deserialize(map) + DashArchivedStackType::internal_deserialize(map) } } - deserializer.deserialize_struct("DeviceApprovalsChangeMobilePolicyType", DEVICE_APPROVALS_CHANGE_MOBILE_POLICY_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("DashArchivedStackType", DASH_ARCHIVED_STACK_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for DeviceApprovalsChangeMobilePolicyType { +impl ::serde::ser::Serialize for DashArchivedStackType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("DeviceApprovalsChangeMobilePolicyType", 1)?; + let mut s = serializer.serialize_struct("DashArchivedStackType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Changed device approvals setting when member is over limit. -#[derive(Debug, Clone, PartialEq, Eq, Default)] +/// Changed the audience of a shared link to a stack. +#[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct DeviceApprovalsChangeOverageActionDetails { - /// New over the limits policy. Might be missing due to historical data gap. - pub new_value: Option, - /// Previous over the limit policy. Might be missing due to historical data gap. - pub previous_value: Option, +pub struct DashChangedAudienceOfSharedLinkToStackDetails { + /// The name of the stack. + pub stack_name: String, + /// The type of stack backend. + pub stack_type: Option, } -impl DeviceApprovalsChangeOverageActionDetails { - pub fn with_new_value(mut self, value: crate::types::team_policies::RolloutMethod) -> Self { - self.new_value = Some(value); - self +impl DashChangedAudienceOfSharedLinkToStackDetails { + pub fn new(stack_name: String) -> Self { + DashChangedAudienceOfSharedLinkToStackDetails { + stack_name, + stack_type: None, + } } - pub fn with_previous_value( - mut self, - value: crate::types::team_policies::RolloutMethod, - ) -> Self { - self.previous_value = Some(value); + pub fn with_stack_type(mut self, value: DashStackType) -> Self { + self.stack_type = Some(value); self } } -const DEVICE_APPROVALS_CHANGE_OVERAGE_ACTION_DETAILS_FIELDS: &[&str] = &["new_value", - "previous_value"]; -impl DeviceApprovalsChangeOverageActionDetails { - // no _opt deserializer +const DASH_CHANGED_AUDIENCE_OF_SHARED_LINK_TO_STACK_DETAILS_FIELDS: &[&str] = &["stack_name", + "stack_type"]; +impl DashChangedAudienceOfSharedLinkToStackDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - ) -> Result { - let mut field_new_value = None; - let mut field_previous_value = None; + optional: bool, + ) -> Result, V::Error> { + let mut field_stack_name = None; + let mut field_stack_type = None; + let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { + nothing = false; match key { - "new_value" => { - if field_new_value.is_some() { - return Err(::serde::de::Error::duplicate_field("new_value")); + "stack_name" => { + if field_stack_name.is_some() { + return Err(::serde::de::Error::duplicate_field("stack_name")); } - field_new_value = Some(map.next_value()?); + field_stack_name = Some(map.next_value()?); } - "previous_value" => { - if field_previous_value.is_some() { - return Err(::serde::de::Error::duplicate_field("previous_value")); + "stack_type" => { + if field_stack_type.is_some() { + return Err(::serde::de::Error::duplicate_field("stack_type")); } - field_previous_value = Some(map.next_value()?); + field_stack_type = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -12531,11 +14203,14 @@ impl DeviceApprovalsChangeOverageActionDetails { } } } - let result = DeviceApprovalsChangeOverageActionDetails { - new_value: field_new_value.and_then(Option::flatten), - previous_value: field_previous_value.and_then(Option::flatten), + if optional && nothing { + return Ok(None); + } + let result = DashChangedAudienceOfSharedLinkToStackDetails { + stack_name: field_stack_name.ok_or_else(|| ::serde::de::Error::missing_field("stack_name"))?, + stack_type: field_stack_type.and_then(Option::flatten), }; - Ok(result) + Ok(Some(result)) } pub(crate) fn internal_serialize( @@ -12543,39 +14218,37 @@ impl DeviceApprovalsChangeOverageActionDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - if let Some(val) = &self.new_value { - s.serialize_field("new_value", val)?; - } - if let Some(val) = &self.previous_value { - s.serialize_field("previous_value", val)?; + s.serialize_field("stack_name", &self.stack_name)?; + if let Some(val) = &self.stack_type { + s.serialize_field("stack_type", val)?; } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for DeviceApprovalsChangeOverageActionDetails { +impl<'de> ::serde::de::Deserialize<'de> for DashChangedAudienceOfSharedLinkToStackDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = DeviceApprovalsChangeOverageActionDetails; + type Value = DashChangedAudienceOfSharedLinkToStackDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a DeviceApprovalsChangeOverageActionDetails struct") + f.write_str("a DashChangedAudienceOfSharedLinkToStackDetails struct") } fn visit_map>(self, map: V) -> Result { - DeviceApprovalsChangeOverageActionDetails::internal_deserialize(map) + DashChangedAudienceOfSharedLinkToStackDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("DeviceApprovalsChangeOverageActionDetails", DEVICE_APPROVALS_CHANGE_OVERAGE_ACTION_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("DashChangedAudienceOfSharedLinkToStackDetails", DASH_CHANGED_AUDIENCE_OF_SHARED_LINK_TO_STACK_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for DeviceApprovalsChangeOverageActionDetails { +impl ::serde::ser::Serialize for DashChangedAudienceOfSharedLinkToStackDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("DeviceApprovalsChangeOverageActionDetails", 2)?; + let mut s = serializer.serialize_struct("DashChangedAudienceOfSharedLinkToStackDetails", 2)?; self.internal_serialize::(&mut s)?; s.end() } @@ -12583,30 +14256,30 @@ impl ::serde::ser::Serialize for DeviceApprovalsChangeOverageActionDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct DeviceApprovalsChangeOverageActionType { +pub struct DashChangedAudienceOfSharedLinkToStackType { pub description: String, } -impl DeviceApprovalsChangeOverageActionType { +impl DashChangedAudienceOfSharedLinkToStackType { pub fn new(description: String) -> Self { - DeviceApprovalsChangeOverageActionType { + DashChangedAudienceOfSharedLinkToStackType { description, } } } -const DEVICE_APPROVALS_CHANGE_OVERAGE_ACTION_TYPE_FIELDS: &[&str] = &["description"]; -impl DeviceApprovalsChangeOverageActionType { +const DASH_CHANGED_AUDIENCE_OF_SHARED_LINK_TO_STACK_TYPE_FIELDS: &[&str] = &["description"]; +impl DashChangedAudienceOfSharedLinkToStackType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -12627,7 +14300,7 @@ impl DeviceApprovalsChangeOverageActionType { if optional && nothing { return Ok(None); } - let result = DeviceApprovalsChangeOverageActionType { + let result = DashChangedAudienceOfSharedLinkToStackType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -12643,78 +14316,110 @@ impl DeviceApprovalsChangeOverageActionType { } } -impl<'de> ::serde::de::Deserialize<'de> for DeviceApprovalsChangeOverageActionType { +impl<'de> ::serde::de::Deserialize<'de> for DashChangedAudienceOfSharedLinkToStackType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = DeviceApprovalsChangeOverageActionType; + type Value = DashChangedAudienceOfSharedLinkToStackType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a DeviceApprovalsChangeOverageActionType struct") + f.write_str("a DashChangedAudienceOfSharedLinkToStackType struct") } fn visit_map>(self, map: V) -> Result { - DeviceApprovalsChangeOverageActionType::internal_deserialize(map) + DashChangedAudienceOfSharedLinkToStackType::internal_deserialize(map) } } - deserializer.deserialize_struct("DeviceApprovalsChangeOverageActionType", DEVICE_APPROVALS_CHANGE_OVERAGE_ACTION_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("DashChangedAudienceOfSharedLinkToStackType", DASH_CHANGED_AUDIENCE_OF_SHARED_LINK_TO_STACK_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for DeviceApprovalsChangeOverageActionType { +impl ::serde::ser::Serialize for DashChangedAudienceOfSharedLinkToStackType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("DeviceApprovalsChangeOverageActionType", 1)?; + let mut s = serializer.serialize_struct("DashChangedAudienceOfSharedLinkToStackType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Changed device approvals setting when member unlinks approved device. -#[derive(Debug, Clone, PartialEq, Eq, Default)] +/// Cloned stack. +#[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct DeviceApprovalsChangeUnlinkActionDetails { - /// New device unlink policy. Might be missing due to historical data gap. - pub new_value: Option, - /// Previous device unlink policy. Might be missing due to historical data gap. - pub previous_value: Option, +pub struct DashClonedStackDetails { + /// The name of the stack. + pub stack_name: String, + /// Email of the actor. + pub actor_email: String, + /// New cloned stack name. + pub new_cloned_stack_name: String, + /// The type of stack backend. + pub stack_type: Option, } -impl DeviceApprovalsChangeUnlinkActionDetails { - pub fn with_new_value(mut self, value: DeviceUnlinkPolicy) -> Self { - self.new_value = Some(value); - self +impl DashClonedStackDetails { + pub fn new(stack_name: String, actor_email: String, new_cloned_stack_name: String) -> Self { + DashClonedStackDetails { + stack_name, + actor_email, + new_cloned_stack_name, + stack_type: None, + } } - pub fn with_previous_value(mut self, value: DeviceUnlinkPolicy) -> Self { - self.previous_value = Some(value); + pub fn with_stack_type(mut self, value: DashStackType) -> Self { + self.stack_type = Some(value); self } } -const DEVICE_APPROVALS_CHANGE_UNLINK_ACTION_DETAILS_FIELDS: &[&str] = &["new_value", - "previous_value"]; -impl DeviceApprovalsChangeUnlinkActionDetails { - // no _opt deserializer +const DASH_CLONED_STACK_DETAILS_FIELDS: &[&str] = &["stack_name", + "actor_email", + "new_cloned_stack_name", + "stack_type"]; +impl DashClonedStackDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - ) -> Result { - let mut field_new_value = None; - let mut field_previous_value = None; + optional: bool, + ) -> Result, V::Error> { + let mut field_stack_name = None; + let mut field_actor_email = None; + let mut field_new_cloned_stack_name = None; + let mut field_stack_type = None; + let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { + nothing = false; match key { - "new_value" => { - if field_new_value.is_some() { - return Err(::serde::de::Error::duplicate_field("new_value")); + "stack_name" => { + if field_stack_name.is_some() { + return Err(::serde::de::Error::duplicate_field("stack_name")); } - field_new_value = Some(map.next_value()?); + field_stack_name = Some(map.next_value()?); } - "previous_value" => { - if field_previous_value.is_some() { - return Err(::serde::de::Error::duplicate_field("previous_value")); + "actor_email" => { + if field_actor_email.is_some() { + return Err(::serde::de::Error::duplicate_field("actor_email")); } - field_previous_value = Some(map.next_value()?); + field_actor_email = Some(map.next_value()?); + } + "new_cloned_stack_name" => { + if field_new_cloned_stack_name.is_some() { + return Err(::serde::de::Error::duplicate_field("new_cloned_stack_name")); + } + field_new_cloned_stack_name = Some(map.next_value()?); + } + "stack_type" => { + if field_stack_type.is_some() { + return Err(::serde::de::Error::duplicate_field("stack_type")); + } + field_stack_type = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -12722,11 +14427,16 @@ impl DeviceApprovalsChangeUnlinkActionDetails { } } } - let result = DeviceApprovalsChangeUnlinkActionDetails { - new_value: field_new_value.and_then(Option::flatten), - previous_value: field_previous_value.and_then(Option::flatten), + if optional && nothing { + return Ok(None); + } + let result = DashClonedStackDetails { + stack_name: field_stack_name.ok_or_else(|| ::serde::de::Error::missing_field("stack_name"))?, + actor_email: field_actor_email.ok_or_else(|| ::serde::de::Error::missing_field("actor_email"))?, + new_cloned_stack_name: field_new_cloned_stack_name.ok_or_else(|| ::serde::de::Error::missing_field("new_cloned_stack_name"))?, + stack_type: field_stack_type.and_then(Option::flatten), }; - Ok(result) + Ok(Some(result)) } pub(crate) fn internal_serialize( @@ -12734,39 +14444,39 @@ impl DeviceApprovalsChangeUnlinkActionDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - if let Some(val) = &self.new_value { - s.serialize_field("new_value", val)?; - } - if let Some(val) = &self.previous_value { - s.serialize_field("previous_value", val)?; + s.serialize_field("stack_name", &self.stack_name)?; + s.serialize_field("actor_email", &self.actor_email)?; + s.serialize_field("new_cloned_stack_name", &self.new_cloned_stack_name)?; + if let Some(val) = &self.stack_type { + s.serialize_field("stack_type", val)?; } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for DeviceApprovalsChangeUnlinkActionDetails { +impl<'de> ::serde::de::Deserialize<'de> for DashClonedStackDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = DeviceApprovalsChangeUnlinkActionDetails; + type Value = DashClonedStackDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a DeviceApprovalsChangeUnlinkActionDetails struct") + f.write_str("a DashClonedStackDetails struct") } fn visit_map>(self, map: V) -> Result { - DeviceApprovalsChangeUnlinkActionDetails::internal_deserialize(map) + DashClonedStackDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("DeviceApprovalsChangeUnlinkActionDetails", DEVICE_APPROVALS_CHANGE_UNLINK_ACTION_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("DashClonedStackDetails", DASH_CLONED_STACK_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for DeviceApprovalsChangeUnlinkActionDetails { +impl ::serde::ser::Serialize for DashClonedStackDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("DeviceApprovalsChangeUnlinkActionDetails", 2)?; + let mut s = serializer.serialize_struct("DashClonedStackDetails", 4)?; self.internal_serialize::(&mut s)?; s.end() } @@ -12774,30 +14484,30 @@ impl ::serde::ser::Serialize for DeviceApprovalsChangeUnlinkActionDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct DeviceApprovalsChangeUnlinkActionType { +pub struct DashClonedStackType { pub description: String, } -impl DeviceApprovalsChangeUnlinkActionType { +impl DashClonedStackType { pub fn new(description: String) -> Self { - DeviceApprovalsChangeUnlinkActionType { + DashClonedStackType { description, } } } -const DEVICE_APPROVALS_CHANGE_UNLINK_ACTION_TYPE_FIELDS: &[&str] = &["description"]; -impl DeviceApprovalsChangeUnlinkActionType { +const DASH_CLONED_STACK_TYPE_FIELDS: &[&str] = &["description"]; +impl DashClonedStackType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -12818,7 +14528,7 @@ impl DeviceApprovalsChangeUnlinkActionType { if optional && nothing { return Ok(None); } - let result = DeviceApprovalsChangeUnlinkActionType { + let result = DashClonedStackType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -12834,53 +14544,54 @@ impl DeviceApprovalsChangeUnlinkActionType { } } -impl<'de> ::serde::de::Deserialize<'de> for DeviceApprovalsChangeUnlinkActionType { +impl<'de> ::serde::de::Deserialize<'de> for DashClonedStackType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = DeviceApprovalsChangeUnlinkActionType; + type Value = DashClonedStackType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a DeviceApprovalsChangeUnlinkActionType struct") + f.write_str("a DashClonedStackType struct") } fn visit_map>(self, map: V) -> Result { - DeviceApprovalsChangeUnlinkActionType::internal_deserialize(map) + DashClonedStackType::internal_deserialize(map) } } - deserializer.deserialize_struct("DeviceApprovalsChangeUnlinkActionType", DEVICE_APPROVALS_CHANGE_UNLINK_ACTION_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("DashClonedStackType", DASH_CLONED_STACK_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for DeviceApprovalsChangeUnlinkActionType { +impl ::serde::ser::Serialize for DashClonedStackType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("DeviceApprovalsChangeUnlinkActionType", 1)?; + let mut s = serializer.serialize_struct("DashClonedStackType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } +/// The status of the Connector #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // variants may be added in the future -pub enum DeviceApprovalsPolicy { - Limited, - Unlimited, +pub enum DashConnectorStatus { + Fail, + Success, /// Catch-all used for unrecognized values returned from the server. Encountering this value /// typically indicates that this SDK version is out of date. Other, } -impl<'de> ::serde::de::Deserialize<'de> for DeviceApprovalsPolicy { +impl<'de> ::serde::de::Deserialize<'de> for DashConnectorStatus { fn deserialize>(deserializer: D) -> Result { // union deserializer use serde::de::{self, MapAccess, Visitor}; struct EnumVisitor; impl<'de> Visitor<'de> for EnumVisitor { - type Value = DeviceApprovalsPolicy; + type Value = DashConnectorStatus; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a DeviceApprovalsPolicy structure") + f.write_str("a DashConnectorStatus structure") } fn visit_map>(self, mut map: V) -> Result { let tag: &str = match map.next_key()? { @@ -12888,113 +14599,194 @@ impl<'de> ::serde::de::Deserialize<'de> for DeviceApprovalsPolicy { _ => return Err(de::Error::missing_field(".tag")) }; let value = match tag { - "limited" => DeviceApprovalsPolicy::Limited, - "unlimited" => DeviceApprovalsPolicy::Unlimited, - _ => DeviceApprovalsPolicy::Other, + "fail" => DashConnectorStatus::Fail, + "success" => DashConnectorStatus::Success, + _ => DashConnectorStatus::Other, }; crate::eat_json_fields(&mut map)?; Ok(value) } } - const VARIANTS: &[&str] = &["limited", - "unlimited", + const VARIANTS: &[&str] = &["fail", + "success", "other"]; - deserializer.deserialize_struct("DeviceApprovalsPolicy", VARIANTS, EnumVisitor) + deserializer.deserialize_struct("DashConnectorStatus", VARIANTS, EnumVisitor) } } -impl ::serde::ser::Serialize for DeviceApprovalsPolicy { +impl ::serde::ser::Serialize for DashConnectorStatus { fn serialize(&self, serializer: S) -> Result { // union serializer use serde::ser::SerializeStruct; match self { - DeviceApprovalsPolicy::Limited => { + DashConnectorStatus::Fail => { // unit - let mut s = serializer.serialize_struct("DeviceApprovalsPolicy", 1)?; - s.serialize_field(".tag", "limited")?; + let mut s = serializer.serialize_struct("DashConnectorStatus", 1)?; + s.serialize_field(".tag", "fail")?; s.end() } - DeviceApprovalsPolicy::Unlimited => { + DashConnectorStatus::Success => { // unit - let mut s = serializer.serialize_struct("DeviceApprovalsPolicy", 1)?; - s.serialize_field(".tag", "unlimited")?; + let mut s = serializer.serialize_struct("DashConnectorStatus", 1)?; + s.serialize_field(".tag", "success")?; s.end() } - DeviceApprovalsPolicy::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) + DashConnectorStatus::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) } } } -/// Removed members from device approvals exception list. -#[derive(Debug, Clone, PartialEq, Eq, Default)] +/// Called a tool on a connector. +#[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct DeviceApprovalsRemoveExceptionDetails { +pub struct DashConnectorToolsCallDetails { + /// The name of the connector. + pub connector_name: String, + /// The name of the tool that was called. + pub tool_name: String, + /// The surface from which the tool was called. + pub surface: Option, } -const DEVICE_APPROVALS_REMOVE_EXCEPTION_DETAILS_FIELDS: &[&str] = &[]; -impl DeviceApprovalsRemoveExceptionDetails { - // no _opt deserializer +impl DashConnectorToolsCallDetails { + pub fn new(connector_name: String, tool_name: String) -> Self { + DashConnectorToolsCallDetails { + connector_name, + tool_name, + surface: None, + } + } + + pub fn with_surface(mut self, value: String) -> Self { + self.surface = Some(value); + self + } +} + +const DASH_CONNECTOR_TOOLS_CALL_DETAILS_FIELDS: &[&str] = &["connector_name", + "tool_name", + "surface"]; +impl DashConnectorToolsCallDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - ) -> Result { - // ignore any fields found; none are presently recognized - crate::eat_json_fields(&mut map)?; - Ok(DeviceApprovalsRemoveExceptionDetails {}) + optional: bool, + ) -> Result, V::Error> { + let mut field_connector_name = None; + let mut field_tool_name = None; + let mut field_surface = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "connector_name" => { + if field_connector_name.is_some() { + return Err(::serde::de::Error::duplicate_field("connector_name")); + } + field_connector_name = Some(map.next_value()?); + } + "tool_name" => { + if field_tool_name.is_some() { + return Err(::serde::de::Error::duplicate_field("tool_name")); + } + field_tool_name = Some(map.next_value()?); + } + "surface" => { + if field_surface.is_some() { + return Err(::serde::de::Error::duplicate_field("surface")); + } + field_surface = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } + } + } + if optional && nothing { + return Ok(None); + } + let result = DashConnectorToolsCallDetails { + connector_name: field_connector_name.ok_or_else(|| ::serde::de::Error::missing_field("connector_name"))?, + tool_name: field_tool_name.ok_or_else(|| ::serde::de::Error::missing_field("tool_name"))?, + surface: field_surface.and_then(Option::flatten), + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("connector_name", &self.connector_name)?; + s.serialize_field("tool_name", &self.tool_name)?; + if let Some(val) = &self.surface { + s.serialize_field("surface", val)?; + } + Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for DeviceApprovalsRemoveExceptionDetails { +impl<'de> ::serde::de::Deserialize<'de> for DashConnectorToolsCallDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = DeviceApprovalsRemoveExceptionDetails; + type Value = DashConnectorToolsCallDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a DeviceApprovalsRemoveExceptionDetails struct") + f.write_str("a DashConnectorToolsCallDetails struct") } fn visit_map>(self, map: V) -> Result { - DeviceApprovalsRemoveExceptionDetails::internal_deserialize(map) + DashConnectorToolsCallDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("DeviceApprovalsRemoveExceptionDetails", DEVICE_APPROVALS_REMOVE_EXCEPTION_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("DashConnectorToolsCallDetails", DASH_CONNECTOR_TOOLS_CALL_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for DeviceApprovalsRemoveExceptionDetails { +impl ::serde::ser::Serialize for DashConnectorToolsCallDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - serializer.serialize_struct("DeviceApprovalsRemoveExceptionDetails", 0)?.end() + let mut s = serializer.serialize_struct("DashConnectorToolsCallDetails", 3)?; + self.internal_serialize::(&mut s)?; + s.end() } } #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct DeviceApprovalsRemoveExceptionType { +pub struct DashConnectorToolsCallType { pub description: String, } -impl DeviceApprovalsRemoveExceptionType { +impl DashConnectorToolsCallType { pub fn new(description: String) -> Self { - DeviceApprovalsRemoveExceptionType { + DashConnectorToolsCallType { description, } } } -const DEVICE_APPROVALS_REMOVE_EXCEPTION_TYPE_FIELDS: &[&str] = &["description"]; -impl DeviceApprovalsRemoveExceptionType { +const DASH_CONNECTOR_TOOLS_CALL_TYPE_FIELDS: &[&str] = &["description"]; +impl DashConnectorToolsCallType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -13015,7 +14807,7 @@ impl DeviceApprovalsRemoveExceptionType { if optional && nothing { return Ok(None); } - let result = DeviceApprovalsRemoveExceptionType { + let result = DashConnectorToolsCallType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -13031,72 +14823,88 @@ impl DeviceApprovalsRemoveExceptionType { } } -impl<'de> ::serde::de::Deserialize<'de> for DeviceApprovalsRemoveExceptionType { +impl<'de> ::serde::de::Deserialize<'de> for DashConnectorToolsCallType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = DeviceApprovalsRemoveExceptionType; + type Value = DashConnectorToolsCallType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a DeviceApprovalsRemoveExceptionType struct") + f.write_str("a DashConnectorToolsCallType struct") } fn visit_map>(self, map: V) -> Result { - DeviceApprovalsRemoveExceptionType::internal_deserialize(map) + DashConnectorToolsCallType::internal_deserialize(map) } } - deserializer.deserialize_struct("DeviceApprovalsRemoveExceptionType", DEVICE_APPROVALS_REMOVE_EXCEPTION_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("DashConnectorToolsCallType", DASH_CONNECTOR_TOOLS_CALL_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for DeviceApprovalsRemoveExceptionType { +impl ::serde::ser::Serialize for DashConnectorToolsCallType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("DeviceApprovalsRemoveExceptionType", 1)?; + let mut s = serializer.serialize_struct("DashConnectorToolsCallType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Changed IP address associated with active desktop session. +/// Created a stack. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct DeviceChangeIpDesktopDetails { - /// Device's session logged information. - pub device_session_info: DeviceSessionLogInfo, +pub struct DashCreatedStackDetails { + /// The name of the stack. + pub stack_name: String, + /// The type of stack backend. + pub stack_type: Option, } -impl DeviceChangeIpDesktopDetails { - pub fn new(device_session_info: DeviceSessionLogInfo) -> Self { - DeviceChangeIpDesktopDetails { - device_session_info, +impl DashCreatedStackDetails { + pub fn new(stack_name: String) -> Self { + DashCreatedStackDetails { + stack_name, + stack_type: None, } } + + pub fn with_stack_type(mut self, value: DashStackType) -> Self { + self.stack_type = Some(value); + self + } } -const DEVICE_CHANGE_IP_DESKTOP_DETAILS_FIELDS: &[&str] = &["device_session_info"]; -impl DeviceChangeIpDesktopDetails { +const DASH_CREATED_STACK_DETAILS_FIELDS: &[&str] = &["stack_name", + "stack_type"]; +impl DashCreatedStackDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_device_session_info = None; + ) -> Result, V::Error> { + let mut field_stack_name = None; + let mut field_stack_type = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "device_session_info" => { - if field_device_session_info.is_some() { - return Err(::serde::de::Error::duplicate_field("device_session_info")); + "stack_name" => { + if field_stack_name.is_some() { + return Err(::serde::de::Error::duplicate_field("stack_name")); } - field_device_session_info = Some(map.next_value()?); + field_stack_name = Some(map.next_value()?); + } + "stack_type" => { + if field_stack_type.is_some() { + return Err(::serde::de::Error::duplicate_field("stack_type")); + } + field_stack_type = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -13107,8 +14915,9 @@ impl DeviceChangeIpDesktopDetails { if optional && nothing { return Ok(None); } - let result = DeviceChangeIpDesktopDetails { - device_session_info: field_device_session_info.ok_or_else(|| ::serde::de::Error::missing_field("device_session_info"))?, + let result = DashCreatedStackDetails { + stack_name: field_stack_name.ok_or_else(|| ::serde::de::Error::missing_field("stack_name"))?, + stack_type: field_stack_type.and_then(Option::flatten), }; Ok(Some(result)) } @@ -13118,34 +14927,37 @@ impl DeviceChangeIpDesktopDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("device_session_info", &self.device_session_info)?; + s.serialize_field("stack_name", &self.stack_name)?; + if let Some(val) = &self.stack_type { + s.serialize_field("stack_type", val)?; + } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for DeviceChangeIpDesktopDetails { +impl<'de> ::serde::de::Deserialize<'de> for DashCreatedStackDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = DeviceChangeIpDesktopDetails; + type Value = DashCreatedStackDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a DeviceChangeIpDesktopDetails struct") + f.write_str("a DashCreatedStackDetails struct") } fn visit_map>(self, map: V) -> Result { - DeviceChangeIpDesktopDetails::internal_deserialize(map) + DashCreatedStackDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("DeviceChangeIpDesktopDetails", DEVICE_CHANGE_IP_DESKTOP_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("DashCreatedStackDetails", DASH_CREATED_STACK_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for DeviceChangeIpDesktopDetails { +impl ::serde::ser::Serialize for DashCreatedStackDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("DeviceChangeIpDesktopDetails", 1)?; + let mut s = serializer.serialize_struct("DashCreatedStackDetails", 2)?; self.internal_serialize::(&mut s)?; s.end() } @@ -13153,30 +14965,30 @@ impl ::serde::ser::Serialize for DeviceChangeIpDesktopDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct DeviceChangeIpDesktopType { +pub struct DashCreatedStackType { pub description: String, } -impl DeviceChangeIpDesktopType { +impl DashCreatedStackType { pub fn new(description: String) -> Self { - DeviceChangeIpDesktopType { + DashCreatedStackType { description, } } } -const DEVICE_CHANGE_IP_DESKTOP_TYPE_FIELDS: &[&str] = &["description"]; -impl DeviceChangeIpDesktopType { +const DASH_CREATED_STACK_TYPE_FIELDS: &[&str] = &["description"]; +impl DashCreatedStackType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -13197,7 +15009,7 @@ impl DeviceChangeIpDesktopType { if optional && nothing { return Ok(None); } - let result = DeviceChangeIpDesktopType { + let result = DashCreatedStackType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -13213,63 +15025,99 @@ impl DeviceChangeIpDesktopType { } } -impl<'de> ::serde::de::Deserialize<'de> for DeviceChangeIpDesktopType { +impl<'de> ::serde::de::Deserialize<'de> for DashCreatedStackType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = DeviceChangeIpDesktopType; + type Value = DashCreatedStackType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a DeviceChangeIpDesktopType struct") + f.write_str("a DashCreatedStackType struct") } fn visit_map>(self, map: V) -> Result { - DeviceChangeIpDesktopType::internal_deserialize(map) + DashCreatedStackType::internal_deserialize(map) } } - deserializer.deserialize_struct("DeviceChangeIpDesktopType", DEVICE_CHANGE_IP_DESKTOP_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("DashCreatedStackType", DASH_CREATED_STACK_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for DeviceChangeIpDesktopType { +impl ::serde::ser::Serialize for DashCreatedStackType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("DeviceChangeIpDesktopType", 1)?; + let mut s = serializer.serialize_struct("DashCreatedStackType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Changed IP address associated with active mobile session. -#[derive(Debug, Clone, PartialEq, Eq, Default)] +/// Deleted a comment from a stack. +#[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct DeviceChangeIpMobileDetails { - /// Device's session logged information. - pub device_session_info: Option, +pub struct DashDeletedCommentFromStackDetails { + /// The name of the stack where the comment exists. + pub stack_name: String, + /// The name of the stack item that the comment is tied to. + pub stack_item_name: String, + /// The type of stack backend. + pub stack_type: Option, } -impl DeviceChangeIpMobileDetails { - pub fn with_device_session_info(mut self, value: DeviceSessionLogInfo) -> Self { - self.device_session_info = Some(value); +impl DashDeletedCommentFromStackDetails { + pub fn new(stack_name: String, stack_item_name: String) -> Self { + DashDeletedCommentFromStackDetails { + stack_name, + stack_item_name, + stack_type: None, + } + } + + pub fn with_stack_type(mut self, value: DashStackType) -> Self { + self.stack_type = Some(value); self } } -const DEVICE_CHANGE_IP_MOBILE_DETAILS_FIELDS: &[&str] = &["device_session_info"]; -impl DeviceChangeIpMobileDetails { - // no _opt deserializer +const DASH_DELETED_COMMENT_FROM_STACK_DETAILS_FIELDS: &[&str] = &["stack_name", + "stack_item_name", + "stack_type"]; +impl DashDeletedCommentFromStackDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - ) -> Result { - let mut field_device_session_info = None; + optional: bool, + ) -> Result, V::Error> { + let mut field_stack_name = None; + let mut field_stack_item_name = None; + let mut field_stack_type = None; + let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { + nothing = false; match key { - "device_session_info" => { - if field_device_session_info.is_some() { - return Err(::serde::de::Error::duplicate_field("device_session_info")); + "stack_name" => { + if field_stack_name.is_some() { + return Err(::serde::de::Error::duplicate_field("stack_name")); } - field_device_session_info = Some(map.next_value()?); + field_stack_name = Some(map.next_value()?); + } + "stack_item_name" => { + if field_stack_item_name.is_some() { + return Err(::serde::de::Error::duplicate_field("stack_item_name")); + } + field_stack_item_name = Some(map.next_value()?); + } + "stack_type" => { + if field_stack_type.is_some() { + return Err(::serde::de::Error::duplicate_field("stack_type")); + } + field_stack_type = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -13277,10 +15125,15 @@ impl DeviceChangeIpMobileDetails { } } } - let result = DeviceChangeIpMobileDetails { - device_session_info: field_device_session_info.and_then(Option::flatten), + if optional && nothing { + return Ok(None); + } + let result = DashDeletedCommentFromStackDetails { + stack_name: field_stack_name.ok_or_else(|| ::serde::de::Error::missing_field("stack_name"))?, + stack_item_name: field_stack_item_name.ok_or_else(|| ::serde::de::Error::missing_field("stack_item_name"))?, + stack_type: field_stack_type.and_then(Option::flatten), }; - Ok(result) + Ok(Some(result)) } pub(crate) fn internal_serialize( @@ -13288,36 +15141,38 @@ impl DeviceChangeIpMobileDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - if let Some(val) = &self.device_session_info { - s.serialize_field("device_session_info", val)?; + s.serialize_field("stack_name", &self.stack_name)?; + s.serialize_field("stack_item_name", &self.stack_item_name)?; + if let Some(val) = &self.stack_type { + s.serialize_field("stack_type", val)?; } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for DeviceChangeIpMobileDetails { +impl<'de> ::serde::de::Deserialize<'de> for DashDeletedCommentFromStackDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = DeviceChangeIpMobileDetails; + type Value = DashDeletedCommentFromStackDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a DeviceChangeIpMobileDetails struct") + f.write_str("a DashDeletedCommentFromStackDetails struct") } fn visit_map>(self, map: V) -> Result { - DeviceChangeIpMobileDetails::internal_deserialize(map) + DashDeletedCommentFromStackDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("DeviceChangeIpMobileDetails", DEVICE_CHANGE_IP_MOBILE_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("DashDeletedCommentFromStackDetails", DASH_DELETED_COMMENT_FROM_STACK_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for DeviceChangeIpMobileDetails { +impl ::serde::ser::Serialize for DashDeletedCommentFromStackDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("DeviceChangeIpMobileDetails", 1)?; + let mut s = serializer.serialize_struct("DashDeletedCommentFromStackDetails", 3)?; self.internal_serialize::(&mut s)?; s.end() } @@ -13325,30 +15180,30 @@ impl ::serde::ser::Serialize for DeviceChangeIpMobileDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct DeviceChangeIpMobileType { +pub struct DashDeletedCommentFromStackType { pub description: String, } -impl DeviceChangeIpMobileType { +impl DashDeletedCommentFromStackType { pub fn new(description: String) -> Self { - DeviceChangeIpMobileType { + DashDeletedCommentFromStackType { description, } } } -const DEVICE_CHANGE_IP_MOBILE_TYPE_FIELDS: &[&str] = &["description"]; -impl DeviceChangeIpMobileType { +const DASH_DELETED_COMMENT_FROM_STACK_TYPE_FIELDS: &[&str] = &["description"]; +impl DashDeletedCommentFromStackType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -13369,7 +15224,7 @@ impl DeviceChangeIpMobileType { if optional && nothing { return Ok(None); } - let result = DeviceChangeIpMobileType { + let result = DashDeletedCommentFromStackType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -13385,72 +15240,88 @@ impl DeviceChangeIpMobileType { } } -impl<'de> ::serde::de::Deserialize<'de> for DeviceChangeIpMobileType { +impl<'de> ::serde::de::Deserialize<'de> for DashDeletedCommentFromStackType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = DeviceChangeIpMobileType; + type Value = DashDeletedCommentFromStackType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a DeviceChangeIpMobileType struct") + f.write_str("a DashDeletedCommentFromStackType struct") } fn visit_map>(self, map: V) -> Result { - DeviceChangeIpMobileType::internal_deserialize(map) + DashDeletedCommentFromStackType::internal_deserialize(map) } } - deserializer.deserialize_struct("DeviceChangeIpMobileType", DEVICE_CHANGE_IP_MOBILE_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("DashDeletedCommentFromStackType", DASH_DELETED_COMMENT_FROM_STACK_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for DeviceChangeIpMobileType { +impl ::serde::ser::Serialize for DashDeletedCommentFromStackType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("DeviceChangeIpMobileType", 1)?; + let mut s = serializer.serialize_struct("DashDeletedCommentFromStackType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Changed IP address associated with active web session. +/// Deleted a stack. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct DeviceChangeIpWebDetails { - /// Web browser name. - pub user_agent: String, +pub struct DashDeletedStackDetails { + /// The name of the stack. + pub stack_name: String, + /// The type of stack backend. + pub stack_type: Option, } -impl DeviceChangeIpWebDetails { - pub fn new(user_agent: String) -> Self { - DeviceChangeIpWebDetails { - user_agent, +impl DashDeletedStackDetails { + pub fn new(stack_name: String) -> Self { + DashDeletedStackDetails { + stack_name, + stack_type: None, } } + + pub fn with_stack_type(mut self, value: DashStackType) -> Self { + self.stack_type = Some(value); + self + } } -const DEVICE_CHANGE_IP_WEB_DETAILS_FIELDS: &[&str] = &["user_agent"]; -impl DeviceChangeIpWebDetails { +const DASH_DELETED_STACK_DETAILS_FIELDS: &[&str] = &["stack_name", + "stack_type"]; +impl DashDeletedStackDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_user_agent = None; + ) -> Result, V::Error> { + let mut field_stack_name = None; + let mut field_stack_type = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "user_agent" => { - if field_user_agent.is_some() { - return Err(::serde::de::Error::duplicate_field("user_agent")); + "stack_name" => { + if field_stack_name.is_some() { + return Err(::serde::de::Error::duplicate_field("stack_name")); } - field_user_agent = Some(map.next_value()?); + field_stack_name = Some(map.next_value()?); + } + "stack_type" => { + if field_stack_type.is_some() { + return Err(::serde::de::Error::duplicate_field("stack_type")); + } + field_stack_type = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -13461,8 +15332,9 @@ impl DeviceChangeIpWebDetails { if optional && nothing { return Ok(None); } - let result = DeviceChangeIpWebDetails { - user_agent: field_user_agent.ok_or_else(|| ::serde::de::Error::missing_field("user_agent"))?, + let result = DashDeletedStackDetails { + stack_name: field_stack_name.ok_or_else(|| ::serde::de::Error::missing_field("stack_name"))?, + stack_type: field_stack_type.and_then(Option::flatten), }; Ok(Some(result)) } @@ -13472,34 +15344,37 @@ impl DeviceChangeIpWebDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("user_agent", &self.user_agent)?; + s.serialize_field("stack_name", &self.stack_name)?; + if let Some(val) = &self.stack_type { + s.serialize_field("stack_type", val)?; + } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for DeviceChangeIpWebDetails { +impl<'de> ::serde::de::Deserialize<'de> for DashDeletedStackDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = DeviceChangeIpWebDetails; + type Value = DashDeletedStackDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a DeviceChangeIpWebDetails struct") + f.write_str("a DashDeletedStackDetails struct") } fn visit_map>(self, map: V) -> Result { - DeviceChangeIpWebDetails::internal_deserialize(map) + DashDeletedStackDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("DeviceChangeIpWebDetails", DEVICE_CHANGE_IP_WEB_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("DashDeletedStackDetails", DASH_DELETED_STACK_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for DeviceChangeIpWebDetails { +impl ::serde::ser::Serialize for DashDeletedStackDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("DeviceChangeIpWebDetails", 1)?; + let mut s = serializer.serialize_struct("DashDeletedStackDetails", 2)?; self.internal_serialize::(&mut s)?; s.end() } @@ -13507,30 +15382,30 @@ impl ::serde::ser::Serialize for DeviceChangeIpWebDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct DeviceChangeIpWebType { +pub struct DashDeletedStackType { pub description: String, } -impl DeviceChangeIpWebType { +impl DashDeletedStackType { pub fn new(description: String) -> Self { - DeviceChangeIpWebType { + DashDeletedStackType { description, } } } -const DEVICE_CHANGE_IP_WEB_TYPE_FIELDS: &[&str] = &["description"]; -impl DeviceChangeIpWebType { +const DASH_DELETED_STACK_TYPE_FIELDS: &[&str] = &["description"]; +impl DashDeletedStackType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -13551,7 +15426,7 @@ impl DeviceChangeIpWebType { if optional && nothing { return Ok(None); } - let result = DeviceChangeIpWebType { + let result = DashDeletedStackType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -13567,104 +15442,110 @@ impl DeviceChangeIpWebType { } } -impl<'de> ::serde::de::Deserialize<'de> for DeviceChangeIpWebType { +impl<'de> ::serde::de::Deserialize<'de> for DashDeletedStackType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = DeviceChangeIpWebType; + type Value = DashDeletedStackType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a DeviceChangeIpWebType struct") + f.write_str("a DashDeletedStackType struct") } fn visit_map>(self, map: V) -> Result { - DeviceChangeIpWebType::internal_deserialize(map) + DashDeletedStackType::internal_deserialize(map) } } - deserializer.deserialize_struct("DeviceChangeIpWebType", DEVICE_CHANGE_IP_WEB_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("DashDeletedStackType", DASH_DELETED_STACK_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for DeviceChangeIpWebType { +impl ::serde::ser::Serialize for DashDeletedStackType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("DeviceChangeIpWebType", 1)?; + let mut s = serializer.serialize_struct("DashDeletedStackType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Failed to delete all files from unlinked device. +/// Edited a comment in a stack. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct DeviceDeleteOnUnlinkFailDetails { - /// The number of times that remote file deletion failed. - pub num_failures: i64, - /// Session unique id. - pub session_info: Option, - /// The device name. Might be missing due to historical data gap. - pub display_name: Option, +pub struct DashEditedCommentInStackDetails { + /// The name of the stack where the comment exists. + pub stack_name: String, + /// The name of the stack item that the comment is tied to. + pub stack_item_name: String, + /// The text of the comment. + pub comment_text: String, + /// The type of stack backend. + pub stack_type: Option, } -impl DeviceDeleteOnUnlinkFailDetails { - pub fn new(num_failures: i64) -> Self { - DeviceDeleteOnUnlinkFailDetails { - num_failures, - session_info: None, - display_name: None, +impl DashEditedCommentInStackDetails { + pub fn new(stack_name: String, stack_item_name: String, comment_text: String) -> Self { + DashEditedCommentInStackDetails { + stack_name, + stack_item_name, + comment_text, + stack_type: None, } } - pub fn with_session_info(mut self, value: SessionLogInfo) -> Self { - self.session_info = Some(value); - self - } - - pub fn with_display_name(mut self, value: String) -> Self { - self.display_name = Some(value); + pub fn with_stack_type(mut self, value: DashStackType) -> Self { + self.stack_type = Some(value); self } } -const DEVICE_DELETE_ON_UNLINK_FAIL_DETAILS_FIELDS: &[&str] = &["num_failures", - "session_info", - "display_name"]; -impl DeviceDeleteOnUnlinkFailDetails { +const DASH_EDITED_COMMENT_IN_STACK_DETAILS_FIELDS: &[&str] = &["stack_name", + "stack_item_name", + "comment_text", + "stack_type"]; +impl DashEditedCommentInStackDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_num_failures = None; - let mut field_session_info = None; - let mut field_display_name = None; + ) -> Result, V::Error> { + let mut field_stack_name = None; + let mut field_stack_item_name = None; + let mut field_comment_text = None; + let mut field_stack_type = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "num_failures" => { - if field_num_failures.is_some() { - return Err(::serde::de::Error::duplicate_field("num_failures")); + "stack_name" => { + if field_stack_name.is_some() { + return Err(::serde::de::Error::duplicate_field("stack_name")); } - field_num_failures = Some(map.next_value()?); + field_stack_name = Some(map.next_value()?); } - "session_info" => { - if field_session_info.is_some() { - return Err(::serde::de::Error::duplicate_field("session_info")); + "stack_item_name" => { + if field_stack_item_name.is_some() { + return Err(::serde::de::Error::duplicate_field("stack_item_name")); } - field_session_info = Some(map.next_value()?); + field_stack_item_name = Some(map.next_value()?); } - "display_name" => { - if field_display_name.is_some() { - return Err(::serde::de::Error::duplicate_field("display_name")); + "comment_text" => { + if field_comment_text.is_some() { + return Err(::serde::de::Error::duplicate_field("comment_text")); } - field_display_name = Some(map.next_value()?); + field_comment_text = Some(map.next_value()?); + } + "stack_type" => { + if field_stack_type.is_some() { + return Err(::serde::de::Error::duplicate_field("stack_type")); + } + field_stack_type = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -13675,10 +15556,11 @@ impl DeviceDeleteOnUnlinkFailDetails { if optional && nothing { return Ok(None); } - let result = DeviceDeleteOnUnlinkFailDetails { - num_failures: field_num_failures.ok_or_else(|| ::serde::de::Error::missing_field("num_failures"))?, - session_info: field_session_info.and_then(Option::flatten), - display_name: field_display_name.and_then(Option::flatten), + let result = DashEditedCommentInStackDetails { + stack_name: field_stack_name.ok_or_else(|| ::serde::de::Error::missing_field("stack_name"))?, + stack_item_name: field_stack_item_name.ok_or_else(|| ::serde::de::Error::missing_field("stack_item_name"))?, + comment_text: field_comment_text.ok_or_else(|| ::serde::de::Error::missing_field("comment_text"))?, + stack_type: field_stack_type.and_then(Option::flatten), }; Ok(Some(result)) } @@ -13688,40 +15570,39 @@ impl DeviceDeleteOnUnlinkFailDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("num_failures", &self.num_failures)?; - if let Some(val) = &self.session_info { - s.serialize_field("session_info", val)?; - } - if let Some(val) = &self.display_name { - s.serialize_field("display_name", val)?; + s.serialize_field("stack_name", &self.stack_name)?; + s.serialize_field("stack_item_name", &self.stack_item_name)?; + s.serialize_field("comment_text", &self.comment_text)?; + if let Some(val) = &self.stack_type { + s.serialize_field("stack_type", val)?; } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for DeviceDeleteOnUnlinkFailDetails { +impl<'de> ::serde::de::Deserialize<'de> for DashEditedCommentInStackDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = DeviceDeleteOnUnlinkFailDetails; + type Value = DashEditedCommentInStackDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a DeviceDeleteOnUnlinkFailDetails struct") + f.write_str("a DashEditedCommentInStackDetails struct") } fn visit_map>(self, map: V) -> Result { - DeviceDeleteOnUnlinkFailDetails::internal_deserialize(map) + DashEditedCommentInStackDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("DeviceDeleteOnUnlinkFailDetails", DEVICE_DELETE_ON_UNLINK_FAIL_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("DashEditedCommentInStackDetails", DASH_EDITED_COMMENT_IN_STACK_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for DeviceDeleteOnUnlinkFailDetails { +impl ::serde::ser::Serialize for DashEditedCommentInStackDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("DeviceDeleteOnUnlinkFailDetails", 3)?; + let mut s = serializer.serialize_struct("DashEditedCommentInStackDetails", 4)?; self.internal_serialize::(&mut s)?; s.end() } @@ -13729,30 +15610,30 @@ impl ::serde::ser::Serialize for DeviceDeleteOnUnlinkFailDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct DeviceDeleteOnUnlinkFailType { +pub struct DashEditedCommentInStackType { pub description: String, } -impl DeviceDeleteOnUnlinkFailType { +impl DashEditedCommentInStackType { pub fn new(description: String) -> Self { - DeviceDeleteOnUnlinkFailType { + DashEditedCommentInStackType { description, } } } -const DEVICE_DELETE_ON_UNLINK_FAIL_TYPE_FIELDS: &[&str] = &["description"]; -impl DeviceDeleteOnUnlinkFailType { +const DASH_EDITED_COMMENT_IN_STACK_TYPE_FIELDS: &[&str] = &["description"]; +impl DashEditedCommentInStackType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -13773,7 +15654,7 @@ impl DeviceDeleteOnUnlinkFailType { if optional && nothing { return Ok(None); } - let result = DeviceDeleteOnUnlinkFailType { + let result = DashEditedCommentInStackType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -13789,78 +15670,159 @@ impl DeviceDeleteOnUnlinkFailType { } } -impl<'de> ::serde::de::Deserialize<'de> for DeviceDeleteOnUnlinkFailType { +impl<'de> ::serde::de::Deserialize<'de> for DashEditedCommentInStackType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = DeviceDeleteOnUnlinkFailType; + type Value = DashEditedCommentInStackType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a DeviceDeleteOnUnlinkFailType struct") + f.write_str("a DashEditedCommentInStackType struct") } fn visit_map>(self, map: V) -> Result { - DeviceDeleteOnUnlinkFailType::internal_deserialize(map) + DashEditedCommentInStackType::internal_deserialize(map) } } - deserializer.deserialize_struct("DeviceDeleteOnUnlinkFailType", DEVICE_DELETE_ON_UNLINK_FAIL_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("DashEditedCommentInStackType", DASH_EDITED_COMMENT_IN_STACK_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for DeviceDeleteOnUnlinkFailType { +impl ::serde::ser::Serialize for DashEditedCommentInStackType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("DeviceDeleteOnUnlinkFailType", 1)?; + let mut s = serializer.serialize_struct("DashEditedCommentInStackType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Deleted all files from unlinked device. -#[derive(Debug, Clone, PartialEq, Eq, Default)] -#[non_exhaustive] // structs may have more fields added in the future. -pub struct DeviceDeleteOnUnlinkSuccessDetails { - /// Session unique id. - pub session_info: Option, - /// The device name. Might be missing due to historical data gap. - pub display_name: Option, +/// Policy for deciding whether team users can share Dash content externally +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // variants may be added in the future +pub enum DashExternalSharingPolicy { + Default, + Disabled, + Enabled, + /// Catch-all used for unrecognized values returned from the server. Encountering this value + /// typically indicates that this SDK version is out of date. + Other, } -impl DeviceDeleteOnUnlinkSuccessDetails { - pub fn with_session_info(mut self, value: SessionLogInfo) -> Self { - self.session_info = Some(value); - self +impl<'de> ::serde::de::Deserialize<'de> for DashExternalSharingPolicy { + fn deserialize>(deserializer: D) -> Result { + // union deserializer + use serde::de::{self, MapAccess, Visitor}; + struct EnumVisitor; + impl<'de> Visitor<'de> for EnumVisitor { + type Value = DashExternalSharingPolicy; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a DashExternalSharingPolicy structure") + } + fn visit_map>(self, mut map: V) -> Result { + let tag: &str = match map.next_key()? { + Some(".tag") => map.next_value()?, + _ => return Err(de::Error::missing_field(".tag")) + }; + let value = match tag { + "default" => DashExternalSharingPolicy::Default, + "disabled" => DashExternalSharingPolicy::Disabled, + "enabled" => DashExternalSharingPolicy::Enabled, + _ => DashExternalSharingPolicy::Other, + }; + crate::eat_json_fields(&mut map)?; + Ok(value) + } + } + const VARIANTS: &[&str] = &["default", + "disabled", + "enabled", + "other"]; + deserializer.deserialize_struct("DashExternalSharingPolicy", VARIANTS, EnumVisitor) } +} - pub fn with_display_name(mut self, value: String) -> Self { - self.display_name = Some(value); - self +impl ::serde::ser::Serialize for DashExternalSharingPolicy { + fn serialize(&self, serializer: S) -> Result { + // union serializer + use serde::ser::SerializeStruct; + match self { + DashExternalSharingPolicy::Default => { + // unit + let mut s = serializer.serialize_struct("DashExternalSharingPolicy", 1)?; + s.serialize_field(".tag", "default")?; + s.end() + } + DashExternalSharingPolicy::Disabled => { + // unit + let mut s = serializer.serialize_struct("DashExternalSharingPolicy", 1)?; + s.serialize_field(".tag", "disabled")?; + s.end() + } + DashExternalSharingPolicy::Enabled => { + // unit + let mut s = serializer.serialize_struct("DashExternalSharingPolicy", 1)?; + s.serialize_field(".tag", "enabled")?; + s.end() + } + DashExternalSharingPolicy::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) + } } } -const DEVICE_DELETE_ON_UNLINK_SUCCESS_DETAILS_FIELDS: &[&str] = &["session_info", - "display_name"]; -impl DeviceDeleteOnUnlinkSuccessDetails { - // no _opt deserializer +/// Changed Dash external sharing policy for team. +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct DashExternalSharingPolicyChangedDetails { + /// To. + pub new_value: DashExternalSharingPolicy, + /// From. + pub previous_value: DashExternalSharingPolicy, +} + +impl DashExternalSharingPolicyChangedDetails { + pub fn new( + new_value: DashExternalSharingPolicy, + previous_value: DashExternalSharingPolicy, + ) -> Self { + DashExternalSharingPolicyChangedDetails { + new_value, + previous_value, + } + } +} + +const DASH_EXTERNAL_SHARING_POLICY_CHANGED_DETAILS_FIELDS: &[&str] = &["new_value", + "previous_value"]; +impl DashExternalSharingPolicyChangedDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - ) -> Result { - let mut field_session_info = None; - let mut field_display_name = None; + optional: bool, + ) -> Result, V::Error> { + let mut field_new_value = None; + let mut field_previous_value = None; + let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { + nothing = false; match key { - "session_info" => { - if field_session_info.is_some() { - return Err(::serde::de::Error::duplicate_field("session_info")); + "new_value" => { + if field_new_value.is_some() { + return Err(::serde::de::Error::duplicate_field("new_value")); } - field_session_info = Some(map.next_value()?); + field_new_value = Some(map.next_value()?); } - "display_name" => { - if field_display_name.is_some() { - return Err(::serde::de::Error::duplicate_field("display_name")); + "previous_value" => { + if field_previous_value.is_some() { + return Err(::serde::de::Error::duplicate_field("previous_value")); } - field_display_name = Some(map.next_value()?); + field_previous_value = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -13868,11 +15830,14 @@ impl DeviceDeleteOnUnlinkSuccessDetails { } } } - let result = DeviceDeleteOnUnlinkSuccessDetails { - session_info: field_session_info.and_then(Option::flatten), - display_name: field_display_name.and_then(Option::flatten), + if optional && nothing { + return Ok(None); + } + let result = DashExternalSharingPolicyChangedDetails { + new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, + previous_value: field_previous_value.ok_or_else(|| ::serde::de::Error::missing_field("previous_value"))?, }; - Ok(result) + Ok(Some(result)) } pub(crate) fn internal_serialize( @@ -13880,39 +15845,35 @@ impl DeviceDeleteOnUnlinkSuccessDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - if let Some(val) = &self.session_info { - s.serialize_field("session_info", val)?; - } - if let Some(val) = &self.display_name { - s.serialize_field("display_name", val)?; - } + s.serialize_field("new_value", &self.new_value)?; + s.serialize_field("previous_value", &self.previous_value)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for DeviceDeleteOnUnlinkSuccessDetails { +impl<'de> ::serde::de::Deserialize<'de> for DashExternalSharingPolicyChangedDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = DeviceDeleteOnUnlinkSuccessDetails; + type Value = DashExternalSharingPolicyChangedDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a DeviceDeleteOnUnlinkSuccessDetails struct") + f.write_str("a DashExternalSharingPolicyChangedDetails struct") } fn visit_map>(self, map: V) -> Result { - DeviceDeleteOnUnlinkSuccessDetails::internal_deserialize(map) + DashExternalSharingPolicyChangedDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("DeviceDeleteOnUnlinkSuccessDetails", DEVICE_DELETE_ON_UNLINK_SUCCESS_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("DashExternalSharingPolicyChangedDetails", DASH_EXTERNAL_SHARING_POLICY_CHANGED_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for DeviceDeleteOnUnlinkSuccessDetails { +impl ::serde::ser::Serialize for DashExternalSharingPolicyChangedDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("DeviceDeleteOnUnlinkSuccessDetails", 2)?; + let mut s = serializer.serialize_struct("DashExternalSharingPolicyChangedDetails", 2)?; self.internal_serialize::(&mut s)?; s.end() } @@ -13920,30 +15881,30 @@ impl ::serde::ser::Serialize for DeviceDeleteOnUnlinkSuccessDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct DeviceDeleteOnUnlinkSuccessType { +pub struct DashExternalSharingPolicyChangedType { pub description: String, } -impl DeviceDeleteOnUnlinkSuccessType { +impl DashExternalSharingPolicyChangedType { pub fn new(description: String) -> Self { - DeviceDeleteOnUnlinkSuccessType { + DashExternalSharingPolicyChangedType { description, } } } -const DEVICE_DELETE_ON_UNLINK_SUCCESS_TYPE_FIELDS: &[&str] = &["description"]; -impl DeviceDeleteOnUnlinkSuccessType { +const DASH_EXTERNAL_SHARING_POLICY_CHANGED_TYPE_FIELDS: &[&str] = &["description"]; +impl DashExternalSharingPolicyChangedType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -13964,7 +15925,7 @@ impl DeviceDeleteOnUnlinkSuccessType { if optional && nothing { return Ok(None); } - let result = DeviceDeleteOnUnlinkSuccessType { + let result = DashExternalSharingPolicyChangedType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -13980,88 +15941,142 @@ impl DeviceDeleteOnUnlinkSuccessType { } } -impl<'de> ::serde::de::Deserialize<'de> for DeviceDeleteOnUnlinkSuccessType { +impl<'de> ::serde::de::Deserialize<'de> for DashExternalSharingPolicyChangedType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = DeviceDeleteOnUnlinkSuccessType; + type Value = DashExternalSharingPolicyChangedType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a DeviceDeleteOnUnlinkSuccessType struct") + f.write_str("a DashExternalSharingPolicyChangedType struct") } fn visit_map>(self, map: V) -> Result { - DeviceDeleteOnUnlinkSuccessType::internal_deserialize(map) + DashExternalSharingPolicyChangedType::internal_deserialize(map) } } - deserializer.deserialize_struct("DeviceDeleteOnUnlinkSuccessType", DEVICE_DELETE_ON_UNLINK_SUCCESS_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("DashExternalSharingPolicyChangedType", DASH_EXTERNAL_SHARING_POLICY_CHANGED_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for DeviceDeleteOnUnlinkSuccessType { +impl ::serde::ser::Serialize for DashExternalSharingPolicyChangedType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("DeviceDeleteOnUnlinkSuccessType", 1)?; + let mut s = serializer.serialize_struct("DashExternalSharingPolicyChangedType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Failed to link device. +/// External user opened a stack. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct DeviceLinkFailDetails { - /// A description of the device used while user approval blocked. - pub device_type: DeviceType, - /// IP address. Might be missing due to historical data gap. - pub ip_address: Option, +pub struct DashExternalUserOpenedStackDetails { + /// The name of the stack. + pub stack_name: String, + /// The sharing scope of the stack. + pub stack_sharing_scope: DashStackSharingScope, + /// Whether the user was invited to the stack. + pub is_invited: bool, + /// Whether the user has verified their email address. + pub is_verified: bool, + /// The team ID of the stack owner. + pub stack_owner_team_id: Option, + /// The type of stack backend. + pub stack_type: Option, } -impl DeviceLinkFailDetails { - pub fn new(device_type: DeviceType) -> Self { - DeviceLinkFailDetails { - device_type, - ip_address: None, - } +impl DashExternalUserOpenedStackDetails { + pub fn new( + stack_name: String, + stack_sharing_scope: DashStackSharingScope, + is_invited: bool, + is_verified: bool, + ) -> Self { + DashExternalUserOpenedStackDetails { + stack_name, + stack_sharing_scope, + is_invited, + is_verified, + stack_owner_team_id: None, + stack_type: None, + } } - pub fn with_ip_address(mut self, value: IpAddress) -> Self { - self.ip_address = Some(value); + pub fn with_stack_owner_team_id(mut self, value: i64) -> Self { + self.stack_owner_team_id = Some(value); + self + } + + pub fn with_stack_type(mut self, value: DashStackType) -> Self { + self.stack_type = Some(value); self } } -const DEVICE_LINK_FAIL_DETAILS_FIELDS: &[&str] = &["device_type", - "ip_address"]; -impl DeviceLinkFailDetails { +const DASH_EXTERNAL_USER_OPENED_STACK_DETAILS_FIELDS: &[&str] = &["stack_name", + "stack_sharing_scope", + "is_invited", + "is_verified", + "stack_owner_team_id", + "stack_type"]; +impl DashExternalUserOpenedStackDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_device_type = None; - let mut field_ip_address = None; + ) -> Result, V::Error> { + let mut field_stack_name = None; + let mut field_stack_sharing_scope = None; + let mut field_is_invited = None; + let mut field_is_verified = None; + let mut field_stack_owner_team_id = None; + let mut field_stack_type = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "device_type" => { - if field_device_type.is_some() { - return Err(::serde::de::Error::duplicate_field("device_type")); + "stack_name" => { + if field_stack_name.is_some() { + return Err(::serde::de::Error::duplicate_field("stack_name")); } - field_device_type = Some(map.next_value()?); + field_stack_name = Some(map.next_value()?); } - "ip_address" => { - if field_ip_address.is_some() { - return Err(::serde::de::Error::duplicate_field("ip_address")); + "stack_sharing_scope" => { + if field_stack_sharing_scope.is_some() { + return Err(::serde::de::Error::duplicate_field("stack_sharing_scope")); } - field_ip_address = Some(map.next_value()?); + field_stack_sharing_scope = Some(map.next_value()?); + } + "is_invited" => { + if field_is_invited.is_some() { + return Err(::serde::de::Error::duplicate_field("is_invited")); + } + field_is_invited = Some(map.next_value()?); + } + "is_verified" => { + if field_is_verified.is_some() { + return Err(::serde::de::Error::duplicate_field("is_verified")); + } + field_is_verified = Some(map.next_value()?); + } + "stack_owner_team_id" => { + if field_stack_owner_team_id.is_some() { + return Err(::serde::de::Error::duplicate_field("stack_owner_team_id")); + } + field_stack_owner_team_id = Some(map.next_value()?); + } + "stack_type" => { + if field_stack_type.is_some() { + return Err(::serde::de::Error::duplicate_field("stack_type")); + } + field_stack_type = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -14072,9 +16087,13 @@ impl DeviceLinkFailDetails { if optional && nothing { return Ok(None); } - let result = DeviceLinkFailDetails { - device_type: field_device_type.ok_or_else(|| ::serde::de::Error::missing_field("device_type"))?, - ip_address: field_ip_address.and_then(Option::flatten), + let result = DashExternalUserOpenedStackDetails { + stack_name: field_stack_name.ok_or_else(|| ::serde::de::Error::missing_field("stack_name"))?, + stack_sharing_scope: field_stack_sharing_scope.ok_or_else(|| ::serde::de::Error::missing_field("stack_sharing_scope"))?, + is_invited: field_is_invited.ok_or_else(|| ::serde::de::Error::missing_field("is_invited"))?, + is_verified: field_is_verified.ok_or_else(|| ::serde::de::Error::missing_field("is_verified"))?, + stack_owner_team_id: field_stack_owner_team_id.and_then(Option::flatten), + stack_type: field_stack_type.and_then(Option::flatten), }; Ok(Some(result)) } @@ -14084,37 +16103,43 @@ impl DeviceLinkFailDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("device_type", &self.device_type)?; - if let Some(val) = &self.ip_address { - s.serialize_field("ip_address", val)?; + s.serialize_field("stack_name", &self.stack_name)?; + s.serialize_field("stack_sharing_scope", &self.stack_sharing_scope)?; + s.serialize_field("is_invited", &self.is_invited)?; + s.serialize_field("is_verified", &self.is_verified)?; + if let Some(val) = &self.stack_owner_team_id { + s.serialize_field("stack_owner_team_id", val)?; + } + if let Some(val) = &self.stack_type { + s.serialize_field("stack_type", val)?; } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for DeviceLinkFailDetails { +impl<'de> ::serde::de::Deserialize<'de> for DashExternalUserOpenedStackDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = DeviceLinkFailDetails; + type Value = DashExternalUserOpenedStackDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a DeviceLinkFailDetails struct") + f.write_str("a DashExternalUserOpenedStackDetails struct") } fn visit_map>(self, map: V) -> Result { - DeviceLinkFailDetails::internal_deserialize(map) + DashExternalUserOpenedStackDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("DeviceLinkFailDetails", DEVICE_LINK_FAIL_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("DashExternalUserOpenedStackDetails", DASH_EXTERNAL_USER_OPENED_STACK_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for DeviceLinkFailDetails { +impl ::serde::ser::Serialize for DashExternalUserOpenedStackDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("DeviceLinkFailDetails", 2)?; + let mut s = serializer.serialize_struct("DashExternalUserOpenedStackDetails", 6)?; self.internal_serialize::(&mut s)?; s.end() } @@ -14122,30 +16147,30 @@ impl ::serde::ser::Serialize for DeviceLinkFailDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct DeviceLinkFailType { +pub struct DashExternalUserOpenedStackType { pub description: String, } -impl DeviceLinkFailType { +impl DashExternalUserOpenedStackType { pub fn new(description: String) -> Self { - DeviceLinkFailType { + DashExternalUserOpenedStackType { description, } } } -const DEVICE_LINK_FAIL_TYPE_FIELDS: &[&str] = &["description"]; -impl DeviceLinkFailType { +const DASH_EXTERNAL_USER_OPENED_STACK_TYPE_FIELDS: &[&str] = &["description"]; +impl DashExternalUserOpenedStackType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -14166,7 +16191,7 @@ impl DeviceLinkFailType { if optional && nothing { return Ok(None); } - let result = DeviceLinkFailType { + let result = DashExternalUserOpenedStackType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -14182,63 +16207,72 @@ impl DeviceLinkFailType { } } -impl<'de> ::serde::de::Deserialize<'de> for DeviceLinkFailType { +impl<'de> ::serde::de::Deserialize<'de> for DashExternalUserOpenedStackType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = DeviceLinkFailType; + type Value = DashExternalUserOpenedStackType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a DeviceLinkFailType struct") + f.write_str("a DashExternalUserOpenedStackType struct") } fn visit_map>(self, map: V) -> Result { - DeviceLinkFailType::internal_deserialize(map) + DashExternalUserOpenedStackType::internal_deserialize(map) } } - deserializer.deserialize_struct("DeviceLinkFailType", DEVICE_LINK_FAIL_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("DashExternalUserOpenedStackType", DASH_EXTERNAL_USER_OPENED_STACK_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for DeviceLinkFailType { +impl ::serde::ser::Serialize for DashExternalUserOpenedStackType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("DeviceLinkFailType", 1)?; + let mut s = serializer.serialize_struct("DashExternalUserOpenedStackType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Linked device. -#[derive(Debug, Clone, PartialEq, Eq, Default)] +/// Opened the desktop app for the first time. +#[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct DeviceLinkSuccessDetails { - /// Device's session logged information. - pub device_session_info: Option, +pub struct DashFirstLaunchedDesktopDetails { + /// The name of the operating system. + pub os_name: String, } -impl DeviceLinkSuccessDetails { - pub fn with_device_session_info(mut self, value: DeviceSessionLogInfo) -> Self { - self.device_session_info = Some(value); - self +impl DashFirstLaunchedDesktopDetails { + pub fn new(os_name: String) -> Self { + DashFirstLaunchedDesktopDetails { + os_name, + } } } -const DEVICE_LINK_SUCCESS_DETAILS_FIELDS: &[&str] = &["device_session_info"]; -impl DeviceLinkSuccessDetails { - // no _opt deserializer +const DASH_FIRST_LAUNCHED_DESKTOP_DETAILS_FIELDS: &[&str] = &["os_name"]; +impl DashFirstLaunchedDesktopDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - ) -> Result { - let mut field_device_session_info = None; + optional: bool, + ) -> Result, V::Error> { + let mut field_os_name = None; + let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { + nothing = false; match key { - "device_session_info" => { - if field_device_session_info.is_some() { - return Err(::serde::de::Error::duplicate_field("device_session_info")); + "os_name" => { + if field_os_name.is_some() { + return Err(::serde::de::Error::duplicate_field("os_name")); } - field_device_session_info = Some(map.next_value()?); + field_os_name = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -14246,10 +16280,13 @@ impl DeviceLinkSuccessDetails { } } } - let result = DeviceLinkSuccessDetails { - device_session_info: field_device_session_info.and_then(Option::flatten), + if optional && nothing { + return Ok(None); + } + let result = DashFirstLaunchedDesktopDetails { + os_name: field_os_name.ok_or_else(|| ::serde::de::Error::missing_field("os_name"))?, }; - Ok(result) + Ok(Some(result)) } pub(crate) fn internal_serialize( @@ -14257,36 +16294,34 @@ impl DeviceLinkSuccessDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - if let Some(val) = &self.device_session_info { - s.serialize_field("device_session_info", val)?; - } + s.serialize_field("os_name", &self.os_name)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for DeviceLinkSuccessDetails { +impl<'de> ::serde::de::Deserialize<'de> for DashFirstLaunchedDesktopDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = DeviceLinkSuccessDetails; + type Value = DashFirstLaunchedDesktopDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a DeviceLinkSuccessDetails struct") + f.write_str("a DashFirstLaunchedDesktopDetails struct") } fn visit_map>(self, map: V) -> Result { - DeviceLinkSuccessDetails::internal_deserialize(map) + DashFirstLaunchedDesktopDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("DeviceLinkSuccessDetails", DEVICE_LINK_SUCCESS_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("DashFirstLaunchedDesktopDetails", DASH_FIRST_LAUNCHED_DESKTOP_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for DeviceLinkSuccessDetails { +impl ::serde::ser::Serialize for DashFirstLaunchedDesktopDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("DeviceLinkSuccessDetails", 1)?; + let mut s = serializer.serialize_struct("DashFirstLaunchedDesktopDetails", 1)?; self.internal_serialize::(&mut s)?; s.end() } @@ -14294,30 +16329,30 @@ impl ::serde::ser::Serialize for DeviceLinkSuccessDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct DeviceLinkSuccessType { +pub struct DashFirstLaunchedDesktopType { pub description: String, } -impl DeviceLinkSuccessType { +impl DashFirstLaunchedDesktopType { pub fn new(description: String) -> Self { - DeviceLinkSuccessType { + DashFirstLaunchedDesktopType { description, } } } -const DEVICE_LINK_SUCCESS_TYPE_FIELDS: &[&str] = &["description"]; -impl DeviceLinkSuccessType { +const DASH_FIRST_LAUNCHED_DESKTOP_TYPE_FIELDS: &[&str] = &["description"]; +impl DashFirstLaunchedDesktopType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -14338,7 +16373,7 @@ impl DeviceLinkSuccessType { if optional && nothing { return Ok(None); } - let result = DeviceLinkSuccessType { + let result = DashFirstLaunchedDesktopType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -14354,104 +16389,152 @@ impl DeviceLinkSuccessType { } } -impl<'de> ::serde::de::Deserialize<'de> for DeviceLinkSuccessType { +impl<'de> ::serde::de::Deserialize<'de> for DashFirstLaunchedDesktopType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = DeviceLinkSuccessType; + type Value = DashFirstLaunchedDesktopType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a DeviceLinkSuccessType struct") + f.write_str("a DashFirstLaunchedDesktopType struct") } fn visit_map>(self, map: V) -> Result { - DeviceLinkSuccessType::internal_deserialize(map) + DashFirstLaunchedDesktopType::internal_deserialize(map) } } - deserializer.deserialize_struct("DeviceLinkSuccessType", DEVICE_LINK_SUCCESS_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("DashFirstLaunchedDesktopType", DASH_FIRST_LAUNCHED_DESKTOP_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for DeviceLinkSuccessType { +impl ::serde::ser::Serialize for DashFirstLaunchedDesktopType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("DeviceLinkSuccessType", 1)?; + let mut s = serializer.serialize_struct("DashFirstLaunchedDesktopType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Disabled device management. -#[derive(Debug, Clone, PartialEq, Eq, Default)] +/// Opened the extension for the first time. +#[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct DeviceManagementDisabledDetails { +pub struct DashFirstLaunchedExtensionDetails { + /// The name of the web browser. + pub browser_name: String, } -const DEVICE_MANAGEMENT_DISABLED_DETAILS_FIELDS: &[&str] = &[]; -impl DeviceManagementDisabledDetails { - // no _opt deserializer +impl DashFirstLaunchedExtensionDetails { + pub fn new(browser_name: String) -> Self { + DashFirstLaunchedExtensionDetails { + browser_name, + } + } +} + +const DASH_FIRST_LAUNCHED_EXTENSION_DETAILS_FIELDS: &[&str] = &["browser_name"]; +impl DashFirstLaunchedExtensionDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - ) -> Result { - // ignore any fields found; none are presently recognized - crate::eat_json_fields(&mut map)?; - Ok(DeviceManagementDisabledDetails {}) + optional: bool, + ) -> Result, V::Error> { + let mut field_browser_name = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "browser_name" => { + if field_browser_name.is_some() { + return Err(::serde::de::Error::duplicate_field("browser_name")); + } + field_browser_name = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } + } + } + if optional && nothing { + return Ok(None); + } + let result = DashFirstLaunchedExtensionDetails { + browser_name: field_browser_name.ok_or_else(|| ::serde::de::Error::missing_field("browser_name"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("browser_name", &self.browser_name)?; + Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for DeviceManagementDisabledDetails { +impl<'de> ::serde::de::Deserialize<'de> for DashFirstLaunchedExtensionDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = DeviceManagementDisabledDetails; + type Value = DashFirstLaunchedExtensionDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a DeviceManagementDisabledDetails struct") + f.write_str("a DashFirstLaunchedExtensionDetails struct") } fn visit_map>(self, map: V) -> Result { - DeviceManagementDisabledDetails::internal_deserialize(map) + DashFirstLaunchedExtensionDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("DeviceManagementDisabledDetails", DEVICE_MANAGEMENT_DISABLED_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("DashFirstLaunchedExtensionDetails", DASH_FIRST_LAUNCHED_EXTENSION_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for DeviceManagementDisabledDetails { +impl ::serde::ser::Serialize for DashFirstLaunchedExtensionDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - serializer.serialize_struct("DeviceManagementDisabledDetails", 0)?.end() + let mut s = serializer.serialize_struct("DashFirstLaunchedExtensionDetails", 1)?; + self.internal_serialize::(&mut s)?; + s.end() } } #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct DeviceManagementDisabledType { +pub struct DashFirstLaunchedExtensionType { pub description: String, } -impl DeviceManagementDisabledType { +impl DashFirstLaunchedExtensionType { pub fn new(description: String) -> Self { - DeviceManagementDisabledType { + DashFirstLaunchedExtensionType { description, } } } -const DEVICE_MANAGEMENT_DISABLED_TYPE_FIELDS: &[&str] = &["description"]; -impl DeviceManagementDisabledType { +const DASH_FIRST_LAUNCHED_EXTENSION_TYPE_FIELDS: &[&str] = &["description"]; +impl DashFirstLaunchedExtensionType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -14472,7 +16555,7 @@ impl DeviceManagementDisabledType { if optional && nothing { return Ok(None); } - let result = DeviceManagementDisabledType { + let result = DashFirstLaunchedExtensionType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -14488,104 +16571,152 @@ impl DeviceManagementDisabledType { } } -impl<'de> ::serde::de::Deserialize<'de> for DeviceManagementDisabledType { +impl<'de> ::serde::de::Deserialize<'de> for DashFirstLaunchedExtensionType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = DeviceManagementDisabledType; + type Value = DashFirstLaunchedExtensionType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a DeviceManagementDisabledType struct") + f.write_str("a DashFirstLaunchedExtensionType struct") } fn visit_map>(self, map: V) -> Result { - DeviceManagementDisabledType::internal_deserialize(map) + DashFirstLaunchedExtensionType::internal_deserialize(map) } } - deserializer.deserialize_struct("DeviceManagementDisabledType", DEVICE_MANAGEMENT_DISABLED_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("DashFirstLaunchedExtensionType", DASH_FIRST_LAUNCHED_EXTENSION_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for DeviceManagementDisabledType { +impl ::serde::ser::Serialize for DashFirstLaunchedExtensionType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("DeviceManagementDisabledType", 1)?; + let mut s = serializer.serialize_struct("DashFirstLaunchedExtensionType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Enabled device management. -#[derive(Debug, Clone, PartialEq, Eq, Default)] +/// Opened the web Start Page for the first time. +#[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct DeviceManagementEnabledDetails { +pub struct DashFirstLaunchedWebStartPageDetails { + /// The name of the web browser. + pub browser_name: String, } -const DEVICE_MANAGEMENT_ENABLED_DETAILS_FIELDS: &[&str] = &[]; -impl DeviceManagementEnabledDetails { - // no _opt deserializer +impl DashFirstLaunchedWebStartPageDetails { + pub fn new(browser_name: String) -> Self { + DashFirstLaunchedWebStartPageDetails { + browser_name, + } + } +} + +const DASH_FIRST_LAUNCHED_WEB_START_PAGE_DETAILS_FIELDS: &[&str] = &["browser_name"]; +impl DashFirstLaunchedWebStartPageDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - ) -> Result { - // ignore any fields found; none are presently recognized - crate::eat_json_fields(&mut map)?; - Ok(DeviceManagementEnabledDetails {}) + optional: bool, + ) -> Result, V::Error> { + let mut field_browser_name = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "browser_name" => { + if field_browser_name.is_some() { + return Err(::serde::de::Error::duplicate_field("browser_name")); + } + field_browser_name = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } + } + } + if optional && nothing { + return Ok(None); + } + let result = DashFirstLaunchedWebStartPageDetails { + browser_name: field_browser_name.ok_or_else(|| ::serde::de::Error::missing_field("browser_name"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("browser_name", &self.browser_name)?; + Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for DeviceManagementEnabledDetails { +impl<'de> ::serde::de::Deserialize<'de> for DashFirstLaunchedWebStartPageDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = DeviceManagementEnabledDetails; + type Value = DashFirstLaunchedWebStartPageDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a DeviceManagementEnabledDetails struct") + f.write_str("a DashFirstLaunchedWebStartPageDetails struct") } fn visit_map>(self, map: V) -> Result { - DeviceManagementEnabledDetails::internal_deserialize(map) + DashFirstLaunchedWebStartPageDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("DeviceManagementEnabledDetails", DEVICE_MANAGEMENT_ENABLED_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("DashFirstLaunchedWebStartPageDetails", DASH_FIRST_LAUNCHED_WEB_START_PAGE_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for DeviceManagementEnabledDetails { +impl ::serde::ser::Serialize for DashFirstLaunchedWebStartPageDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - serializer.serialize_struct("DeviceManagementEnabledDetails", 0)?.end() + let mut s = serializer.serialize_struct("DashFirstLaunchedWebStartPageDetails", 1)?; + self.internal_serialize::(&mut s)?; + s.end() } } #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct DeviceManagementEnabledType { +pub struct DashFirstLaunchedWebStartPageType { pub description: String, } -impl DeviceManagementEnabledType { +impl DashFirstLaunchedWebStartPageType { pub fn new(description: String) -> Self { - DeviceManagementEnabledType { + DashFirstLaunchedWebStartPageType { description, } } } -const DEVICE_MANAGEMENT_ENABLED_TYPE_FIELDS: &[&str] = &["description"]; -impl DeviceManagementEnabledType { +const DASH_FIRST_LAUNCHED_WEB_START_PAGE_TYPE_FIELDS: &[&str] = &["description"]; +impl DashFirstLaunchedWebStartPageType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -14606,7 +16737,7 @@ impl DeviceManagementEnabledType { if optional && nothing { return Ok(None); } - let result = DeviceManagementEnabledType { + let result = DashFirstLaunchedWebStartPageType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -14622,180 +16753,88 @@ impl DeviceManagementEnabledType { } } -impl<'de> ::serde::de::Deserialize<'de> for DeviceManagementEnabledType { +impl<'de> ::serde::de::Deserialize<'de> for DashFirstLaunchedWebStartPageType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = DeviceManagementEnabledType; + type Value = DashFirstLaunchedWebStartPageType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a DeviceManagementEnabledType struct") + f.write_str("a DashFirstLaunchedWebStartPageType struct") } fn visit_map>(self, map: V) -> Result { - DeviceManagementEnabledType::internal_deserialize(map) + DashFirstLaunchedWebStartPageType::internal_deserialize(map) } } - deserializer.deserialize_struct("DeviceManagementEnabledType", DEVICE_MANAGEMENT_ENABLED_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("DashFirstLaunchedWebStartPageType", DASH_FIRST_LAUNCHED_WEB_START_PAGE_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for DeviceManagementEnabledType { +impl ::serde::ser::Serialize for DashFirstLaunchedWebStartPageType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("DeviceManagementEnabledType", 1)?; + let mut s = serializer.serialize_struct("DashFirstLaunchedWebStartPageType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Device's session logged information. +/// Checked access permissions to a stack. #[derive(Debug, Clone, PartialEq, Eq)] -#[non_exhaustive] // variants may be added in the future -pub enum DeviceSessionLogInfo { - DesktopDeviceSession(DesktopDeviceSessionLogInfo), - MobileDeviceSession(MobileDeviceSessionLogInfo), - WebDeviceSession(WebDeviceSessionLogInfo), - LegacyDeviceSession(LegacyDeviceSessionLogInfo), - /// Catch-all used for unrecognized values returned from the server. Encountering this value - /// typically indicates that this SDK version is out of date. - Other, -} - -impl<'de> ::serde::de::Deserialize<'de> for DeviceSessionLogInfo { - fn deserialize>(deserializer: D) -> Result { - // polymorphic struct deserializer - use serde::de::{self, MapAccess, Visitor}; - struct EnumVisitor; - impl<'de> Visitor<'de> for EnumVisitor { - type Value = DeviceSessionLogInfo; - fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a DeviceSessionLogInfo structure") - } - fn visit_map>(self, mut map: V) -> Result { - let tag = match map.next_key()? { - Some(".tag") => map.next_value()?, - _ => return Err(de::Error::missing_field(".tag")) - }; - match tag { - "desktop_device_session" => Ok(DeviceSessionLogInfo::DesktopDeviceSession(DesktopDeviceSessionLogInfo::internal_deserialize(map)?)), - "mobile_device_session" => Ok(DeviceSessionLogInfo::MobileDeviceSession(MobileDeviceSessionLogInfo::internal_deserialize(map)?)), - "web_device_session" => Ok(DeviceSessionLogInfo::WebDeviceSession(WebDeviceSessionLogInfo::internal_deserialize(map)?)), - "legacy_device_session" => Ok(DeviceSessionLogInfo::LegacyDeviceSession(LegacyDeviceSessionLogInfo::internal_deserialize(map)?)), - _ => { - crate::eat_json_fields(&mut map)?; - Ok(DeviceSessionLogInfo::Other) - } - } - } - } - const VARIANTS: &[&str] = &["desktop_device_session", - "mobile_device_session", - "web_device_session", - "legacy_device_session"]; - deserializer.deserialize_struct("DeviceSessionLogInfo", VARIANTS, EnumVisitor) - } +#[non_exhaustive] // structs may have more fields added in the future. +pub struct DashOpenedSharedLinkToStackDetails { + /// The name of the stack. + pub stack_name: String, + /// The type of stack backend. + pub stack_type: Option, } -impl ::serde::ser::Serialize for DeviceSessionLogInfo { - fn serialize(&self, serializer: S) -> Result { - // polymorphic struct serializer - use serde::ser::SerializeStruct; - match self { - DeviceSessionLogInfo::DesktopDeviceSession(x) => { - let mut s = serializer.serialize_struct("DeviceSessionLogInfo", 10)?; - s.serialize_field(".tag", "desktop_device_session")?; - x.internal_serialize::(&mut s)?; - s.end() - } - DeviceSessionLogInfo::MobileDeviceSession(x) => { - let mut s = serializer.serialize_struct("DeviceSessionLogInfo", 10)?; - s.serialize_field(".tag", "mobile_device_session")?; - x.internal_serialize::(&mut s)?; - s.end() - } - DeviceSessionLogInfo::WebDeviceSession(x) => { - let mut s = serializer.serialize_struct("DeviceSessionLogInfo", 8)?; - s.serialize_field(".tag", "web_device_session")?; - x.internal_serialize::(&mut s)?; - s.end() - } - DeviceSessionLogInfo::LegacyDeviceSession(x) => { - let mut s = serializer.serialize_struct("DeviceSessionLogInfo", 13)?; - s.serialize_field(".tag", "legacy_device_session")?; - x.internal_serialize::(&mut s)?; - s.end() - } - DeviceSessionLogInfo::Other => Err(::serde::ser::Error::custom("cannot serialize unknown variant")) +impl DashOpenedSharedLinkToStackDetails { + pub fn new(stack_name: String) -> Self { + DashOpenedSharedLinkToStackDetails { + stack_name, + stack_type: None, } } -} -/// Enabled/disabled backup for computer. -#[derive(Debug, Clone, PartialEq, Eq)] -#[non_exhaustive] // structs may have more fields added in the future. -pub struct DeviceSyncBackupStatusChangedDetails { - /// Device's session logged information. - pub desktop_device_session_info: DesktopDeviceSessionLogInfo, - /// Previous status of computer backup on the device. - pub previous_value: BackupStatus, - /// Next status of computer backup on the device. - pub new_value: BackupStatus, -} - -impl DeviceSyncBackupStatusChangedDetails { - pub fn new( - desktop_device_session_info: DesktopDeviceSessionLogInfo, - previous_value: BackupStatus, - new_value: BackupStatus, - ) -> Self { - DeviceSyncBackupStatusChangedDetails { - desktop_device_session_info, - previous_value, - new_value, - } + pub fn with_stack_type(mut self, value: DashStackType) -> Self { + self.stack_type = Some(value); + self } } -const DEVICE_SYNC_BACKUP_STATUS_CHANGED_DETAILS_FIELDS: &[&str] = &["desktop_device_session_info", - "previous_value", - "new_value"]; -impl DeviceSyncBackupStatusChangedDetails { +const DASH_OPENED_SHARED_LINK_TO_STACK_DETAILS_FIELDS: &[&str] = &["stack_name", + "stack_type"]; +impl DashOpenedSharedLinkToStackDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_desktop_device_session_info = None; - let mut field_previous_value = None; - let mut field_new_value = None; + ) -> Result, V::Error> { + let mut field_stack_name = None; + let mut field_stack_type = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "desktop_device_session_info" => { - if field_desktop_device_session_info.is_some() { - return Err(::serde::de::Error::duplicate_field("desktop_device_session_info")); - } - field_desktop_device_session_info = Some(map.next_value()?); - } - "previous_value" => { - if field_previous_value.is_some() { - return Err(::serde::de::Error::duplicate_field("previous_value")); + "stack_name" => { + if field_stack_name.is_some() { + return Err(::serde::de::Error::duplicate_field("stack_name")); } - field_previous_value = Some(map.next_value()?); + field_stack_name = Some(map.next_value()?); } - "new_value" => { - if field_new_value.is_some() { - return Err(::serde::de::Error::duplicate_field("new_value")); + "stack_type" => { + if field_stack_type.is_some() { + return Err(::serde::de::Error::duplicate_field("stack_type")); } - field_new_value = Some(map.next_value()?); + field_stack_type = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -14806,10 +16845,9 @@ impl DeviceSyncBackupStatusChangedDetails { if optional && nothing { return Ok(None); } - let result = DeviceSyncBackupStatusChangedDetails { - desktop_device_session_info: field_desktop_device_session_info.ok_or_else(|| ::serde::de::Error::missing_field("desktop_device_session_info"))?, - previous_value: field_previous_value.ok_or_else(|| ::serde::de::Error::missing_field("previous_value"))?, - new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, + let result = DashOpenedSharedLinkToStackDetails { + stack_name: field_stack_name.ok_or_else(|| ::serde::de::Error::missing_field("stack_name"))?, + stack_type: field_stack_type.and_then(Option::flatten), }; Ok(Some(result)) } @@ -14819,36 +16857,37 @@ impl DeviceSyncBackupStatusChangedDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("desktop_device_session_info", &self.desktop_device_session_info)?; - s.serialize_field("previous_value", &self.previous_value)?; - s.serialize_field("new_value", &self.new_value)?; + s.serialize_field("stack_name", &self.stack_name)?; + if let Some(val) = &self.stack_type { + s.serialize_field("stack_type", val)?; + } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for DeviceSyncBackupStatusChangedDetails { +impl<'de> ::serde::de::Deserialize<'de> for DashOpenedSharedLinkToStackDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = DeviceSyncBackupStatusChangedDetails; + type Value = DashOpenedSharedLinkToStackDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a DeviceSyncBackupStatusChangedDetails struct") + f.write_str("a DashOpenedSharedLinkToStackDetails struct") } fn visit_map>(self, map: V) -> Result { - DeviceSyncBackupStatusChangedDetails::internal_deserialize(map) + DashOpenedSharedLinkToStackDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("DeviceSyncBackupStatusChangedDetails", DEVICE_SYNC_BACKUP_STATUS_CHANGED_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("DashOpenedSharedLinkToStackDetails", DASH_OPENED_SHARED_LINK_TO_STACK_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for DeviceSyncBackupStatusChangedDetails { +impl ::serde::ser::Serialize for DashOpenedSharedLinkToStackDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("DeviceSyncBackupStatusChangedDetails", 3)?; + let mut s = serializer.serialize_struct("DashOpenedSharedLinkToStackDetails", 2)?; self.internal_serialize::(&mut s)?; s.end() } @@ -14856,30 +16895,30 @@ impl ::serde::ser::Serialize for DeviceSyncBackupStatusChangedDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct DeviceSyncBackupStatusChangedType { +pub struct DashOpenedSharedLinkToStackType { pub description: String, } -impl DeviceSyncBackupStatusChangedType { +impl DashOpenedSharedLinkToStackType { pub fn new(description: String) -> Self { - DeviceSyncBackupStatusChangedType { + DashOpenedSharedLinkToStackType { description, } } } -const DEVICE_SYNC_BACKUP_STATUS_CHANGED_TYPE_FIELDS: &[&str] = &["description"]; -impl DeviceSyncBackupStatusChangedType { +const DASH_OPENED_SHARED_LINK_TO_STACK_TYPE_FIELDS: &[&str] = &["description"]; +impl DashOpenedSharedLinkToStackType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -14900,7 +16939,7 @@ impl DeviceSyncBackupStatusChangedType { if optional && nothing { return Ok(None); } - let result = DeviceSyncBackupStatusChangedType { + let result = DashOpenedSharedLinkToStackType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -14916,167 +16955,88 @@ impl DeviceSyncBackupStatusChangedType { } } -impl<'de> ::serde::de::Deserialize<'de> for DeviceSyncBackupStatusChangedType { +impl<'de> ::serde::de::Deserialize<'de> for DashOpenedSharedLinkToStackType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = DeviceSyncBackupStatusChangedType; + type Value = DashOpenedSharedLinkToStackType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a DeviceSyncBackupStatusChangedType struct") + f.write_str("a DashOpenedSharedLinkToStackType struct") } fn visit_map>(self, map: V) -> Result { - DeviceSyncBackupStatusChangedType::internal_deserialize(map) + DashOpenedSharedLinkToStackType::internal_deserialize(map) } } - deserializer.deserialize_struct("DeviceSyncBackupStatusChangedType", DEVICE_SYNC_BACKUP_STATUS_CHANGED_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("DashOpenedSharedLinkToStackType", DASH_OPENED_SHARED_LINK_TO_STACK_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for DeviceSyncBackupStatusChangedType { +impl ::serde::ser::Serialize for DashOpenedSharedLinkToStackType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("DeviceSyncBackupStatusChangedType", 1)?; + let mut s = serializer.serialize_struct("DashOpenedSharedLinkToStackType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -#[derive(Debug, Clone, PartialEq, Eq)] -#[non_exhaustive] // variants may be added in the future -pub enum DeviceType { - Desktop, - Mobile, - /// Catch-all used for unrecognized values returned from the server. Encountering this value - /// typically indicates that this SDK version is out of date. - Other, -} - -impl<'de> ::serde::de::Deserialize<'de> for DeviceType { - fn deserialize>(deserializer: D) -> Result { - // union deserializer - use serde::de::{self, MapAccess, Visitor}; - struct EnumVisitor; - impl<'de> Visitor<'de> for EnumVisitor { - type Value = DeviceType; - fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a DeviceType structure") - } - fn visit_map>(self, mut map: V) -> Result { - let tag: &str = match map.next_key()? { - Some(".tag") => map.next_value()?, - _ => return Err(de::Error::missing_field(".tag")) - }; - let value = match tag { - "desktop" => DeviceType::Desktop, - "mobile" => DeviceType::Mobile, - _ => DeviceType::Other, - }; - crate::eat_json_fields(&mut map)?; - Ok(value) - } - } - const VARIANTS: &[&str] = &["desktop", - "mobile", - "other"]; - deserializer.deserialize_struct("DeviceType", VARIANTS, EnumVisitor) - } -} - -impl ::serde::ser::Serialize for DeviceType { - fn serialize(&self, serializer: S) -> Result { - // union serializer - use serde::ser::SerializeStruct; - match self { - DeviceType::Desktop => { - // unit - let mut s = serializer.serialize_struct("DeviceType", 1)?; - s.serialize_field(".tag", "desktop")?; - s.end() - } - DeviceType::Mobile => { - // unit - let mut s = serializer.serialize_struct("DeviceType", 1)?; - s.serialize_field(".tag", "mobile")?; - s.end() - } - DeviceType::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) - } - } -} - -/// Disconnected device. +/// Opened a stack. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct DeviceUnlinkDetails { - /// True if the user requested to delete data after device unlink, false otherwise. - pub delete_data: bool, - /// Session unique id. - pub session_info: Option, - /// The device name. Might be missing due to historical data gap. - pub display_name: Option, +pub struct DashOpenedStackDetails { + /// The name of the stack. + pub stack_name: String, + /// The type of stack backend. + pub stack_type: Option, } -impl DeviceUnlinkDetails { - pub fn new(delete_data: bool) -> Self { - DeviceUnlinkDetails { - delete_data, - session_info: None, - display_name: None, +impl DashOpenedStackDetails { + pub fn new(stack_name: String) -> Self { + DashOpenedStackDetails { + stack_name, + stack_type: None, } } - pub fn with_session_info(mut self, value: SessionLogInfo) -> Self { - self.session_info = Some(value); - self - } - - pub fn with_display_name(mut self, value: String) -> Self { - self.display_name = Some(value); + pub fn with_stack_type(mut self, value: DashStackType) -> Self { + self.stack_type = Some(value); self } } -const DEVICE_UNLINK_DETAILS_FIELDS: &[&str] = &["delete_data", - "session_info", - "display_name"]; -impl DeviceUnlinkDetails { +const DASH_OPENED_STACK_DETAILS_FIELDS: &[&str] = &["stack_name", + "stack_type"]; +impl DashOpenedStackDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_delete_data = None; - let mut field_session_info = None; - let mut field_display_name = None; + ) -> Result, V::Error> { + let mut field_stack_name = None; + let mut field_stack_type = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "delete_data" => { - if field_delete_data.is_some() { - return Err(::serde::de::Error::duplicate_field("delete_data")); + "stack_name" => { + if field_stack_name.is_some() { + return Err(::serde::de::Error::duplicate_field("stack_name")); } - field_delete_data = Some(map.next_value()?); + field_stack_name = Some(map.next_value()?); } - "session_info" => { - if field_session_info.is_some() { - return Err(::serde::de::Error::duplicate_field("session_info")); - } - field_session_info = Some(map.next_value()?); - } - "display_name" => { - if field_display_name.is_some() { - return Err(::serde::de::Error::duplicate_field("display_name")); + "stack_type" => { + if field_stack_type.is_some() { + return Err(::serde::de::Error::duplicate_field("stack_type")); } - field_display_name = Some(map.next_value()?); + field_stack_type = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -15087,10 +17047,9 @@ impl DeviceUnlinkDetails { if optional && nothing { return Ok(None); } - let result = DeviceUnlinkDetails { - delete_data: field_delete_data.ok_or_else(|| ::serde::de::Error::missing_field("delete_data"))?, - session_info: field_session_info.and_then(Option::flatten), - display_name: field_display_name.and_then(Option::flatten), + let result = DashOpenedStackDetails { + stack_name: field_stack_name.ok_or_else(|| ::serde::de::Error::missing_field("stack_name"))?, + stack_type: field_stack_type.and_then(Option::flatten), }; Ok(Some(result)) } @@ -15100,64 +17059,152 @@ impl DeviceUnlinkDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("delete_data", &self.delete_data)?; - if let Some(val) = &self.session_info { - s.serialize_field("session_info", val)?; + s.serialize_field("stack_name", &self.stack_name)?; + if let Some(val) = &self.stack_type { + s.serialize_field("stack_type", val)?; } - if let Some(val) = &self.display_name { - s.serialize_field("display_name", val)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for DashOpenedStackDetails { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = DashOpenedStackDetails; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a DashOpenedStackDetails struct") + } + fn visit_map>(self, map: V) -> Result { + DashOpenedStackDetails::internal_deserialize(map) + } + } + deserializer.deserialize_struct("DashOpenedStackDetails", DASH_OPENED_STACK_DETAILS_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for DashOpenedStackDetails { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("DashOpenedStackDetails", 2)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct DashOpenedStackType { + pub description: String, +} + +impl DashOpenedStackType { + pub fn new(description: String) -> Self { + DashOpenedStackType { + description, + } + } +} + +const DASH_OPENED_STACK_TYPE_FIELDS: &[&str] = &["description"]; +impl DashOpenedStackType { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_description = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); + } + field_description = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } + } + } + if optional && nothing { + return Ok(None); } + let result = DashOpenedStackType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("description", &self.description)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for DeviceUnlinkDetails { +impl<'de> ::serde::de::Deserialize<'de> for DashOpenedStackType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = DeviceUnlinkDetails; + type Value = DashOpenedStackType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a DeviceUnlinkDetails struct") + f.write_str("a DashOpenedStackType struct") } fn visit_map>(self, map: V) -> Result { - DeviceUnlinkDetails::internal_deserialize(map) + DashOpenedStackType::internal_deserialize(map) } } - deserializer.deserialize_struct("DeviceUnlinkDetails", DEVICE_UNLINK_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("DashOpenedStackType", DASH_OPENED_STACK_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for DeviceUnlinkDetails { +impl ::serde::ser::Serialize for DashOpenedStackType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("DeviceUnlinkDetails", 3)?; + let mut s = serializer.serialize_struct("DashOpenedStackType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } +/// The new preview opt-out status #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // variants may be added in the future -pub enum DeviceUnlinkPolicy { - Keep, - Remove, +pub enum DashPreviewOptOutStatus { + OptedIn, + OptedOut, /// Catch-all used for unrecognized values returned from the server. Encountering this value /// typically indicates that this SDK version is out of date. Other, } -impl<'de> ::serde::de::Deserialize<'de> for DeviceUnlinkPolicy { +impl<'de> ::serde::de::Deserialize<'de> for DashPreviewOptOutStatus { fn deserialize>(deserializer: D) -> Result { // union deserializer use serde::de::{self, MapAccess, Visitor}; struct EnumVisitor; impl<'de> Visitor<'de> for EnumVisitor { - type Value = DeviceUnlinkPolicy; + type Value = DashPreviewOptOutStatus; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a DeviceUnlinkPolicy structure") + f.write_str("a DashPreviewOptOutStatus structure") } fn visit_map>(self, mut map: V) -> Result { let tag: &str = match map.next_key()? { @@ -15165,79 +17212,81 @@ impl<'de> ::serde::de::Deserialize<'de> for DeviceUnlinkPolicy { _ => return Err(de::Error::missing_field(".tag")) }; let value = match tag { - "keep" => DeviceUnlinkPolicy::Keep, - "remove" => DeviceUnlinkPolicy::Remove, - _ => DeviceUnlinkPolicy::Other, + "opted_in" => DashPreviewOptOutStatus::OptedIn, + "opted_out" => DashPreviewOptOutStatus::OptedOut, + _ => DashPreviewOptOutStatus::Other, }; crate::eat_json_fields(&mut map)?; Ok(value) } } - const VARIANTS: &[&str] = &["keep", - "remove", + const VARIANTS: &[&str] = &["opted_in", + "opted_out", "other"]; - deserializer.deserialize_struct("DeviceUnlinkPolicy", VARIANTS, EnumVisitor) + deserializer.deserialize_struct("DashPreviewOptOutStatus", VARIANTS, EnumVisitor) } } -impl ::serde::ser::Serialize for DeviceUnlinkPolicy { +impl ::serde::ser::Serialize for DashPreviewOptOutStatus { fn serialize(&self, serializer: S) -> Result { // union serializer use serde::ser::SerializeStruct; match self { - DeviceUnlinkPolicy::Keep => { + DashPreviewOptOutStatus::OptedIn => { // unit - let mut s = serializer.serialize_struct("DeviceUnlinkPolicy", 1)?; - s.serialize_field(".tag", "keep")?; + let mut s = serializer.serialize_struct("DashPreviewOptOutStatus", 1)?; + s.serialize_field(".tag", "opted_in")?; s.end() } - DeviceUnlinkPolicy::Remove => { + DashPreviewOptOutStatus::OptedOut => { // unit - let mut s = serializer.serialize_struct("DeviceUnlinkPolicy", 1)?; - s.serialize_field(".tag", "remove")?; + let mut s = serializer.serialize_struct("DashPreviewOptOutStatus", 1)?; + s.serialize_field(".tag", "opted_out")?; s.end() } - DeviceUnlinkPolicy::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) + DashPreviewOptOutStatus::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) } } } +/// Changed the preview opt-out status. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct DeviceUnlinkType { - pub description: String, +pub struct DashPreviewOptOutStatusChangedDetails { + /// The new preview opt-out status. + pub opt_out_status: DashPreviewOptOutStatus, } -impl DeviceUnlinkType { - pub fn new(description: String) -> Self { - DeviceUnlinkType { - description, +impl DashPreviewOptOutStatusChangedDetails { + pub fn new(opt_out_status: DashPreviewOptOutStatus) -> Self { + DashPreviewOptOutStatusChangedDetails { + opt_out_status, } } } -const DEVICE_UNLINK_TYPE_FIELDS: &[&str] = &["description"]; -impl DeviceUnlinkType { +const DASH_PREVIEW_OPT_OUT_STATUS_CHANGED_DETAILS_FIELDS: &[&str] = &["opt_out_status"]; +impl DashPreviewOptOutStatusChangedDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_description = None; + ) -> Result, V::Error> { + let mut field_opt_out_status = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "description" => { - if field_description.is_some() { - return Err(::serde::de::Error::duplicate_field("description")); + "opt_out_status" => { + if field_opt_out_status.is_some() { + return Err(::serde::de::Error::duplicate_field("opt_out_status")); } - field_description = Some(map.next_value()?); + field_opt_out_status = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -15248,8 +17297,8 @@ impl DeviceUnlinkType { if optional && nothing { return Ok(None); } - let result = DeviceUnlinkType { - description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + let result = DashPreviewOptOutStatusChangedDetails { + opt_out_status: field_opt_out_status.ok_or_else(|| ::serde::de::Error::missing_field("opt_out_status"))?, }; Ok(Some(result)) } @@ -15259,109 +17308,65 @@ impl DeviceUnlinkType { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("description", &self.description)?; + s.serialize_field("opt_out_status", &self.opt_out_status)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for DeviceUnlinkType { +impl<'de> ::serde::de::Deserialize<'de> for DashPreviewOptOutStatusChangedDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = DeviceUnlinkType; + type Value = DashPreviewOptOutStatusChangedDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a DeviceUnlinkType struct") + f.write_str("a DashPreviewOptOutStatusChangedDetails struct") } fn visit_map>(self, map: V) -> Result { - DeviceUnlinkType::internal_deserialize(map) + DashPreviewOptOutStatusChangedDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("DeviceUnlinkType", DEVICE_UNLINK_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("DashPreviewOptOutStatusChangedDetails", DASH_PREVIEW_OPT_OUT_STATUS_CHANGED_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for DeviceUnlinkType { +impl ::serde::ser::Serialize for DashPreviewOptOutStatusChangedDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("DeviceUnlinkType", 1)?; + let mut s = serializer.serialize_struct("DashPreviewOptOutStatusChangedDetails", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Added members to directory restrictions list. -#[derive(Debug, Clone, PartialEq, Eq, Default)] -#[non_exhaustive] // structs may have more fields added in the future. -pub struct DirectoryRestrictionsAddMembersDetails { -} - -const DIRECTORY_RESTRICTIONS_ADD_MEMBERS_DETAILS_FIELDS: &[&str] = &[]; -impl DirectoryRestrictionsAddMembersDetails { - // no _opt deserializer - pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( - mut map: V, - ) -> Result { - // ignore any fields found; none are presently recognized - crate::eat_json_fields(&mut map)?; - Ok(DirectoryRestrictionsAddMembersDetails {}) - } -} - -impl<'de> ::serde::de::Deserialize<'de> for DirectoryRestrictionsAddMembersDetails { - fn deserialize>(deserializer: D) -> Result { - // struct deserializer - use serde::de::{MapAccess, Visitor}; - struct StructVisitor; - impl<'de> Visitor<'de> for StructVisitor { - type Value = DirectoryRestrictionsAddMembersDetails; - fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a DirectoryRestrictionsAddMembersDetails struct") - } - fn visit_map>(self, map: V) -> Result { - DirectoryRestrictionsAddMembersDetails::internal_deserialize(map) - } - } - deserializer.deserialize_struct("DirectoryRestrictionsAddMembersDetails", DIRECTORY_RESTRICTIONS_ADD_MEMBERS_DETAILS_FIELDS, StructVisitor) - } -} - -impl ::serde::ser::Serialize for DirectoryRestrictionsAddMembersDetails { - fn serialize(&self, serializer: S) -> Result { - // struct serializer - use serde::ser::SerializeStruct; - serializer.serialize_struct("DirectoryRestrictionsAddMembersDetails", 0)?.end() - } -} - #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct DirectoryRestrictionsAddMembersType { +pub struct DashPreviewOptOutStatusChangedType { pub description: String, } -impl DirectoryRestrictionsAddMembersType { +impl DashPreviewOptOutStatusChangedType { pub fn new(description: String) -> Self { - DirectoryRestrictionsAddMembersType { + DashPreviewOptOutStatusChangedType { description, } } } -const DIRECTORY_RESTRICTIONS_ADD_MEMBERS_TYPE_FIELDS: &[&str] = &["description"]; -impl DirectoryRestrictionsAddMembersType { +const DASH_PREVIEW_OPT_OUT_STATUS_CHANGED_TYPE_FIELDS: &[&str] = &["description"]; +impl DashPreviewOptOutStatusChangedType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -15382,7 +17387,7 @@ impl DirectoryRestrictionsAddMembersType { if optional && nothing { return Ok(None); } - let result = DirectoryRestrictionsAddMembersType { + let result = DashPreviewOptOutStatusChangedType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -15398,104 +17403,165 @@ impl DirectoryRestrictionsAddMembersType { } } -impl<'de> ::serde::de::Deserialize<'de> for DirectoryRestrictionsAddMembersType { +impl<'de> ::serde::de::Deserialize<'de> for DashPreviewOptOutStatusChangedType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = DirectoryRestrictionsAddMembersType; + type Value = DashPreviewOptOutStatusChangedType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a DirectoryRestrictionsAddMembersType struct") + f.write_str("a DashPreviewOptOutStatusChangedType struct") } fn visit_map>(self, map: V) -> Result { - DirectoryRestrictionsAddMembersType::internal_deserialize(map) + DashPreviewOptOutStatusChangedType::internal_deserialize(map) } } - deserializer.deserialize_struct("DirectoryRestrictionsAddMembersType", DIRECTORY_RESTRICTIONS_ADD_MEMBERS_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("DashPreviewOptOutStatusChangedType", DASH_PREVIEW_OPT_OUT_STATUS_CHANGED_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for DirectoryRestrictionsAddMembersType { +impl ::serde::ser::Serialize for DashPreviewOptOutStatusChangedType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("DirectoryRestrictionsAddMembersType", 1)?; + let mut s = serializer.serialize_struct("DashPreviewOptOutStatusChangedType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Removed members from directory restrictions list. -#[derive(Debug, Clone, PartialEq, Eq, Default)] +/// Disconnected a user connector. +#[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct DirectoryRestrictionsRemoveMembersDetails { +pub struct DashRemovedConnectorDetails { + /// The name of the Connector. + pub connector_name: String, + /// The status of the Connector. + pub connector_status: DashConnectorStatus, } -const DIRECTORY_RESTRICTIONS_REMOVE_MEMBERS_DETAILS_FIELDS: &[&str] = &[]; -impl DirectoryRestrictionsRemoveMembersDetails { - // no _opt deserializer +impl DashRemovedConnectorDetails { + pub fn new(connector_name: String, connector_status: DashConnectorStatus) -> Self { + DashRemovedConnectorDetails { + connector_name, + connector_status, + } + } +} + +const DASH_REMOVED_CONNECTOR_DETAILS_FIELDS: &[&str] = &["connector_name", + "connector_status"]; +impl DashRemovedConnectorDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - ) -> Result { - // ignore any fields found; none are presently recognized - crate::eat_json_fields(&mut map)?; - Ok(DirectoryRestrictionsRemoveMembersDetails {}) + optional: bool, + ) -> Result, V::Error> { + let mut field_connector_name = None; + let mut field_connector_status = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "connector_name" => { + if field_connector_name.is_some() { + return Err(::serde::de::Error::duplicate_field("connector_name")); + } + field_connector_name = Some(map.next_value()?); + } + "connector_status" => { + if field_connector_status.is_some() { + return Err(::serde::de::Error::duplicate_field("connector_status")); + } + field_connector_status = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } + } + } + if optional && nothing { + return Ok(None); + } + let result = DashRemovedConnectorDetails { + connector_name: field_connector_name.ok_or_else(|| ::serde::de::Error::missing_field("connector_name"))?, + connector_status: field_connector_status.ok_or_else(|| ::serde::de::Error::missing_field("connector_status"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("connector_name", &self.connector_name)?; + s.serialize_field("connector_status", &self.connector_status)?; + Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for DirectoryRestrictionsRemoveMembersDetails { +impl<'de> ::serde::de::Deserialize<'de> for DashRemovedConnectorDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = DirectoryRestrictionsRemoveMembersDetails; + type Value = DashRemovedConnectorDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a DirectoryRestrictionsRemoveMembersDetails struct") + f.write_str("a DashRemovedConnectorDetails struct") } fn visit_map>(self, map: V) -> Result { - DirectoryRestrictionsRemoveMembersDetails::internal_deserialize(map) + DashRemovedConnectorDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("DirectoryRestrictionsRemoveMembersDetails", DIRECTORY_RESTRICTIONS_REMOVE_MEMBERS_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("DashRemovedConnectorDetails", DASH_REMOVED_CONNECTOR_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for DirectoryRestrictionsRemoveMembersDetails { +impl ::serde::ser::Serialize for DashRemovedConnectorDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - serializer.serialize_struct("DirectoryRestrictionsRemoveMembersDetails", 0)?.end() + let mut s = serializer.serialize_struct("DashRemovedConnectorDetails", 2)?; + self.internal_serialize::(&mut s)?; + s.end() } } #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct DirectoryRestrictionsRemoveMembersType { +pub struct DashRemovedConnectorType { pub description: String, } -impl DirectoryRestrictionsRemoveMembersType { +impl DashRemovedConnectorType { pub fn new(description: String) -> Self { - DirectoryRestrictionsRemoveMembersType { + DashRemovedConnectorType { description, } } } -const DIRECTORY_RESTRICTIONS_REMOVE_MEMBERS_TYPE_FIELDS: &[&str] = &["description"]; -impl DirectoryRestrictionsRemoveMembersType { +const DASH_REMOVED_CONNECTOR_TYPE_FIELDS: &[&str] = &["description"]; +impl DashRemovedConnectorType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -15516,7 +17582,7 @@ impl DirectoryRestrictionsRemoveMembersType { if optional && nothing { return Ok(None); } - let result = DirectoryRestrictionsRemoveMembersType { + let result = DashRemovedConnectorType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -15532,104 +17598,185 @@ impl DirectoryRestrictionsRemoveMembersType { } } -impl<'de> ::serde::de::Deserialize<'de> for DirectoryRestrictionsRemoveMembersType { +impl<'de> ::serde::de::Deserialize<'de> for DashRemovedConnectorType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = DirectoryRestrictionsRemoveMembersType; + type Value = DashRemovedConnectorType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a DirectoryRestrictionsRemoveMembersType struct") + f.write_str("a DashRemovedConnectorType struct") } fn visit_map>(self, map: V) -> Result { - DirectoryRestrictionsRemoveMembersType::internal_deserialize(map) + DashRemovedConnectorType::internal_deserialize(map) } } - deserializer.deserialize_struct("DirectoryRestrictionsRemoveMembersType", DIRECTORY_RESTRICTIONS_REMOVE_MEMBERS_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("DashRemovedConnectorType", DASH_REMOVED_CONNECTOR_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for DirectoryRestrictionsRemoveMembersType { +impl ::serde::ser::Serialize for DashRemovedConnectorType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("DirectoryRestrictionsRemoveMembersType", 1)?; + let mut s = serializer.serialize_struct("DashRemovedConnectorType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Disabled domain invites. -#[derive(Debug, Clone, PartialEq, Eq, Default)] +/// Removed a link from a stack. +#[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct DisabledDomainInvitesDetails { +pub struct DashRemovedLinkFromStackDetails { + /// The name of the stack. + pub stack_name: String, + /// The link to the item in the stack. + pub stack_item_link: String, + /// The type of stack backend. + pub stack_type: Option, } -const DISABLED_DOMAIN_INVITES_DETAILS_FIELDS: &[&str] = &[]; -impl DisabledDomainInvitesDetails { - // no _opt deserializer +impl DashRemovedLinkFromStackDetails { + pub fn new(stack_name: String, stack_item_link: String) -> Self { + DashRemovedLinkFromStackDetails { + stack_name, + stack_item_link, + stack_type: None, + } + } + + pub fn with_stack_type(mut self, value: DashStackType) -> Self { + self.stack_type = Some(value); + self + } +} + +const DASH_REMOVED_LINK_FROM_STACK_DETAILS_FIELDS: &[&str] = &["stack_name", + "stack_item_link", + "stack_type"]; +impl DashRemovedLinkFromStackDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - ) -> Result { - // ignore any fields found; none are presently recognized - crate::eat_json_fields(&mut map)?; - Ok(DisabledDomainInvitesDetails {}) + optional: bool, + ) -> Result, V::Error> { + let mut field_stack_name = None; + let mut field_stack_item_link = None; + let mut field_stack_type = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "stack_name" => { + if field_stack_name.is_some() { + return Err(::serde::de::Error::duplicate_field("stack_name")); + } + field_stack_name = Some(map.next_value()?); + } + "stack_item_link" => { + if field_stack_item_link.is_some() { + return Err(::serde::de::Error::duplicate_field("stack_item_link")); + } + field_stack_item_link = Some(map.next_value()?); + } + "stack_type" => { + if field_stack_type.is_some() { + return Err(::serde::de::Error::duplicate_field("stack_type")); + } + field_stack_type = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } + } + } + if optional && nothing { + return Ok(None); + } + let result = DashRemovedLinkFromStackDetails { + stack_name: field_stack_name.ok_or_else(|| ::serde::de::Error::missing_field("stack_name"))?, + stack_item_link: field_stack_item_link.ok_or_else(|| ::serde::de::Error::missing_field("stack_item_link"))?, + stack_type: field_stack_type.and_then(Option::flatten), + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("stack_name", &self.stack_name)?; + s.serialize_field("stack_item_link", &self.stack_item_link)?; + if let Some(val) = &self.stack_type { + s.serialize_field("stack_type", val)?; + } + Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for DisabledDomainInvitesDetails { +impl<'de> ::serde::de::Deserialize<'de> for DashRemovedLinkFromStackDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = DisabledDomainInvitesDetails; + type Value = DashRemovedLinkFromStackDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a DisabledDomainInvitesDetails struct") + f.write_str("a DashRemovedLinkFromStackDetails struct") } fn visit_map>(self, map: V) -> Result { - DisabledDomainInvitesDetails::internal_deserialize(map) + DashRemovedLinkFromStackDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("DisabledDomainInvitesDetails", DISABLED_DOMAIN_INVITES_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("DashRemovedLinkFromStackDetails", DASH_REMOVED_LINK_FROM_STACK_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for DisabledDomainInvitesDetails { +impl ::serde::ser::Serialize for DashRemovedLinkFromStackDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - serializer.serialize_struct("DisabledDomainInvitesDetails", 0)?.end() + let mut s = serializer.serialize_struct("DashRemovedLinkFromStackDetails", 3)?; + self.internal_serialize::(&mut s)?; + s.end() } } #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct DisabledDomainInvitesType { +pub struct DashRemovedLinkFromStackType { pub description: String, } -impl DisabledDomainInvitesType { +impl DashRemovedLinkFromStackType { pub fn new(description: String) -> Self { - DisabledDomainInvitesType { + DashRemovedLinkFromStackType { description, } } } -const DISABLED_DOMAIN_INVITES_TYPE_FIELDS: &[&str] = &["description"]; -impl DisabledDomainInvitesType { +const DASH_REMOVED_LINK_FROM_STACK_TYPE_FIELDS: &[&str] = &["description"]; +impl DashRemovedLinkFromStackType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -15650,7 +17797,7 @@ impl DisabledDomainInvitesType { if optional && nothing { return Ok(None); } - let result = DisabledDomainInvitesType { + let result = DashRemovedLinkFromStackType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -15666,167 +17813,172 @@ impl DisabledDomainInvitesType { } } -impl<'de> ::serde::de::Deserialize<'de> for DisabledDomainInvitesType { +impl<'de> ::serde::de::Deserialize<'de> for DashRemovedLinkFromStackType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = DisabledDomainInvitesType; + type Value = DashRemovedLinkFromStackType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a DisabledDomainInvitesType struct") + f.write_str("a DashRemovedLinkFromStackType struct") } fn visit_map>(self, map: V) -> Result { - DisabledDomainInvitesType::internal_deserialize(map) + DashRemovedLinkFromStackType::internal_deserialize(map) } } - deserializer.deserialize_struct("DisabledDomainInvitesType", DISABLED_DOMAIN_INVITES_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("DashRemovedLinkFromStackType", DASH_REMOVED_LINK_FROM_STACK_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for DisabledDomainInvitesType { +impl ::serde::ser::Serialize for DashRemovedLinkFromStackType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("DisabledDomainInvitesType", 1)?; + let mut s = serializer.serialize_struct("DashRemovedLinkFromStackType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } +/// Removed a shared link to a stack. #[derive(Debug, Clone, PartialEq, Eq)] -#[non_exhaustive] // variants may be added in the future -pub enum DispositionActionType { - AutomaticDelete, - AutomaticPermanentlyDelete, - /// Catch-all used for unrecognized values returned from the server. Encountering this value - /// typically indicates that this SDK version is out of date. - Other, +#[non_exhaustive] // structs may have more fields added in the future. +pub struct DashRemovedSharedLinkToStackDetails { + /// The name of the stack. + pub stack_name: String, + /// The type of stack backend. + pub stack_type: Option, } -impl<'de> ::serde::de::Deserialize<'de> for DispositionActionType { - fn deserialize>(deserializer: D) -> Result { - // union deserializer - use serde::de::{self, MapAccess, Visitor}; - struct EnumVisitor; - impl<'de> Visitor<'de> for EnumVisitor { - type Value = DispositionActionType; - fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a DispositionActionType structure") - } - fn visit_map>(self, mut map: V) -> Result { - let tag: &str = match map.next_key()? { - Some(".tag") => map.next_value()?, - _ => return Err(de::Error::missing_field(".tag")) - }; - let value = match tag { - "automatic_delete" => DispositionActionType::AutomaticDelete, - "automatic_permanently_delete" => DispositionActionType::AutomaticPermanentlyDelete, - _ => DispositionActionType::Other, - }; - crate::eat_json_fields(&mut map)?; - Ok(value) - } +impl DashRemovedSharedLinkToStackDetails { + pub fn new(stack_name: String) -> Self { + DashRemovedSharedLinkToStackDetails { + stack_name, + stack_type: None, } - const VARIANTS: &[&str] = &["automatic_delete", - "automatic_permanently_delete", - "other"]; - deserializer.deserialize_struct("DispositionActionType", VARIANTS, EnumVisitor) } -} -impl ::serde::ser::Serialize for DispositionActionType { - fn serialize(&self, serializer: S) -> Result { - // union serializer - use serde::ser::SerializeStruct; - match self { - DispositionActionType::AutomaticDelete => { - // unit - let mut s = serializer.serialize_struct("DispositionActionType", 1)?; - s.serialize_field(".tag", "automatic_delete")?; - s.end() - } - DispositionActionType::AutomaticPermanentlyDelete => { - // unit - let mut s = serializer.serialize_struct("DispositionActionType", 1)?; - s.serialize_field(".tag", "automatic_permanently_delete")?; - s.end() - } - DispositionActionType::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) - } + pub fn with_stack_type(mut self, value: DashStackType) -> Self { + self.stack_type = Some(value); + self } } -/// Approved user's request to join team. -#[derive(Debug, Clone, PartialEq, Eq, Default)] -#[non_exhaustive] // structs may have more fields added in the future. -pub struct DomainInvitesApproveRequestToJoinTeamDetails { -} - -const DOMAIN_INVITES_APPROVE_REQUEST_TO_JOIN_TEAM_DETAILS_FIELDS: &[&str] = &[]; -impl DomainInvitesApproveRequestToJoinTeamDetails { - // no _opt deserializer +const DASH_REMOVED_SHARED_LINK_TO_STACK_DETAILS_FIELDS: &[&str] = &["stack_name", + "stack_type"]; +impl DashRemovedSharedLinkToStackDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - ) -> Result { - // ignore any fields found; none are presently recognized - crate::eat_json_fields(&mut map)?; - Ok(DomainInvitesApproveRequestToJoinTeamDetails {}) + optional: bool, + ) -> Result, V::Error> { + let mut field_stack_name = None; + let mut field_stack_type = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "stack_name" => { + if field_stack_name.is_some() { + return Err(::serde::de::Error::duplicate_field("stack_name")); + } + field_stack_name = Some(map.next_value()?); + } + "stack_type" => { + if field_stack_type.is_some() { + return Err(::serde::de::Error::duplicate_field("stack_type")); + } + field_stack_type = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } + } + } + if optional && nothing { + return Ok(None); + } + let result = DashRemovedSharedLinkToStackDetails { + stack_name: field_stack_name.ok_or_else(|| ::serde::de::Error::missing_field("stack_name"))?, + stack_type: field_stack_type.and_then(Option::flatten), + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("stack_name", &self.stack_name)?; + if let Some(val) = &self.stack_type { + s.serialize_field("stack_type", val)?; + } + Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for DomainInvitesApproveRequestToJoinTeamDetails { +impl<'de> ::serde::de::Deserialize<'de> for DashRemovedSharedLinkToStackDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = DomainInvitesApproveRequestToJoinTeamDetails; + type Value = DashRemovedSharedLinkToStackDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a DomainInvitesApproveRequestToJoinTeamDetails struct") + f.write_str("a DashRemovedSharedLinkToStackDetails struct") } fn visit_map>(self, map: V) -> Result { - DomainInvitesApproveRequestToJoinTeamDetails::internal_deserialize(map) + DashRemovedSharedLinkToStackDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("DomainInvitesApproveRequestToJoinTeamDetails", DOMAIN_INVITES_APPROVE_REQUEST_TO_JOIN_TEAM_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("DashRemovedSharedLinkToStackDetails", DASH_REMOVED_SHARED_LINK_TO_STACK_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for DomainInvitesApproveRequestToJoinTeamDetails { +impl ::serde::ser::Serialize for DashRemovedSharedLinkToStackDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - serializer.serialize_struct("DomainInvitesApproveRequestToJoinTeamDetails", 0)?.end() + let mut s = serializer.serialize_struct("DashRemovedSharedLinkToStackDetails", 2)?; + self.internal_serialize::(&mut s)?; + s.end() } } #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct DomainInvitesApproveRequestToJoinTeamType { +pub struct DashRemovedSharedLinkToStackType { pub description: String, } -impl DomainInvitesApproveRequestToJoinTeamType { +impl DashRemovedSharedLinkToStackType { pub fn new(description: String) -> Self { - DomainInvitesApproveRequestToJoinTeamType { + DashRemovedSharedLinkToStackType { description, } } } -const DOMAIN_INVITES_APPROVE_REQUEST_TO_JOIN_TEAM_TYPE_FIELDS: &[&str] = &["description"]; -impl DomainInvitesApproveRequestToJoinTeamType { +const DASH_REMOVED_SHARED_LINK_TO_STACK_TYPE_FIELDS: &[&str] = &["description"]; +impl DashRemovedSharedLinkToStackType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -15847,7 +17999,7 @@ impl DomainInvitesApproveRequestToJoinTeamType { if optional && nothing { return Ok(None); } - let result = DomainInvitesApproveRequestToJoinTeamType { + let result = DashRemovedSharedLinkToStackType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -15863,104 +18015,152 @@ impl DomainInvitesApproveRequestToJoinTeamType { } } -impl<'de> ::serde::de::Deserialize<'de> for DomainInvitesApproveRequestToJoinTeamType { +impl<'de> ::serde::de::Deserialize<'de> for DashRemovedSharedLinkToStackType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = DomainInvitesApproveRequestToJoinTeamType; + type Value = DashRemovedSharedLinkToStackType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a DomainInvitesApproveRequestToJoinTeamType struct") + f.write_str("a DashRemovedSharedLinkToStackType struct") } fn visit_map>(self, map: V) -> Result { - DomainInvitesApproveRequestToJoinTeamType::internal_deserialize(map) + DashRemovedSharedLinkToStackType::internal_deserialize(map) } } - deserializer.deserialize_struct("DomainInvitesApproveRequestToJoinTeamType", DOMAIN_INVITES_APPROVE_REQUEST_TO_JOIN_TEAM_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("DashRemovedSharedLinkToStackType", DASH_REMOVED_SHARED_LINK_TO_STACK_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for DomainInvitesApproveRequestToJoinTeamType { +impl ::serde::ser::Serialize for DashRemovedSharedLinkToStackType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("DomainInvitesApproveRequestToJoinTeamType", 1)?; + let mut s = serializer.serialize_struct("DashRemovedSharedLinkToStackType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Declined user's request to join team. -#[derive(Debug, Clone, PartialEq, Eq, Default)] +/// Admin removed an email domain from the team allowlist. +#[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct DomainInvitesDeclineRequestToJoinTeamDetails { -} - -const DOMAIN_INVITES_DECLINE_REQUEST_TO_JOIN_TEAM_DETAILS_FIELDS: &[&str] = &[]; -impl DomainInvitesDeclineRequestToJoinTeamDetails { - // no _opt deserializer - pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( - mut map: V, - ) -> Result { - // ignore any fields found; none are presently recognized - crate::eat_json_fields(&mut map)?; - Ok(DomainInvitesDeclineRequestToJoinTeamDetails {}) - } +pub struct DashRemovedTeamEmailDomainAllowlistDetails { + /// The email domain that gets added/removed from the team allowlist. + pub email_domain: String, } -impl<'de> ::serde::de::Deserialize<'de> for DomainInvitesDeclineRequestToJoinTeamDetails { - fn deserialize>(deserializer: D) -> Result { - // struct deserializer - use serde::de::{MapAccess, Visitor}; - struct StructVisitor; - impl<'de> Visitor<'de> for StructVisitor { - type Value = DomainInvitesDeclineRequestToJoinTeamDetails; - fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a DomainInvitesDeclineRequestToJoinTeamDetails struct") - } - fn visit_map>(self, map: V) -> Result { - DomainInvitesDeclineRequestToJoinTeamDetails::internal_deserialize(map) - } +impl DashRemovedTeamEmailDomainAllowlistDetails { + pub fn new(email_domain: String) -> Self { + DashRemovedTeamEmailDomainAllowlistDetails { + email_domain, } - deserializer.deserialize_struct("DomainInvitesDeclineRequestToJoinTeamDetails", DOMAIN_INVITES_DECLINE_REQUEST_TO_JOIN_TEAM_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for DomainInvitesDeclineRequestToJoinTeamDetails { +const DASH_REMOVED_TEAM_EMAIL_DOMAIN_ALLOWLIST_DETAILS_FIELDS: &[&str] = &["email_domain"]; +impl DashRemovedTeamEmailDomainAllowlistDetails { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_email_domain = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "email_domain" => { + if field_email_domain.is_some() { + return Err(::serde::de::Error::duplicate_field("email_domain")); + } + field_email_domain = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } + } + } + if optional && nothing { + return Ok(None); + } + let result = DashRemovedTeamEmailDomainAllowlistDetails { + email_domain: field_email_domain.ok_or_else(|| ::serde::de::Error::missing_field("email_domain"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("email_domain", &self.email_domain)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for DashRemovedTeamEmailDomainAllowlistDetails { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = DashRemovedTeamEmailDomainAllowlistDetails; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a DashRemovedTeamEmailDomainAllowlistDetails struct") + } + fn visit_map>(self, map: V) -> Result { + DashRemovedTeamEmailDomainAllowlistDetails::internal_deserialize(map) + } + } + deserializer.deserialize_struct("DashRemovedTeamEmailDomainAllowlistDetails", DASH_REMOVED_TEAM_EMAIL_DOMAIN_ALLOWLIST_DETAILS_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for DashRemovedTeamEmailDomainAllowlistDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - serializer.serialize_struct("DomainInvitesDeclineRequestToJoinTeamDetails", 0)?.end() + let mut s = serializer.serialize_struct("DashRemovedTeamEmailDomainAllowlistDetails", 1)?; + self.internal_serialize::(&mut s)?; + s.end() } } #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct DomainInvitesDeclineRequestToJoinTeamType { +pub struct DashRemovedTeamEmailDomainAllowlistType { pub description: String, } -impl DomainInvitesDeclineRequestToJoinTeamType { +impl DashRemovedTeamEmailDomainAllowlistType { pub fn new(description: String) -> Self { - DomainInvitesDeclineRequestToJoinTeamType { + DashRemovedTeamEmailDomainAllowlistType { description, } } } -const DOMAIN_INVITES_DECLINE_REQUEST_TO_JOIN_TEAM_TYPE_FIELDS: &[&str] = &["description"]; -impl DomainInvitesDeclineRequestToJoinTeamType { +const DASH_REMOVED_TEAM_EMAIL_DOMAIN_ALLOWLIST_TYPE_FIELDS: &[&str] = &["description"]; +impl DashRemovedTeamEmailDomainAllowlistType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -15981,7 +18181,7 @@ impl DomainInvitesDeclineRequestToJoinTeamType { if optional && nothing { return Ok(None); } - let result = DomainInvitesDeclineRequestToJoinTeamType { + let result = DashRemovedTeamEmailDomainAllowlistType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -15997,83 +18197,99 @@ impl DomainInvitesDeclineRequestToJoinTeamType { } } -impl<'de> ::serde::de::Deserialize<'de> for DomainInvitesDeclineRequestToJoinTeamType { +impl<'de> ::serde::de::Deserialize<'de> for DashRemovedTeamEmailDomainAllowlistType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = DomainInvitesDeclineRequestToJoinTeamType; + type Value = DashRemovedTeamEmailDomainAllowlistType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a DomainInvitesDeclineRequestToJoinTeamType struct") + f.write_str("a DashRemovedTeamEmailDomainAllowlistType struct") } fn visit_map>(self, map: V) -> Result { - DomainInvitesDeclineRequestToJoinTeamType::internal_deserialize(map) + DashRemovedTeamEmailDomainAllowlistType::internal_deserialize(map) } } - deserializer.deserialize_struct("DomainInvitesDeclineRequestToJoinTeamType", DOMAIN_INVITES_DECLINE_REQUEST_TO_JOIN_TEAM_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("DashRemovedTeamEmailDomainAllowlistType", DASH_REMOVED_TEAM_EMAIL_DOMAIN_ALLOWLIST_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for DomainInvitesDeclineRequestToJoinTeamType { +impl ::serde::ser::Serialize for DashRemovedTeamEmailDomainAllowlistType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("DomainInvitesDeclineRequestToJoinTeamType", 1)?; + let mut s = serializer.serialize_struct("DashRemovedTeamEmailDomainAllowlistType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Sent domain invites to existing domain accounts. +/// Renamed a stack. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct DomainInvitesEmailExistingUsersDetails { - /// Domain names. - pub domain_name: String, - /// Number of recipients. - pub num_recipients: u64, +pub struct DashRenamedStackDetails { + /// The old name of the stack. + pub old_name: String, + /// The new name of the stack. + pub new_name: String, + /// The type of stack backend. + pub stack_type: Option, } -impl DomainInvitesEmailExistingUsersDetails { - pub fn new(domain_name: String, num_recipients: u64) -> Self { - DomainInvitesEmailExistingUsersDetails { - domain_name, - num_recipients, +impl DashRenamedStackDetails { + pub fn new(old_name: String, new_name: String) -> Self { + DashRenamedStackDetails { + old_name, + new_name, + stack_type: None, } } + + pub fn with_stack_type(mut self, value: DashStackType) -> Self { + self.stack_type = Some(value); + self + } } -const DOMAIN_INVITES_EMAIL_EXISTING_USERS_DETAILS_FIELDS: &[&str] = &["domain_name", - "num_recipients"]; -impl DomainInvitesEmailExistingUsersDetails { +const DASH_RENAMED_STACK_DETAILS_FIELDS: &[&str] = &["old_name", + "new_name", + "stack_type"]; +impl DashRenamedStackDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_domain_name = None; - let mut field_num_recipients = None; + ) -> Result, V::Error> { + let mut field_old_name = None; + let mut field_new_name = None; + let mut field_stack_type = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "domain_name" => { - if field_domain_name.is_some() { - return Err(::serde::de::Error::duplicate_field("domain_name")); + "old_name" => { + if field_old_name.is_some() { + return Err(::serde::de::Error::duplicate_field("old_name")); } - field_domain_name = Some(map.next_value()?); + field_old_name = Some(map.next_value()?); } - "num_recipients" => { - if field_num_recipients.is_some() { - return Err(::serde::de::Error::duplicate_field("num_recipients")); + "new_name" => { + if field_new_name.is_some() { + return Err(::serde::de::Error::duplicate_field("new_name")); } - field_num_recipients = Some(map.next_value()?); + field_new_name = Some(map.next_value()?); + } + "stack_type" => { + if field_stack_type.is_some() { + return Err(::serde::de::Error::duplicate_field("stack_type")); + } + field_stack_type = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -16084,9 +18300,10 @@ impl DomainInvitesEmailExistingUsersDetails { if optional && nothing { return Ok(None); } - let result = DomainInvitesEmailExistingUsersDetails { - domain_name: field_domain_name.ok_or_else(|| ::serde::de::Error::missing_field("domain_name"))?, - num_recipients: field_num_recipients.ok_or_else(|| ::serde::de::Error::missing_field("num_recipients"))?, + let result = DashRenamedStackDetails { + old_name: field_old_name.ok_or_else(|| ::serde::de::Error::missing_field("old_name"))?, + new_name: field_new_name.ok_or_else(|| ::serde::de::Error::missing_field("new_name"))?, + stack_type: field_stack_type.and_then(Option::flatten), }; Ok(Some(result)) } @@ -16096,35 +18313,38 @@ impl DomainInvitesEmailExistingUsersDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("domain_name", &self.domain_name)?; - s.serialize_field("num_recipients", &self.num_recipients)?; + s.serialize_field("old_name", &self.old_name)?; + s.serialize_field("new_name", &self.new_name)?; + if let Some(val) = &self.stack_type { + s.serialize_field("stack_type", val)?; + } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for DomainInvitesEmailExistingUsersDetails { +impl<'de> ::serde::de::Deserialize<'de> for DashRenamedStackDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = DomainInvitesEmailExistingUsersDetails; + type Value = DashRenamedStackDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a DomainInvitesEmailExistingUsersDetails struct") + f.write_str("a DashRenamedStackDetails struct") } fn visit_map>(self, map: V) -> Result { - DomainInvitesEmailExistingUsersDetails::internal_deserialize(map) + DashRenamedStackDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("DomainInvitesEmailExistingUsersDetails", DOMAIN_INVITES_EMAIL_EXISTING_USERS_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("DashRenamedStackDetails", DASH_RENAMED_STACK_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for DomainInvitesEmailExistingUsersDetails { +impl ::serde::ser::Serialize for DashRenamedStackDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("DomainInvitesEmailExistingUsersDetails", 2)?; + let mut s = serializer.serialize_struct("DashRenamedStackDetails", 3)?; self.internal_serialize::(&mut s)?; s.end() } @@ -16132,30 +18352,30 @@ impl ::serde::ser::Serialize for DomainInvitesEmailExistingUsersDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct DomainInvitesEmailExistingUsersType { +pub struct DashRenamedStackType { pub description: String, } -impl DomainInvitesEmailExistingUsersType { +impl DashRenamedStackType { pub fn new(description: String) -> Self { - DomainInvitesEmailExistingUsersType { + DashRenamedStackType { description, } } } -const DOMAIN_INVITES_EMAIL_EXISTING_USERS_TYPE_FIELDS: &[&str] = &["description"]; -impl DomainInvitesEmailExistingUsersType { +const DASH_RENAMED_STACK_TYPE_FIELDS: &[&str] = &["description"]; +impl DashRenamedStackType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -16176,7 +18396,7 @@ impl DomainInvitesEmailExistingUsersType { if optional && nothing { return Ok(None); } - let result = DomainInvitesEmailExistingUsersType { + let result = DashRenamedStackType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -16192,104 +18412,172 @@ impl DomainInvitesEmailExistingUsersType { } } -impl<'de> ::serde::de::Deserialize<'de> for DomainInvitesEmailExistingUsersType { +impl<'de> ::serde::de::Deserialize<'de> for DashRenamedStackType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = DomainInvitesEmailExistingUsersType; + type Value = DashRenamedStackType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a DomainInvitesEmailExistingUsersType struct") + f.write_str("a DashRenamedStackType struct") } fn visit_map>(self, map: V) -> Result { - DomainInvitesEmailExistingUsersType::internal_deserialize(map) + DashRenamedStackType::internal_deserialize(map) } } - deserializer.deserialize_struct("DomainInvitesEmailExistingUsersType", DOMAIN_INVITES_EMAIL_EXISTING_USERS_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("DashRenamedStackType", DASH_RENAMED_STACK_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for DomainInvitesEmailExistingUsersType { +impl ::serde::ser::Serialize for DashRenamedStackType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("DomainInvitesEmailExistingUsersType", 1)?; + let mut s = serializer.serialize_struct("DashRenamedStackType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Requested to join team. -#[derive(Debug, Clone, PartialEq, Eq, Default)] +/// Shared a link to a stack. +#[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct DomainInvitesRequestToJoinTeamDetails { +pub struct DashSharedLinkToStackDetails { + /// The name of the stack. + pub stack_name: String, + /// The type of stack backend. + pub stack_type: Option, } -const DOMAIN_INVITES_REQUEST_TO_JOIN_TEAM_DETAILS_FIELDS: &[&str] = &[]; -impl DomainInvitesRequestToJoinTeamDetails { - // no _opt deserializer +impl DashSharedLinkToStackDetails { + pub fn new(stack_name: String) -> Self { + DashSharedLinkToStackDetails { + stack_name, + stack_type: None, + } + } + + pub fn with_stack_type(mut self, value: DashStackType) -> Self { + self.stack_type = Some(value); + self + } +} + +const DASH_SHARED_LINK_TO_STACK_DETAILS_FIELDS: &[&str] = &["stack_name", + "stack_type"]; +impl DashSharedLinkToStackDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - ) -> Result { - // ignore any fields found; none are presently recognized - crate::eat_json_fields(&mut map)?; - Ok(DomainInvitesRequestToJoinTeamDetails {}) + optional: bool, + ) -> Result, V::Error> { + let mut field_stack_name = None; + let mut field_stack_type = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "stack_name" => { + if field_stack_name.is_some() { + return Err(::serde::de::Error::duplicate_field("stack_name")); + } + field_stack_name = Some(map.next_value()?); + } + "stack_type" => { + if field_stack_type.is_some() { + return Err(::serde::de::Error::duplicate_field("stack_type")); + } + field_stack_type = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } + } + } + if optional && nothing { + return Ok(None); + } + let result = DashSharedLinkToStackDetails { + stack_name: field_stack_name.ok_or_else(|| ::serde::de::Error::missing_field("stack_name"))?, + stack_type: field_stack_type.and_then(Option::flatten), + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("stack_name", &self.stack_name)?; + if let Some(val) = &self.stack_type { + s.serialize_field("stack_type", val)?; + } + Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for DomainInvitesRequestToJoinTeamDetails { +impl<'de> ::serde::de::Deserialize<'de> for DashSharedLinkToStackDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = DomainInvitesRequestToJoinTeamDetails; + type Value = DashSharedLinkToStackDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a DomainInvitesRequestToJoinTeamDetails struct") + f.write_str("a DashSharedLinkToStackDetails struct") } fn visit_map>(self, map: V) -> Result { - DomainInvitesRequestToJoinTeamDetails::internal_deserialize(map) + DashSharedLinkToStackDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("DomainInvitesRequestToJoinTeamDetails", DOMAIN_INVITES_REQUEST_TO_JOIN_TEAM_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("DashSharedLinkToStackDetails", DASH_SHARED_LINK_TO_STACK_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for DomainInvitesRequestToJoinTeamDetails { +impl ::serde::ser::Serialize for DashSharedLinkToStackDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - serializer.serialize_struct("DomainInvitesRequestToJoinTeamDetails", 0)?.end() + let mut s = serializer.serialize_struct("DashSharedLinkToStackDetails", 2)?; + self.internal_serialize::(&mut s)?; + s.end() } } #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct DomainInvitesRequestToJoinTeamType { +pub struct DashSharedLinkToStackType { pub description: String, } -impl DomainInvitesRequestToJoinTeamType { +impl DashSharedLinkToStackType { pub fn new(description: String) -> Self { - DomainInvitesRequestToJoinTeamType { + DashSharedLinkToStackType { description, } } } -const DOMAIN_INVITES_REQUEST_TO_JOIN_TEAM_TYPE_FIELDS: &[&str] = &["description"]; -impl DomainInvitesRequestToJoinTeamType { +const DASH_SHARED_LINK_TO_STACK_TYPE_FIELDS: &[&str] = &["description"]; +impl DashSharedLinkToStackType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -16310,7 +18598,7 @@ impl DomainInvitesRequestToJoinTeamType { if optional && nothing { return Ok(None); } - let result = DomainInvitesRequestToJoinTeamType { + let result = DashSharedLinkToStackType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -16326,114 +18614,243 @@ impl DomainInvitesRequestToJoinTeamType { } } -impl<'de> ::serde::de::Deserialize<'de> for DomainInvitesRequestToJoinTeamType { +impl<'de> ::serde::de::Deserialize<'de> for DashSharedLinkToStackType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = DomainInvitesRequestToJoinTeamType; + type Value = DashSharedLinkToStackType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a DomainInvitesRequestToJoinTeamType struct") + f.write_str("a DashSharedLinkToStackType struct") } fn visit_map>(self, map: V) -> Result { - DomainInvitesRequestToJoinTeamType::internal_deserialize(map) + DashSharedLinkToStackType::internal_deserialize(map) } } - deserializer.deserialize_struct("DomainInvitesRequestToJoinTeamType", DOMAIN_INVITES_REQUEST_TO_JOIN_TEAM_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("DashSharedLinkToStackType", DASH_SHARED_LINK_TO_STACK_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for DomainInvitesRequestToJoinTeamType { +impl ::serde::ser::Serialize for DashSharedLinkToStackType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("DomainInvitesRequestToJoinTeamType", 1)?; + let mut s = serializer.serialize_struct("DashSharedLinkToStackType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Disabled "Automatically invite new users". -#[derive(Debug, Clone, PartialEq, Eq, Default)] -#[non_exhaustive] // structs may have more fields added in the future. -pub struct DomainInvitesSetInviteNewUserPrefToNoDetails { +/// The stack sharing scope +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // variants may be added in the future +pub enum DashStackSharingScope { + Invited, + Public, + Team, + Unknown, + /// Catch-all used for unrecognized values returned from the server. Encountering this value + /// typically indicates that this SDK version is out of date. + Other, } -const DOMAIN_INVITES_SET_INVITE_NEW_USER_PREF_TO_NO_DETAILS_FIELDS: &[&str] = &[]; -impl DomainInvitesSetInviteNewUserPrefToNoDetails { - // no _opt deserializer - pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( - mut map: V, - ) -> Result { - // ignore any fields found; none are presently recognized - crate::eat_json_fields(&mut map)?; - Ok(DomainInvitesSetInviteNewUserPrefToNoDetails {}) +impl<'de> ::serde::de::Deserialize<'de> for DashStackSharingScope { + fn deserialize>(deserializer: D) -> Result { + // union deserializer + use serde::de::{self, MapAccess, Visitor}; + struct EnumVisitor; + impl<'de> Visitor<'de> for EnumVisitor { + type Value = DashStackSharingScope; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a DashStackSharingScope structure") + } + fn visit_map>(self, mut map: V) -> Result { + let tag: &str = match map.next_key()? { + Some(".tag") => map.next_value()?, + _ => return Err(de::Error::missing_field(".tag")) + }; + let value = match tag { + "invited" => DashStackSharingScope::Invited, + "public" => DashStackSharingScope::Public, + "team" => DashStackSharingScope::Team, + "unknown" => DashStackSharingScope::Unknown, + _ => DashStackSharingScope::Other, + }; + crate::eat_json_fields(&mut map)?; + Ok(value) + } + } + const VARIANTS: &[&str] = &["invited", + "public", + "team", + "unknown", + "other"]; + deserializer.deserialize_struct("DashStackSharingScope", VARIANTS, EnumVisitor) } } -impl<'de> ::serde::de::Deserialize<'de> for DomainInvitesSetInviteNewUserPrefToNoDetails { +impl ::serde::ser::Serialize for DashStackSharingScope { + fn serialize(&self, serializer: S) -> Result { + // union serializer + use serde::ser::SerializeStruct; + match self { + DashStackSharingScope::Invited => { + // unit + let mut s = serializer.serialize_struct("DashStackSharingScope", 1)?; + s.serialize_field(".tag", "invited")?; + s.end() + } + DashStackSharingScope::Public => { + // unit + let mut s = serializer.serialize_struct("DashStackSharingScope", 1)?; + s.serialize_field(".tag", "public")?; + s.end() + } + DashStackSharingScope::Team => { + // unit + let mut s = serializer.serialize_struct("DashStackSharingScope", 1)?; + s.serialize_field(".tag", "team")?; + s.end() + } + DashStackSharingScope::Unknown => { + // unit + let mut s = serializer.serialize_struct("DashStackSharingScope", 1)?; + s.serialize_field(".tag", "unknown")?; + s.end() + } + DashStackSharingScope::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) + } + } +} + +/// The type of stack backend +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // variants may be added in the future +pub enum DashStackType { + Cypress, + ReferenceContainer, + Unknown, + /// Catch-all used for unrecognized values returned from the server. Encountering this value + /// typically indicates that this SDK version is out of date. + Other, +} + +impl<'de> ::serde::de::Deserialize<'de> for DashStackType { fn deserialize>(deserializer: D) -> Result { - // struct deserializer - use serde::de::{MapAccess, Visitor}; - struct StructVisitor; - impl<'de> Visitor<'de> for StructVisitor { - type Value = DomainInvitesSetInviteNewUserPrefToNoDetails; + // union deserializer + use serde::de::{self, MapAccess, Visitor}; + struct EnumVisitor; + impl<'de> Visitor<'de> for EnumVisitor { + type Value = DashStackType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a DomainInvitesSetInviteNewUserPrefToNoDetails struct") + f.write_str("a DashStackType structure") } - fn visit_map>(self, map: V) -> Result { - DomainInvitesSetInviteNewUserPrefToNoDetails::internal_deserialize(map) + fn visit_map>(self, mut map: V) -> Result { + let tag: &str = match map.next_key()? { + Some(".tag") => map.next_value()?, + _ => return Err(de::Error::missing_field(".tag")) + }; + let value = match tag { + "cypress" => DashStackType::Cypress, + "reference_container" => DashStackType::ReferenceContainer, + "unknown" => DashStackType::Unknown, + _ => DashStackType::Other, + }; + crate::eat_json_fields(&mut map)?; + Ok(value) } } - deserializer.deserialize_struct("DomainInvitesSetInviteNewUserPrefToNoDetails", DOMAIN_INVITES_SET_INVITE_NEW_USER_PREF_TO_NO_DETAILS_FIELDS, StructVisitor) + const VARIANTS: &[&str] = &["cypress", + "reference_container", + "unknown", + "other"]; + deserializer.deserialize_struct("DashStackType", VARIANTS, EnumVisitor) } } -impl ::serde::ser::Serialize for DomainInvitesSetInviteNewUserPrefToNoDetails { +impl ::serde::ser::Serialize for DashStackType { fn serialize(&self, serializer: S) -> Result { - // struct serializer + // union serializer use serde::ser::SerializeStruct; - serializer.serialize_struct("DomainInvitesSetInviteNewUserPrefToNoDetails", 0)?.end() + match self { + DashStackType::Cypress => { + // unit + let mut s = serializer.serialize_struct("DashStackType", 1)?; + s.serialize_field(".tag", "cypress")?; + s.end() + } + DashStackType::ReferenceContainer => { + // unit + let mut s = serializer.serialize_struct("DashStackType", 1)?; + s.serialize_field(".tag", "reference_container")?; + s.end() + } + DashStackType::Unknown => { + // unit + let mut s = serializer.serialize_struct("DashStackType", 1)?; + s.serialize_field(".tag", "unknown")?; + s.end() + } + DashStackType::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) + } } } +/// Unarchived a stack. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct DomainInvitesSetInviteNewUserPrefToNoType { - pub description: String, +pub struct DashUnarchivedStackDetails { + /// The name of the stack. + pub stack_name: String, + /// The type of stack backend. + pub stack_type: Option, } -impl DomainInvitesSetInviteNewUserPrefToNoType { - pub fn new(description: String) -> Self { - DomainInvitesSetInviteNewUserPrefToNoType { - description, +impl DashUnarchivedStackDetails { + pub fn new(stack_name: String) -> Self { + DashUnarchivedStackDetails { + stack_name, + stack_type: None, } } + + pub fn with_stack_type(mut self, value: DashStackType) -> Self { + self.stack_type = Some(value); + self + } } -const DOMAIN_INVITES_SET_INVITE_NEW_USER_PREF_TO_NO_TYPE_FIELDS: &[&str] = &["description"]; -impl DomainInvitesSetInviteNewUserPrefToNoType { +const DASH_UNARCHIVED_STACK_DETAILS_FIELDS: &[&str] = &["stack_name", + "stack_type"]; +impl DashUnarchivedStackDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_description = None; + ) -> Result, V::Error> { + let mut field_stack_name = None; + let mut field_stack_type = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "description" => { - if field_description.is_some() { - return Err(::serde::de::Error::duplicate_field("description")); + "stack_name" => { + if field_stack_name.is_some() { + return Err(::serde::de::Error::duplicate_field("stack_name")); } - field_description = Some(map.next_value()?); + field_stack_name = Some(map.next_value()?); + } + "stack_type" => { + if field_stack_type.is_some() { + return Err(::serde::de::Error::duplicate_field("stack_type")); + } + field_stack_type = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -16444,8 +18861,9 @@ impl DomainInvitesSetInviteNewUserPrefToNoType { if optional && nothing { return Ok(None); } - let result = DomainInvitesSetInviteNewUserPrefToNoType { - description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + let result = DashUnarchivedStackDetails { + stack_name: field_stack_name.ok_or_else(|| ::serde::de::Error::missing_field("stack_name"))?, + stack_type: field_stack_type.and_then(Option::flatten), }; Ok(Some(result)) } @@ -16455,109 +18873,68 @@ impl DomainInvitesSetInviteNewUserPrefToNoType { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("description", &self.description)?; + s.serialize_field("stack_name", &self.stack_name)?; + if let Some(val) = &self.stack_type { + s.serialize_field("stack_type", val)?; + } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for DomainInvitesSetInviteNewUserPrefToNoType { +impl<'de> ::serde::de::Deserialize<'de> for DashUnarchivedStackDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = DomainInvitesSetInviteNewUserPrefToNoType; + type Value = DashUnarchivedStackDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a DomainInvitesSetInviteNewUserPrefToNoType struct") + f.write_str("a DashUnarchivedStackDetails struct") } fn visit_map>(self, map: V) -> Result { - DomainInvitesSetInviteNewUserPrefToNoType::internal_deserialize(map) + DashUnarchivedStackDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("DomainInvitesSetInviteNewUserPrefToNoType", DOMAIN_INVITES_SET_INVITE_NEW_USER_PREF_TO_NO_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("DashUnarchivedStackDetails", DASH_UNARCHIVED_STACK_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for DomainInvitesSetInviteNewUserPrefToNoType { +impl ::serde::ser::Serialize for DashUnarchivedStackDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("DomainInvitesSetInviteNewUserPrefToNoType", 1)?; + let mut s = serializer.serialize_struct("DashUnarchivedStackDetails", 2)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Enabled "Automatically invite new users". -#[derive(Debug, Clone, PartialEq, Eq, Default)] -#[non_exhaustive] // structs may have more fields added in the future. -pub struct DomainInvitesSetInviteNewUserPrefToYesDetails { -} - -const DOMAIN_INVITES_SET_INVITE_NEW_USER_PREF_TO_YES_DETAILS_FIELDS: &[&str] = &[]; -impl DomainInvitesSetInviteNewUserPrefToYesDetails { - // no _opt deserializer - pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( - mut map: V, - ) -> Result { - // ignore any fields found; none are presently recognized - crate::eat_json_fields(&mut map)?; - Ok(DomainInvitesSetInviteNewUserPrefToYesDetails {}) - } -} - -impl<'de> ::serde::de::Deserialize<'de> for DomainInvitesSetInviteNewUserPrefToYesDetails { - fn deserialize>(deserializer: D) -> Result { - // struct deserializer - use serde::de::{MapAccess, Visitor}; - struct StructVisitor; - impl<'de> Visitor<'de> for StructVisitor { - type Value = DomainInvitesSetInviteNewUserPrefToYesDetails; - fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a DomainInvitesSetInviteNewUserPrefToYesDetails struct") - } - fn visit_map>(self, map: V) -> Result { - DomainInvitesSetInviteNewUserPrefToYesDetails::internal_deserialize(map) - } - } - deserializer.deserialize_struct("DomainInvitesSetInviteNewUserPrefToYesDetails", DOMAIN_INVITES_SET_INVITE_NEW_USER_PREF_TO_YES_DETAILS_FIELDS, StructVisitor) - } -} - -impl ::serde::ser::Serialize for DomainInvitesSetInviteNewUserPrefToYesDetails { - fn serialize(&self, serializer: S) -> Result { - // struct serializer - use serde::ser::SerializeStruct; - serializer.serialize_struct("DomainInvitesSetInviteNewUserPrefToYesDetails", 0)?.end() - } -} - #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct DomainInvitesSetInviteNewUserPrefToYesType { +pub struct DashUnarchivedStackType { pub description: String, } -impl DomainInvitesSetInviteNewUserPrefToYesType { +impl DashUnarchivedStackType { pub fn new(description: String) -> Self { - DomainInvitesSetInviteNewUserPrefToYesType { + DashUnarchivedStackType { description, } } } -const DOMAIN_INVITES_SET_INVITE_NEW_USER_PREF_TO_YES_TYPE_FIELDS: &[&str] = &["description"]; -impl DomainInvitesSetInviteNewUserPrefToYesType { +const DASH_UNARCHIVED_STACK_TYPE_FIELDS: &[&str] = &["description"]; +impl DashUnarchivedStackType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -16578,7 +18955,7 @@ impl DomainInvitesSetInviteNewUserPrefToYesType { if optional && nothing { return Ok(None); } - let result = DomainInvitesSetInviteNewUserPrefToYesType { + let result = DashUnarchivedStackType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -16594,88 +18971,88 @@ impl DomainInvitesSetInviteNewUserPrefToYesType { } } -impl<'de> ::serde::de::Deserialize<'de> for DomainInvitesSetInviteNewUserPrefToYesType { +impl<'de> ::serde::de::Deserialize<'de> for DashUnarchivedStackType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = DomainInvitesSetInviteNewUserPrefToYesType; + type Value = DashUnarchivedStackType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a DomainInvitesSetInviteNewUserPrefToYesType struct") + f.write_str("a DashUnarchivedStackType struct") } fn visit_map>(self, map: V) -> Result { - DomainInvitesSetInviteNewUserPrefToYesType::internal_deserialize(map) + DashUnarchivedStackType::internal_deserialize(map) } } - deserializer.deserialize_struct("DomainInvitesSetInviteNewUserPrefToYesType", DOMAIN_INVITES_SET_INVITE_NEW_USER_PREF_TO_YES_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("DashUnarchivedStackType", DASH_UNARCHIVED_STACK_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for DomainInvitesSetInviteNewUserPrefToYesType { +impl ::serde::ser::Serialize for DashUnarchivedStackType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("DomainInvitesSetInviteNewUserPrefToYesType", 1)?; + let mut s = serializer.serialize_struct("DashUnarchivedStackType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Failed to verify team domain. +/// Member viewed a company stack. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct DomainVerificationAddDomainFailDetails { - /// Domain name. - pub domain_name: String, - /// Domain name verification method. Might be missing due to historical data gap. - pub verification_method: Option, +pub struct DashViewedCompanyStackDetails { + /// The name of the stack. + pub stack_name: String, + /// The type of stack backend. + pub stack_type: Option, } -impl DomainVerificationAddDomainFailDetails { - pub fn new(domain_name: String) -> Self { - DomainVerificationAddDomainFailDetails { - domain_name, - verification_method: None, +impl DashViewedCompanyStackDetails { + pub fn new(stack_name: String) -> Self { + DashViewedCompanyStackDetails { + stack_name, + stack_type: None, } } - pub fn with_verification_method(mut self, value: String) -> Self { - self.verification_method = Some(value); + pub fn with_stack_type(mut self, value: DashStackType) -> Self { + self.stack_type = Some(value); self } } -const DOMAIN_VERIFICATION_ADD_DOMAIN_FAIL_DETAILS_FIELDS: &[&str] = &["domain_name", - "verification_method"]; -impl DomainVerificationAddDomainFailDetails { +const DASH_VIEWED_COMPANY_STACK_DETAILS_FIELDS: &[&str] = &["stack_name", + "stack_type"]; +impl DashViewedCompanyStackDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_domain_name = None; - let mut field_verification_method = None; + ) -> Result, V::Error> { + let mut field_stack_name = None; + let mut field_stack_type = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "domain_name" => { - if field_domain_name.is_some() { - return Err(::serde::de::Error::duplicate_field("domain_name")); + "stack_name" => { + if field_stack_name.is_some() { + return Err(::serde::de::Error::duplicate_field("stack_name")); } - field_domain_name = Some(map.next_value()?); + field_stack_name = Some(map.next_value()?); } - "verification_method" => { - if field_verification_method.is_some() { - return Err(::serde::de::Error::duplicate_field("verification_method")); + "stack_type" => { + if field_stack_type.is_some() { + return Err(::serde::de::Error::duplicate_field("stack_type")); } - field_verification_method = Some(map.next_value()?); + field_stack_type = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -16686,9 +19063,9 @@ impl DomainVerificationAddDomainFailDetails { if optional && nothing { return Ok(None); } - let result = DomainVerificationAddDomainFailDetails { - domain_name: field_domain_name.ok_or_else(|| ::serde::de::Error::missing_field("domain_name"))?, - verification_method: field_verification_method.and_then(Option::flatten), + let result = DashViewedCompanyStackDetails { + stack_name: field_stack_name.ok_or_else(|| ::serde::de::Error::missing_field("stack_name"))?, + stack_type: field_stack_type.and_then(Option::flatten), }; Ok(Some(result)) } @@ -16698,37 +19075,37 @@ impl DomainVerificationAddDomainFailDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("domain_name", &self.domain_name)?; - if let Some(val) = &self.verification_method { - s.serialize_field("verification_method", val)?; + s.serialize_field("stack_name", &self.stack_name)?; + if let Some(val) = &self.stack_type { + s.serialize_field("stack_type", val)?; } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for DomainVerificationAddDomainFailDetails { +impl<'de> ::serde::de::Deserialize<'de> for DashViewedCompanyStackDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = DomainVerificationAddDomainFailDetails; + type Value = DashViewedCompanyStackDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a DomainVerificationAddDomainFailDetails struct") + f.write_str("a DashViewedCompanyStackDetails struct") } fn visit_map>(self, map: V) -> Result { - DomainVerificationAddDomainFailDetails::internal_deserialize(map) + DashViewedCompanyStackDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("DomainVerificationAddDomainFailDetails", DOMAIN_VERIFICATION_ADD_DOMAIN_FAIL_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("DashViewedCompanyStackDetails", DASH_VIEWED_COMPANY_STACK_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for DomainVerificationAddDomainFailDetails { +impl ::serde::ser::Serialize for DashViewedCompanyStackDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("DomainVerificationAddDomainFailDetails", 2)?; + let mut s = serializer.serialize_struct("DashViewedCompanyStackDetails", 2)?; self.internal_serialize::(&mut s)?; s.end() } @@ -16736,30 +19113,30 @@ impl ::serde::ser::Serialize for DomainVerificationAddDomainFailDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct DomainVerificationAddDomainFailType { +pub struct DashViewedCompanyStackType { pub description: String, } -impl DomainVerificationAddDomainFailType { +impl DashViewedCompanyStackType { pub fn new(description: String) -> Self { - DomainVerificationAddDomainFailType { + DashViewedCompanyStackType { description, } } } -const DOMAIN_VERIFICATION_ADD_DOMAIN_FAIL_TYPE_FIELDS: &[&str] = &["description"]; -impl DomainVerificationAddDomainFailType { +const DASH_VIEWED_COMPANY_STACK_TYPE_FIELDS: &[&str] = &["description"]; +impl DashViewedCompanyStackType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -16780,7 +19157,7 @@ impl DomainVerificationAddDomainFailType { if optional && nothing { return Ok(None); } - let result = DomainVerificationAddDomainFailType { + let result = DashViewedCompanyStackType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -16796,172 +19173,104 @@ impl DomainVerificationAddDomainFailType { } } -impl<'de> ::serde::de::Deserialize<'de> for DomainVerificationAddDomainFailType { +impl<'de> ::serde::de::Deserialize<'de> for DashViewedCompanyStackType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = DomainVerificationAddDomainFailType; + type Value = DashViewedCompanyStackType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a DomainVerificationAddDomainFailType struct") + f.write_str("a DashViewedCompanyStackType struct") } fn visit_map>(self, map: V) -> Result { - DomainVerificationAddDomainFailType::internal_deserialize(map) + DashViewedCompanyStackType::internal_deserialize(map) } } - deserializer.deserialize_struct("DomainVerificationAddDomainFailType", DOMAIN_VERIFICATION_ADD_DOMAIN_FAIL_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("DashViewedCompanyStackType", DASH_VIEWED_COMPANY_STACK_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for DomainVerificationAddDomainFailType { +impl ::serde::ser::Serialize for DashViewedCompanyStackType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("DomainVerificationAddDomainFailType", 1)?; + let mut s = serializer.serialize_struct("DashViewedCompanyStackType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Verified team domain. -#[derive(Debug, Clone, PartialEq, Eq)] +/// Admin viewed the external AI activity report. +#[derive(Debug, Clone, PartialEq, Eq, Default)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct DomainVerificationAddDomainSuccessDetails { - /// Domain names. - pub domain_names: Vec, - /// Domain name verification method. Might be missing due to historical data gap. - pub verification_method: Option, +pub struct DashViewedExternalAiActivityReportDetails { } -impl DomainVerificationAddDomainSuccessDetails { - pub fn new(domain_names: Vec) -> Self { - DomainVerificationAddDomainSuccessDetails { - domain_names, - verification_method: None, - } +const DASH_VIEWED_EXTERNAL_AI_ACTIVITY_REPORT_DETAILS_FIELDS: &[&str] = &[]; +impl DashViewedExternalAiActivityReportDetails { + // no _opt deserializer + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + ) -> Result { + // ignore any fields found; none are presently recognized + crate::eat_json_fields(&mut map)?; + Ok(DashViewedExternalAiActivityReportDetails {}) } +} - pub fn with_verification_method(mut self, value: String) -> Self { - self.verification_method = Some(value); - self +impl<'de> ::serde::de::Deserialize<'de> for DashViewedExternalAiActivityReportDetails { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = DashViewedExternalAiActivityReportDetails; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a DashViewedExternalAiActivityReportDetails struct") + } + fn visit_map>(self, map: V) -> Result { + DashViewedExternalAiActivityReportDetails::internal_deserialize(map) + } + } + deserializer.deserialize_struct("DashViewedExternalAiActivityReportDetails", DASH_VIEWED_EXTERNAL_AI_ACTIVITY_REPORT_DETAILS_FIELDS, StructVisitor) } } -const DOMAIN_VERIFICATION_ADD_DOMAIN_SUCCESS_DETAILS_FIELDS: &[&str] = &["domain_names", - "verification_method"]; -impl DomainVerificationAddDomainSuccessDetails { - pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( - map: V, - ) -> Result { - Self::internal_deserialize_opt(map, false).map(Option::unwrap) +impl ::serde::ser::Serialize for DashViewedExternalAiActivityReportDetails { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + serializer.serialize_struct("DashViewedExternalAiActivityReportDetails", 0)?.end() } - - pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( - mut map: V, - optional: bool, - ) -> Result, V::Error> { - let mut field_domain_names = None; - let mut field_verification_method = None; - let mut nothing = true; - while let Some(key) = map.next_key::<&str>()? { - nothing = false; - match key { - "domain_names" => { - if field_domain_names.is_some() { - return Err(::serde::de::Error::duplicate_field("domain_names")); - } - field_domain_names = Some(map.next_value()?); - } - "verification_method" => { - if field_verification_method.is_some() { - return Err(::serde::de::Error::duplicate_field("verification_method")); - } - field_verification_method = Some(map.next_value()?); - } - _ => { - // unknown field allowed and ignored - map.next_value::<::serde_json::Value>()?; - } - } - } - if optional && nothing { - return Ok(None); - } - let result = DomainVerificationAddDomainSuccessDetails { - domain_names: field_domain_names.ok_or_else(|| ::serde::de::Error::missing_field("domain_names"))?, - verification_method: field_verification_method.and_then(Option::flatten), - }; - Ok(Some(result)) - } - - pub(crate) fn internal_serialize( - &self, - s: &mut S::SerializeStruct, - ) -> Result<(), S::Error> { - use serde::ser::SerializeStruct; - s.serialize_field("domain_names", &self.domain_names)?; - if let Some(val) = &self.verification_method { - s.serialize_field("verification_method", val)?; - } - Ok(()) - } -} - -impl<'de> ::serde::de::Deserialize<'de> for DomainVerificationAddDomainSuccessDetails { - fn deserialize>(deserializer: D) -> Result { - // struct deserializer - use serde::de::{MapAccess, Visitor}; - struct StructVisitor; - impl<'de> Visitor<'de> for StructVisitor { - type Value = DomainVerificationAddDomainSuccessDetails; - fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a DomainVerificationAddDomainSuccessDetails struct") - } - fn visit_map>(self, map: V) -> Result { - DomainVerificationAddDomainSuccessDetails::internal_deserialize(map) - } - } - deserializer.deserialize_struct("DomainVerificationAddDomainSuccessDetails", DOMAIN_VERIFICATION_ADD_DOMAIN_SUCCESS_DETAILS_FIELDS, StructVisitor) - } -} - -impl ::serde::ser::Serialize for DomainVerificationAddDomainSuccessDetails { - fn serialize(&self, serializer: S) -> Result { - // struct serializer - use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("DomainVerificationAddDomainSuccessDetails", 2)?; - self.internal_serialize::(&mut s)?; - s.end() - } -} +} #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct DomainVerificationAddDomainSuccessType { +pub struct DashViewedExternalAiActivityReportType { pub description: String, } -impl DomainVerificationAddDomainSuccessType { +impl DashViewedExternalAiActivityReportType { pub fn new(description: String) -> Self { - DomainVerificationAddDomainSuccessType { + DashViewedExternalAiActivityReportType { description, } } } -const DOMAIN_VERIFICATION_ADD_DOMAIN_SUCCESS_TYPE_FIELDS: &[&str] = &["description"]; -impl DomainVerificationAddDomainSuccessType { +const DASH_VIEWED_EXTERNAL_AI_ACTIVITY_REPORT_TYPE_FIELDS: &[&str] = &["description"]; +impl DashViewedExternalAiActivityReportType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -16982,7 +19291,7 @@ impl DomainVerificationAddDomainSuccessType { if optional && nothing { return Ok(None); } - let result = DomainVerificationAddDomainSuccessType { + let result = DashViewedExternalAiActivityReportType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -16998,72 +19307,83 @@ impl DomainVerificationAddDomainSuccessType { } } -impl<'de> ::serde::de::Deserialize<'de> for DomainVerificationAddDomainSuccessType { +impl<'de> ::serde::de::Deserialize<'de> for DashViewedExternalAiActivityReportType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = DomainVerificationAddDomainSuccessType; + type Value = DashViewedExternalAiActivityReportType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a DomainVerificationAddDomainSuccessType struct") + f.write_str("a DashViewedExternalAiActivityReportType struct") } fn visit_map>(self, map: V) -> Result { - DomainVerificationAddDomainSuccessType::internal_deserialize(map) + DashViewedExternalAiActivityReportType::internal_deserialize(map) } } - deserializer.deserialize_struct("DomainVerificationAddDomainSuccessType", DOMAIN_VERIFICATION_ADD_DOMAIN_SUCCESS_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("DashViewedExternalAiActivityReportType", DASH_VIEWED_EXTERNAL_AI_ACTIVITY_REPORT_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for DomainVerificationAddDomainSuccessType { +impl ::serde::ser::Serialize for DashViewedExternalAiActivityReportType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("DomainVerificationAddDomainSuccessType", 1)?; + let mut s = serializer.serialize_struct("DashViewedExternalAiActivityReportType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Removed domain from list of verified team domains. +/// Set restrictions on data center locations where team data resides. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct DomainVerificationRemoveDomainDetails { - /// Domain names. - pub domain_names: Vec, +pub struct DataPlacementRestrictionChangePolicyDetails { + /// Previous placement restriction. + pub previous_value: PlacementRestriction, + /// New placement restriction. + pub new_value: PlacementRestriction, } -impl DomainVerificationRemoveDomainDetails { - pub fn new(domain_names: Vec) -> Self { - DomainVerificationRemoveDomainDetails { - domain_names, +impl DataPlacementRestrictionChangePolicyDetails { + pub fn new(previous_value: PlacementRestriction, new_value: PlacementRestriction) -> Self { + DataPlacementRestrictionChangePolicyDetails { + previous_value, + new_value, } } } -const DOMAIN_VERIFICATION_REMOVE_DOMAIN_DETAILS_FIELDS: &[&str] = &["domain_names"]; -impl DomainVerificationRemoveDomainDetails { +const DATA_PLACEMENT_RESTRICTION_CHANGE_POLICY_DETAILS_FIELDS: &[&str] = &["previous_value", + "new_value"]; +impl DataPlacementRestrictionChangePolicyDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_domain_names = None; + ) -> Result, V::Error> { + let mut field_previous_value = None; + let mut field_new_value = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "domain_names" => { - if field_domain_names.is_some() { - return Err(::serde::de::Error::duplicate_field("domain_names")); + "previous_value" => { + if field_previous_value.is_some() { + return Err(::serde::de::Error::duplicate_field("previous_value")); } - field_domain_names = Some(map.next_value()?); + field_previous_value = Some(map.next_value()?); + } + "new_value" => { + if field_new_value.is_some() { + return Err(::serde::de::Error::duplicate_field("new_value")); + } + field_new_value = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -17074,8 +19394,9 @@ impl DomainVerificationRemoveDomainDetails { if optional && nothing { return Ok(None); } - let result = DomainVerificationRemoveDomainDetails { - domain_names: field_domain_names.ok_or_else(|| ::serde::de::Error::missing_field("domain_names"))?, + let result = DataPlacementRestrictionChangePolicyDetails { + previous_value: field_previous_value.ok_or_else(|| ::serde::de::Error::missing_field("previous_value"))?, + new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, }; Ok(Some(result)) } @@ -17085,34 +19406,35 @@ impl DomainVerificationRemoveDomainDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("domain_names", &self.domain_names)?; + s.serialize_field("previous_value", &self.previous_value)?; + s.serialize_field("new_value", &self.new_value)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for DomainVerificationRemoveDomainDetails { +impl<'de> ::serde::de::Deserialize<'de> for DataPlacementRestrictionChangePolicyDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = DomainVerificationRemoveDomainDetails; + type Value = DataPlacementRestrictionChangePolicyDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a DomainVerificationRemoveDomainDetails struct") + f.write_str("a DataPlacementRestrictionChangePolicyDetails struct") } fn visit_map>(self, map: V) -> Result { - DomainVerificationRemoveDomainDetails::internal_deserialize(map) + DataPlacementRestrictionChangePolicyDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("DomainVerificationRemoveDomainDetails", DOMAIN_VERIFICATION_REMOVE_DOMAIN_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("DataPlacementRestrictionChangePolicyDetails", DATA_PLACEMENT_RESTRICTION_CHANGE_POLICY_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for DomainVerificationRemoveDomainDetails { +impl ::serde::ser::Serialize for DataPlacementRestrictionChangePolicyDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("DomainVerificationRemoveDomainDetails", 1)?; + let mut s = serializer.serialize_struct("DataPlacementRestrictionChangePolicyDetails", 2)?; self.internal_serialize::(&mut s)?; s.end() } @@ -17120,30 +19442,30 @@ impl ::serde::ser::Serialize for DomainVerificationRemoveDomainDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct DomainVerificationRemoveDomainType { +pub struct DataPlacementRestrictionChangePolicyType { pub description: String, } -impl DomainVerificationRemoveDomainType { +impl DataPlacementRestrictionChangePolicyType { pub fn new(description: String) -> Self { - DomainVerificationRemoveDomainType { + DataPlacementRestrictionChangePolicyType { description, } } } -const DOMAIN_VERIFICATION_REMOVE_DOMAIN_TYPE_FIELDS: &[&str] = &["description"]; -impl DomainVerificationRemoveDomainType { +const DATA_PLACEMENT_RESTRICTION_CHANGE_POLICY_TYPE_FIELDS: &[&str] = &["description"]; +impl DataPlacementRestrictionChangePolicyType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -17164,7 +19486,7 @@ impl DomainVerificationRemoveDomainType { if optional && nothing { return Ok(None); } - let result = DomainVerificationRemoveDomainType { + let result = DataPlacementRestrictionChangePolicyType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -17180,136 +19502,72 @@ impl DomainVerificationRemoveDomainType { } } -impl<'de> ::serde::de::Deserialize<'de> for DomainVerificationRemoveDomainType { +impl<'de> ::serde::de::Deserialize<'de> for DataPlacementRestrictionChangePolicyType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = DomainVerificationRemoveDomainType; + type Value = DataPlacementRestrictionChangePolicyType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a DomainVerificationRemoveDomainType struct") + f.write_str("a DataPlacementRestrictionChangePolicyType struct") } fn visit_map>(self, map: V) -> Result { - DomainVerificationRemoveDomainType::internal_deserialize(map) + DataPlacementRestrictionChangePolicyType::internal_deserialize(map) } } - deserializer.deserialize_struct("DomainVerificationRemoveDomainType", DOMAIN_VERIFICATION_REMOVE_DOMAIN_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("DataPlacementRestrictionChangePolicyType", DATA_PLACEMENT_RESTRICTION_CHANGE_POLICY_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for DomainVerificationRemoveDomainType { +impl ::serde::ser::Serialize for DataPlacementRestrictionChangePolicyType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("DomainVerificationRemoveDomainType", 1)?; + let mut s = serializer.serialize_struct("DataPlacementRestrictionChangePolicyType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Shared content downloads policy -#[derive(Debug, Clone, PartialEq, Eq)] -#[non_exhaustive] // variants may be added in the future -pub enum DownloadPolicyType { - Allow, - Disallow, - /// Catch-all used for unrecognized values returned from the server. Encountering this value - /// typically indicates that this SDK version is out of date. - Other, -} - -impl<'de> ::serde::de::Deserialize<'de> for DownloadPolicyType { - fn deserialize>(deserializer: D) -> Result { - // union deserializer - use serde::de::{self, MapAccess, Visitor}; - struct EnumVisitor; - impl<'de> Visitor<'de> for EnumVisitor { - type Value = DownloadPolicyType; - fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a DownloadPolicyType structure") - } - fn visit_map>(self, mut map: V) -> Result { - let tag: &str = match map.next_key()? { - Some(".tag") => map.next_value()?, - _ => return Err(de::Error::missing_field(".tag")) - }; - let value = match tag { - "allow" => DownloadPolicyType::Allow, - "disallow" => DownloadPolicyType::Disallow, - _ => DownloadPolicyType::Other, - }; - crate::eat_json_fields(&mut map)?; - Ok(value) - } - } - const VARIANTS: &[&str] = &["allow", - "disallow", - "other"]; - deserializer.deserialize_struct("DownloadPolicyType", VARIANTS, EnumVisitor) - } -} - -impl ::serde::ser::Serialize for DownloadPolicyType { - fn serialize(&self, serializer: S) -> Result { - // union serializer - use serde::ser::SerializeStruct; - match self { - DownloadPolicyType::Allow => { - // unit - let mut s = serializer.serialize_struct("DownloadPolicyType", 1)?; - s.serialize_field(".tag", "allow")?; - s.end() - } - DownloadPolicyType::Disallow => { - // unit - let mut s = serializer.serialize_struct("DownloadPolicyType", 1)?; - s.serialize_field(".tag", "disallow")?; - s.end() - } - DownloadPolicyType::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) - } - } -} - -/// Exported passwords. +/// Completed restrictions on data center locations where team data resides. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct DropboxPasswordsExportedDetails { - /// The platform the device runs export. - pub platform: String, +pub struct DataPlacementRestrictionSatisfyPolicyDetails { + /// Placement restriction. + pub placement_restriction: PlacementRestriction, } -impl DropboxPasswordsExportedDetails { - pub fn new(platform: String) -> Self { - DropboxPasswordsExportedDetails { - platform, +impl DataPlacementRestrictionSatisfyPolicyDetails { + pub fn new(placement_restriction: PlacementRestriction) -> Self { + DataPlacementRestrictionSatisfyPolicyDetails { + placement_restriction, } } } -const DROPBOX_PASSWORDS_EXPORTED_DETAILS_FIELDS: &[&str] = &["platform"]; -impl DropboxPasswordsExportedDetails { +const DATA_PLACEMENT_RESTRICTION_SATISFY_POLICY_DETAILS_FIELDS: &[&str] = &["placement_restriction"]; +impl DataPlacementRestrictionSatisfyPolicyDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_platform = None; + ) -> Result, V::Error> { + let mut field_placement_restriction = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "platform" => { - if field_platform.is_some() { - return Err(::serde::de::Error::duplicate_field("platform")); + "placement_restriction" => { + if field_placement_restriction.is_some() { + return Err(::serde::de::Error::duplicate_field("placement_restriction")); } - field_platform = Some(map.next_value()?); + field_placement_restriction = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -17320,8 +19578,8 @@ impl DropboxPasswordsExportedDetails { if optional && nothing { return Ok(None); } - let result = DropboxPasswordsExportedDetails { - platform: field_platform.ok_or_else(|| ::serde::de::Error::missing_field("platform"))?, + let result = DataPlacementRestrictionSatisfyPolicyDetails { + placement_restriction: field_placement_restriction.ok_or_else(|| ::serde::de::Error::missing_field("placement_restriction"))?, }; Ok(Some(result)) } @@ -17331,34 +19589,34 @@ impl DropboxPasswordsExportedDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("platform", &self.platform)?; + s.serialize_field("placement_restriction", &self.placement_restriction)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for DropboxPasswordsExportedDetails { +impl<'de> ::serde::de::Deserialize<'de> for DataPlacementRestrictionSatisfyPolicyDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = DropboxPasswordsExportedDetails; + type Value = DataPlacementRestrictionSatisfyPolicyDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a DropboxPasswordsExportedDetails struct") + f.write_str("a DataPlacementRestrictionSatisfyPolicyDetails struct") } fn visit_map>(self, map: V) -> Result { - DropboxPasswordsExportedDetails::internal_deserialize(map) + DataPlacementRestrictionSatisfyPolicyDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("DropboxPasswordsExportedDetails", DROPBOX_PASSWORDS_EXPORTED_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("DataPlacementRestrictionSatisfyPolicyDetails", DATA_PLACEMENT_RESTRICTION_SATISFY_POLICY_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for DropboxPasswordsExportedDetails { +impl ::serde::ser::Serialize for DataPlacementRestrictionSatisfyPolicyDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("DropboxPasswordsExportedDetails", 1)?; + let mut s = serializer.serialize_struct("DataPlacementRestrictionSatisfyPolicyDetails", 1)?; self.internal_serialize::(&mut s)?; s.end() } @@ -17366,30 +19624,30 @@ impl ::serde::ser::Serialize for DropboxPasswordsExportedDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct DropboxPasswordsExportedType { +pub struct DataPlacementRestrictionSatisfyPolicyType { pub description: String, } -impl DropboxPasswordsExportedType { +impl DataPlacementRestrictionSatisfyPolicyType { pub fn new(description: String) -> Self { - DropboxPasswordsExportedType { + DataPlacementRestrictionSatisfyPolicyType { description, } } } -const DROPBOX_PASSWORDS_EXPORTED_TYPE_FIELDS: &[&str] = &["description"]; -impl DropboxPasswordsExportedType { +const DATA_PLACEMENT_RESTRICTION_SATISFY_POLICY_TYPE_FIELDS: &[&str] = &["description"]; +impl DataPlacementRestrictionSatisfyPolicyType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -17410,7 +19668,7 @@ impl DropboxPasswordsExportedType { if optional && nothing { return Ok(None); } - let result = DropboxPasswordsExportedType { + let result = DataPlacementRestrictionSatisfyPolicyType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -17426,83 +19684,114 @@ impl DropboxPasswordsExportedType { } } -impl<'de> ::serde::de::Deserialize<'de> for DropboxPasswordsExportedType { +impl<'de> ::serde::de::Deserialize<'de> for DataPlacementRestrictionSatisfyPolicyType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = DropboxPasswordsExportedType; + type Value = DataPlacementRestrictionSatisfyPolicyType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a DropboxPasswordsExportedType struct") + f.write_str("a DataPlacementRestrictionSatisfyPolicyType struct") } fn visit_map>(self, map: V) -> Result { - DropboxPasswordsExportedType::internal_deserialize(map) + DataPlacementRestrictionSatisfyPolicyType::internal_deserialize(map) } } - deserializer.deserialize_struct("DropboxPasswordsExportedType", DROPBOX_PASSWORDS_EXPORTED_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("DataPlacementRestrictionSatisfyPolicyType", DATA_PLACEMENT_RESTRICTION_SATISFY_POLICY_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for DropboxPasswordsExportedType { +impl ::serde::ser::Serialize for DataPlacementRestrictionSatisfyPolicyType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("DropboxPasswordsExportedType", 1)?; + let mut s = serializer.serialize_struct("DataPlacementRestrictionSatisfyPolicyType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Enrolled new Dropbox Passwords device. +/// Requested data residency migration for team data. +#[derive(Debug, Clone, PartialEq, Eq, Default)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct DataResidencyMigrationRequestSuccessfulDetails { +} + +const DATA_RESIDENCY_MIGRATION_REQUEST_SUCCESSFUL_DETAILS_FIELDS: &[&str] = &[]; +impl DataResidencyMigrationRequestSuccessfulDetails { + // no _opt deserializer + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + ) -> Result { + // ignore any fields found; none are presently recognized + crate::eat_json_fields(&mut map)?; + Ok(DataResidencyMigrationRequestSuccessfulDetails {}) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for DataResidencyMigrationRequestSuccessfulDetails { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = DataResidencyMigrationRequestSuccessfulDetails; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a DataResidencyMigrationRequestSuccessfulDetails struct") + } + fn visit_map>(self, map: V) -> Result { + DataResidencyMigrationRequestSuccessfulDetails::internal_deserialize(map) + } + } + deserializer.deserialize_struct("DataResidencyMigrationRequestSuccessfulDetails", DATA_RESIDENCY_MIGRATION_REQUEST_SUCCESSFUL_DETAILS_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for DataResidencyMigrationRequestSuccessfulDetails { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + serializer.serialize_struct("DataResidencyMigrationRequestSuccessfulDetails", 0)?.end() + } +} + #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct DropboxPasswordsNewDeviceEnrolledDetails { - /// Whether it's a first device enrolled. - pub is_first_device: bool, - /// The platform the device is enrolled. - pub platform: String, +pub struct DataResidencyMigrationRequestSuccessfulType { + pub description: String, } -impl DropboxPasswordsNewDeviceEnrolledDetails { - pub fn new(is_first_device: bool, platform: String) -> Self { - DropboxPasswordsNewDeviceEnrolledDetails { - is_first_device, - platform, +impl DataResidencyMigrationRequestSuccessfulType { + pub fn new(description: String) -> Self { + DataResidencyMigrationRequestSuccessfulType { + description, } } } -const DROPBOX_PASSWORDS_NEW_DEVICE_ENROLLED_DETAILS_FIELDS: &[&str] = &["is_first_device", - "platform"]; -impl DropboxPasswordsNewDeviceEnrolledDetails { +const DATA_RESIDENCY_MIGRATION_REQUEST_SUCCESSFUL_TYPE_FIELDS: &[&str] = &["description"]; +impl DataResidencyMigrationRequestSuccessfulType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_is_first_device = None; - let mut field_platform = None; + ) -> Result, V::Error> { + let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "is_first_device" => { - if field_is_first_device.is_some() { - return Err(::serde::de::Error::duplicate_field("is_first_device")); - } - field_is_first_device = Some(map.next_value()?); - } - "platform" => { - if field_platform.is_some() { - return Err(::serde::de::Error::duplicate_field("platform")); + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); } - field_platform = Some(map.next_value()?); + field_description = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -17513,9 +19802,8 @@ impl DropboxPasswordsNewDeviceEnrolledDetails { if optional && nothing { return Ok(None); } - let result = DropboxPasswordsNewDeviceEnrolledDetails { - is_first_device: field_is_first_device.ok_or_else(|| ::serde::de::Error::missing_field("is_first_device"))?, - platform: field_platform.ok_or_else(|| ::serde::de::Error::missing_field("platform"))?, + let result = DataResidencyMigrationRequestSuccessfulType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) } @@ -17525,66 +19813,109 @@ impl DropboxPasswordsNewDeviceEnrolledDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("is_first_device", &self.is_first_device)?; - s.serialize_field("platform", &self.platform)?; + s.serialize_field("description", &self.description)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for DropboxPasswordsNewDeviceEnrolledDetails { +impl<'de> ::serde::de::Deserialize<'de> for DataResidencyMigrationRequestSuccessfulType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = DropboxPasswordsNewDeviceEnrolledDetails; + type Value = DataResidencyMigrationRequestSuccessfulType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a DropboxPasswordsNewDeviceEnrolledDetails struct") + f.write_str("a DataResidencyMigrationRequestSuccessfulType struct") } fn visit_map>(self, map: V) -> Result { - DropboxPasswordsNewDeviceEnrolledDetails::internal_deserialize(map) + DataResidencyMigrationRequestSuccessfulType::internal_deserialize(map) } } - deserializer.deserialize_struct("DropboxPasswordsNewDeviceEnrolledDetails", DROPBOX_PASSWORDS_NEW_DEVICE_ENROLLED_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("DataResidencyMigrationRequestSuccessfulType", DATA_RESIDENCY_MIGRATION_REQUEST_SUCCESSFUL_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for DropboxPasswordsNewDeviceEnrolledDetails { +impl ::serde::ser::Serialize for DataResidencyMigrationRequestSuccessfulType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("DropboxPasswordsNewDeviceEnrolledDetails", 2)?; + let mut s = serializer.serialize_struct("DataResidencyMigrationRequestSuccessfulType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } +/// Request for data residency migration for team data has failed. +#[derive(Debug, Clone, PartialEq, Eq, Default)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct DataResidencyMigrationRequestUnsuccessfulDetails { +} + +const DATA_RESIDENCY_MIGRATION_REQUEST_UNSUCCESSFUL_DETAILS_FIELDS: &[&str] = &[]; +impl DataResidencyMigrationRequestUnsuccessfulDetails { + // no _opt deserializer + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + ) -> Result { + // ignore any fields found; none are presently recognized + crate::eat_json_fields(&mut map)?; + Ok(DataResidencyMigrationRequestUnsuccessfulDetails {}) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for DataResidencyMigrationRequestUnsuccessfulDetails { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = DataResidencyMigrationRequestUnsuccessfulDetails; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a DataResidencyMigrationRequestUnsuccessfulDetails struct") + } + fn visit_map>(self, map: V) -> Result { + DataResidencyMigrationRequestUnsuccessfulDetails::internal_deserialize(map) + } + } + deserializer.deserialize_struct("DataResidencyMigrationRequestUnsuccessfulDetails", DATA_RESIDENCY_MIGRATION_REQUEST_UNSUCCESSFUL_DETAILS_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for DataResidencyMigrationRequestUnsuccessfulDetails { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + serializer.serialize_struct("DataResidencyMigrationRequestUnsuccessfulDetails", 0)?.end() + } +} + #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct DropboxPasswordsNewDeviceEnrolledType { +pub struct DataResidencyMigrationRequestUnsuccessfulType { pub description: String, } -impl DropboxPasswordsNewDeviceEnrolledType { +impl DataResidencyMigrationRequestUnsuccessfulType { pub fn new(description: String) -> Self { - DropboxPasswordsNewDeviceEnrolledType { + DataResidencyMigrationRequestUnsuccessfulType { description, } } } -const DROPBOX_PASSWORDS_NEW_DEVICE_ENROLLED_TYPE_FIELDS: &[&str] = &["description"]; -impl DropboxPasswordsNewDeviceEnrolledType { +const DATA_RESIDENCY_MIGRATION_REQUEST_UNSUCCESSFUL_TYPE_FIELDS: &[&str] = &["description"]; +impl DataResidencyMigrationRequestUnsuccessfulType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -17605,7 +19936,7 @@ impl DropboxPasswordsNewDeviceEnrolledType { if optional && nothing { return Ok(None); } - let result = DropboxPasswordsNewDeviceEnrolledType { + let result = DataResidencyMigrationRequestUnsuccessfulType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -17621,55 +19952,60 @@ impl DropboxPasswordsNewDeviceEnrolledType { } } -impl<'de> ::serde::de::Deserialize<'de> for DropboxPasswordsNewDeviceEnrolledType { +impl<'de> ::serde::de::Deserialize<'de> for DataResidencyMigrationRequestUnsuccessfulType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = DropboxPasswordsNewDeviceEnrolledType; + type Value = DataResidencyMigrationRequestUnsuccessfulType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a DropboxPasswordsNewDeviceEnrolledType struct") + f.write_str("a DataResidencyMigrationRequestUnsuccessfulType struct") } fn visit_map>(self, map: V) -> Result { - DropboxPasswordsNewDeviceEnrolledType::internal_deserialize(map) + DataResidencyMigrationRequestUnsuccessfulType::internal_deserialize(map) } } - deserializer.deserialize_struct("DropboxPasswordsNewDeviceEnrolledType", DROPBOX_PASSWORDS_NEW_DEVICE_ENROLLED_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("DataResidencyMigrationRequestUnsuccessfulType", DATA_RESIDENCY_MIGRATION_REQUEST_UNSUCCESSFUL_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for DropboxPasswordsNewDeviceEnrolledType { +impl ::serde::ser::Serialize for DataResidencyMigrationRequestUnsuccessfulType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("DropboxPasswordsNewDeviceEnrolledType", 1)?; + let mut s = serializer.serialize_struct("DataResidencyMigrationRequestUnsuccessfulType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Policy for deciding whether team users can use Dropbox Passwords +/// Policy for the default number of days until an externally shared link expires #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // variants may be added in the future -pub enum DropboxPasswordsPolicy { - Default, - Disabled, - Enabled, +pub enum DefaultLinkExpirationDaysPolicy { + Day1, + Day180, + Day3, + Day30, + Day7, + Day90, + None, + Year1, /// Catch-all used for unrecognized values returned from the server. Encountering this value /// typically indicates that this SDK version is out of date. Other, } -impl<'de> ::serde::de::Deserialize<'de> for DropboxPasswordsPolicy { +impl<'de> ::serde::de::Deserialize<'de> for DefaultLinkExpirationDaysPolicy { fn deserialize>(deserializer: D) -> Result { // union deserializer use serde::de::{self, MapAccess, Visitor}; struct EnumVisitor; impl<'de> Visitor<'de> for EnumVisitor { - type Value = DropboxPasswordsPolicy; + type Value = DefaultLinkExpirationDaysPolicy; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a DropboxPasswordsPolicy structure") + f.write_str("a DefaultLinkExpirationDaysPolicy structure") } fn visit_map>(self, mut map: V) -> Result { let tag: &str = match map.next_key()? { @@ -17677,100 +20013,129 @@ impl<'de> ::serde::de::Deserialize<'de> for DropboxPasswordsPolicy { _ => return Err(de::Error::missing_field(".tag")) }; let value = match tag { - "default" => DropboxPasswordsPolicy::Default, - "disabled" => DropboxPasswordsPolicy::Disabled, - "enabled" => DropboxPasswordsPolicy::Enabled, - _ => DropboxPasswordsPolicy::Other, + "day_1" => DefaultLinkExpirationDaysPolicy::Day1, + "day_180" => DefaultLinkExpirationDaysPolicy::Day180, + "day_3" => DefaultLinkExpirationDaysPolicy::Day3, + "day_30" => DefaultLinkExpirationDaysPolicy::Day30, + "day_7" => DefaultLinkExpirationDaysPolicy::Day7, + "day_90" => DefaultLinkExpirationDaysPolicy::Day90, + "none" => DefaultLinkExpirationDaysPolicy::None, + "year_1" => DefaultLinkExpirationDaysPolicy::Year1, + _ => DefaultLinkExpirationDaysPolicy::Other, }; crate::eat_json_fields(&mut map)?; Ok(value) } } - const VARIANTS: &[&str] = &["default", - "disabled", - "enabled", + const VARIANTS: &[&str] = &["day_1", + "day_180", + "day_3", + "day_30", + "day_7", + "day_90", + "none", + "year_1", "other"]; - deserializer.deserialize_struct("DropboxPasswordsPolicy", VARIANTS, EnumVisitor) + deserializer.deserialize_struct("DefaultLinkExpirationDaysPolicy", VARIANTS, EnumVisitor) } } -impl ::serde::ser::Serialize for DropboxPasswordsPolicy { +impl ::serde::ser::Serialize for DefaultLinkExpirationDaysPolicy { fn serialize(&self, serializer: S) -> Result { // union serializer use serde::ser::SerializeStruct; match self { - DropboxPasswordsPolicy::Default => { + DefaultLinkExpirationDaysPolicy::Day1 => { // unit - let mut s = serializer.serialize_struct("DropboxPasswordsPolicy", 1)?; - s.serialize_field(".tag", "default")?; + let mut s = serializer.serialize_struct("DefaultLinkExpirationDaysPolicy", 1)?; + s.serialize_field(".tag", "day_1")?; s.end() } - DropboxPasswordsPolicy::Disabled => { + DefaultLinkExpirationDaysPolicy::Day180 => { // unit - let mut s = serializer.serialize_struct("DropboxPasswordsPolicy", 1)?; - s.serialize_field(".tag", "disabled")?; + let mut s = serializer.serialize_struct("DefaultLinkExpirationDaysPolicy", 1)?; + s.serialize_field(".tag", "day_180")?; s.end() } - DropboxPasswordsPolicy::Enabled => { + DefaultLinkExpirationDaysPolicy::Day3 => { // unit - let mut s = serializer.serialize_struct("DropboxPasswordsPolicy", 1)?; - s.serialize_field(".tag", "enabled")?; + let mut s = serializer.serialize_struct("DefaultLinkExpirationDaysPolicy", 1)?; + s.serialize_field(".tag", "day_3")?; s.end() } - DropboxPasswordsPolicy::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) + DefaultLinkExpirationDaysPolicy::Day30 => { + // unit + let mut s = serializer.serialize_struct("DefaultLinkExpirationDaysPolicy", 1)?; + s.serialize_field(".tag", "day_30")?; + s.end() + } + DefaultLinkExpirationDaysPolicy::Day7 => { + // unit + let mut s = serializer.serialize_struct("DefaultLinkExpirationDaysPolicy", 1)?; + s.serialize_field(".tag", "day_7")?; + s.end() + } + DefaultLinkExpirationDaysPolicy::Day90 => { + // unit + let mut s = serializer.serialize_struct("DefaultLinkExpirationDaysPolicy", 1)?; + s.serialize_field(".tag", "day_90")?; + s.end() + } + DefaultLinkExpirationDaysPolicy::None => { + // unit + let mut s = serializer.serialize_struct("DefaultLinkExpirationDaysPolicy", 1)?; + s.serialize_field(".tag", "none")?; + s.end() + } + DefaultLinkExpirationDaysPolicy::Year1 => { + // unit + let mut s = serializer.serialize_struct("DefaultLinkExpirationDaysPolicy", 1)?; + s.serialize_field(".tag", "year_1")?; + s.end() + } + DefaultLinkExpirationDaysPolicy::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) } } } -/// Changed Dropbox Passwords policy for team. +/// Deleted team invite link. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct DropboxPasswordsPolicyChangedDetails { - /// To. - pub new_value: DropboxPasswordsPolicy, - /// From. - pub previous_value: DropboxPasswordsPolicy, +pub struct DeleteTeamInviteLinkDetails { + /// The invite link url that was deleted. + pub link_url: String, } -impl DropboxPasswordsPolicyChangedDetails { - pub fn new(new_value: DropboxPasswordsPolicy, previous_value: DropboxPasswordsPolicy) -> Self { - DropboxPasswordsPolicyChangedDetails { - new_value, - previous_value, +impl DeleteTeamInviteLinkDetails { + pub fn new(link_url: String) -> Self { + DeleteTeamInviteLinkDetails { + link_url, } } } -const DROPBOX_PASSWORDS_POLICY_CHANGED_DETAILS_FIELDS: &[&str] = &["new_value", - "previous_value"]; -impl DropboxPasswordsPolicyChangedDetails { +const DELETE_TEAM_INVITE_LINK_DETAILS_FIELDS: &[&str] = &["link_url"]; +impl DeleteTeamInviteLinkDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_new_value = None; - let mut field_previous_value = None; + ) -> Result, V::Error> { + let mut field_link_url = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "new_value" => { - if field_new_value.is_some() { - return Err(::serde::de::Error::duplicate_field("new_value")); - } - field_new_value = Some(map.next_value()?); - } - "previous_value" => { - if field_previous_value.is_some() { - return Err(::serde::de::Error::duplicate_field("previous_value")); + "link_url" => { + if field_link_url.is_some() { + return Err(::serde::de::Error::duplicate_field("link_url")); } - field_previous_value = Some(map.next_value()?); + field_link_url = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -17781,9 +20146,8 @@ impl DropboxPasswordsPolicyChangedDetails { if optional && nothing { return Ok(None); } - let result = DropboxPasswordsPolicyChangedDetails { - new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, - previous_value: field_previous_value.ok_or_else(|| ::serde::de::Error::missing_field("previous_value"))?, + let result = DeleteTeamInviteLinkDetails { + link_url: field_link_url.ok_or_else(|| ::serde::de::Error::missing_field("link_url"))?, }; Ok(Some(result)) } @@ -17793,35 +20157,34 @@ impl DropboxPasswordsPolicyChangedDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("new_value", &self.new_value)?; - s.serialize_field("previous_value", &self.previous_value)?; + s.serialize_field("link_url", &self.link_url)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for DropboxPasswordsPolicyChangedDetails { +impl<'de> ::serde::de::Deserialize<'de> for DeleteTeamInviteLinkDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = DropboxPasswordsPolicyChangedDetails; + type Value = DeleteTeamInviteLinkDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a DropboxPasswordsPolicyChangedDetails struct") + f.write_str("a DeleteTeamInviteLinkDetails struct") } fn visit_map>(self, map: V) -> Result { - DropboxPasswordsPolicyChangedDetails::internal_deserialize(map) + DeleteTeamInviteLinkDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("DropboxPasswordsPolicyChangedDetails", DROPBOX_PASSWORDS_POLICY_CHANGED_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("DeleteTeamInviteLinkDetails", DELETE_TEAM_INVITE_LINK_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for DropboxPasswordsPolicyChangedDetails { +impl ::serde::ser::Serialize for DeleteTeamInviteLinkDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("DropboxPasswordsPolicyChangedDetails", 2)?; + let mut s = serializer.serialize_struct("DeleteTeamInviteLinkDetails", 1)?; self.internal_serialize::(&mut s)?; s.end() } @@ -17829,30 +20192,30 @@ impl ::serde::ser::Serialize for DropboxPasswordsPolicyChangedDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct DropboxPasswordsPolicyChangedType { +pub struct DeleteTeamInviteLinkType { pub description: String, } -impl DropboxPasswordsPolicyChangedType { +impl DeleteTeamInviteLinkType { pub fn new(description: String) -> Self { - DropboxPasswordsPolicyChangedType { + DeleteTeamInviteLinkType { description, } } } -const DROPBOX_PASSWORDS_POLICY_CHANGED_TYPE_FIELDS: &[&str] = &["description"]; -impl DropboxPasswordsPolicyChangedType { +const DELETE_TEAM_INVITE_LINK_TYPE_FIELDS: &[&str] = &["description"]; +impl DeleteTeamInviteLinkType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -17873,7 +20236,7 @@ impl DropboxPasswordsPolicyChangedType { if optional && nothing { return Ok(None); } - let result = DropboxPasswordsPolicyChangedType { + let result = DeleteTeamInviteLinkType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -17889,83 +20252,190 @@ impl DropboxPasswordsPolicyChangedType { } } -impl<'de> ::serde::de::Deserialize<'de> for DropboxPasswordsPolicyChangedType { +impl<'de> ::serde::de::Deserialize<'de> for DeleteTeamInviteLinkType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = DropboxPasswordsPolicyChangedType; + type Value = DeleteTeamInviteLinkType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a DropboxPasswordsPolicyChangedType struct") + f.write_str("a DeleteTeamInviteLinkType struct") } fn visit_map>(self, map: V) -> Result { - DropboxPasswordsPolicyChangedType::internal_deserialize(map) + DeleteTeamInviteLinkType::internal_deserialize(map) } } - deserializer.deserialize_struct("DropboxPasswordsPolicyChangedType", DROPBOX_PASSWORDS_POLICY_CHANGED_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("DeleteTeamInviteLinkType", DELETE_TEAM_INVITE_LINK_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for DropboxPasswordsPolicyChangedType { +impl ::serde::ser::Serialize for DeleteTeamInviteLinkType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("DropboxPasswordsPolicyChangedType", 1)?; + let mut s = serializer.serialize_struct("DeleteTeamInviteLinkType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Represents a time duration: unit and amount +/// Information about linked Dropbox desktop client sessions #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct DurationLogInfo { - /// Time unit. - pub unit: TimeUnit, - /// Amount of time. - pub amount: u64, +pub struct DesktopDeviceSessionLogInfo { + /// Name of the hosting desktop. + pub host_name: String, + /// The Dropbox desktop client type. + pub client_type: crate::types::team::DesktopPlatform, + /// Information on the hosting platform. + pub platform: String, + /// Whether itu2019s possible to delete all of the account files upon unlinking. + pub is_delete_on_unlink_supported: bool, + /// The IP address of the last activity from this session. + pub ip_address: Option, + /// The time this session was created. + pub created: Option, + /// The time of the last activity from this session. + pub updated: Option, + /// Desktop session unique id. + pub session_info: Option, + /// The Dropbox client version. + pub client_version: Option, } -impl DurationLogInfo { - pub fn new(unit: TimeUnit, amount: u64) -> Self { - DurationLogInfo { - unit, - amount, +impl DesktopDeviceSessionLogInfo { + pub fn new( + host_name: String, + client_type: crate::types::team::DesktopPlatform, + platform: String, + is_delete_on_unlink_supported: bool, + ) -> Self { + DesktopDeviceSessionLogInfo { + host_name, + client_type, + platform, + is_delete_on_unlink_supported, + ip_address: None, + created: None, + updated: None, + session_info: None, + client_version: None, } } + + pub fn with_ip_address(mut self, value: IpAddress) -> Self { + self.ip_address = Some(value); + self + } + + pub fn with_created(mut self, value: crate::types::common::DropboxTimestamp) -> Self { + self.created = Some(value); + self + } + + pub fn with_updated(mut self, value: crate::types::common::DropboxTimestamp) -> Self { + self.updated = Some(value); + self + } + + pub fn with_session_info(mut self, value: DesktopSessionLogInfo) -> Self { + self.session_info = Some(value); + self + } + + pub fn with_client_version(mut self, value: String) -> Self { + self.client_version = Some(value); + self + } } -const DURATION_LOG_INFO_FIELDS: &[&str] = &["unit", - "amount"]; -impl DurationLogInfo { +const DESKTOP_DEVICE_SESSION_LOG_INFO_FIELDS: &[&str] = &["host_name", + "client_type", + "platform", + "is_delete_on_unlink_supported", + "ip_address", + "created", + "updated", + "session_info", + "client_version"]; +impl DesktopDeviceSessionLogInfo { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_unit = None; - let mut field_amount = None; + ) -> Result, V::Error> { + let mut field_host_name = None; + let mut field_client_type = None; + let mut field_platform = None; + let mut field_is_delete_on_unlink_supported = None; + let mut field_ip_address = None; + let mut field_created = None; + let mut field_updated = None; + let mut field_session_info = None; + let mut field_client_version = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "unit" => { - if field_unit.is_some() { - return Err(::serde::de::Error::duplicate_field("unit")); + "host_name" => { + if field_host_name.is_some() { + return Err(::serde::de::Error::duplicate_field("host_name")); } - field_unit = Some(map.next_value()?); + field_host_name = Some(map.next_value()?); } - "amount" => { - if field_amount.is_some() { - return Err(::serde::de::Error::duplicate_field("amount")); + "client_type" => { + if field_client_type.is_some() { + return Err(::serde::de::Error::duplicate_field("client_type")); } - field_amount = Some(map.next_value()?); + field_client_type = Some(map.next_value()?); + } + "platform" => { + if field_platform.is_some() { + return Err(::serde::de::Error::duplicate_field("platform")); + } + field_platform = Some(map.next_value()?); + } + "is_delete_on_unlink_supported" => { + if field_is_delete_on_unlink_supported.is_some() { + return Err(::serde::de::Error::duplicate_field("is_delete_on_unlink_supported")); + } + field_is_delete_on_unlink_supported = Some(map.next_value()?); + } + "ip_address" => { + if field_ip_address.is_some() { + return Err(::serde::de::Error::duplicate_field("ip_address")); + } + field_ip_address = Some(map.next_value()?); + } + "created" => { + if field_created.is_some() { + return Err(::serde::de::Error::duplicate_field("created")); + } + field_created = Some(map.next_value()?); + } + "updated" => { + if field_updated.is_some() { + return Err(::serde::de::Error::duplicate_field("updated")); + } + field_updated = Some(map.next_value()?); + } + "session_info" => { + if field_session_info.is_some() { + return Err(::serde::de::Error::duplicate_field("session_info")); + } + field_session_info = Some(map.next_value()?); + } + "client_version" => { + if field_client_version.is_some() { + return Err(::serde::de::Error::duplicate_field("client_version")); + } + field_client_version = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -17976,9 +20446,16 @@ impl DurationLogInfo { if optional && nothing { return Ok(None); } - let result = DurationLogInfo { - unit: field_unit.ok_or_else(|| ::serde::de::Error::missing_field("unit"))?, - amount: field_amount.ok_or_else(|| ::serde::de::Error::missing_field("amount"))?, + let result = DesktopDeviceSessionLogInfo { + host_name: field_host_name.ok_or_else(|| ::serde::de::Error::missing_field("host_name"))?, + client_type: field_client_type.ok_or_else(|| ::serde::de::Error::missing_field("client_type"))?, + platform: field_platform.ok_or_else(|| ::serde::de::Error::missing_field("platform"))?, + is_delete_on_unlink_supported: field_is_delete_on_unlink_supported.ok_or_else(|| ::serde::de::Error::missing_field("is_delete_on_unlink_supported"))?, + ip_address: field_ip_address.and_then(Option::flatten), + created: field_created.and_then(Option::flatten), + updated: field_updated.and_then(Option::flatten), + session_info: field_session_info.and_then(Option::flatten), + client_version: field_client_version.and_then(Option::flatten), }; Ok(Some(result)) } @@ -17988,153 +20465,92 @@ impl DurationLogInfo { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("unit", &self.unit)?; - s.serialize_field("amount", &self.amount)?; + s.serialize_field("host_name", &self.host_name)?; + s.serialize_field("client_type", &self.client_type)?; + s.serialize_field("platform", &self.platform)?; + s.serialize_field("is_delete_on_unlink_supported", &self.is_delete_on_unlink_supported)?; + if let Some(val) = &self.ip_address { + s.serialize_field("ip_address", val)?; + } + if let Some(val) = &self.created { + s.serialize_field("created", val)?; + } + if let Some(val) = &self.updated { + s.serialize_field("updated", val)?; + } + if let Some(val) = &self.session_info { + s.serialize_field("session_info", val)?; + } + if let Some(val) = &self.client_version { + s.serialize_field("client_version", val)?; + } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for DurationLogInfo { +impl<'de> ::serde::de::Deserialize<'de> for DesktopDeviceSessionLogInfo { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = DurationLogInfo; + type Value = DesktopDeviceSessionLogInfo; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a DurationLogInfo struct") + f.write_str("a DesktopDeviceSessionLogInfo struct") } fn visit_map>(self, map: V) -> Result { - DurationLogInfo::internal_deserialize(map) + DesktopDeviceSessionLogInfo::internal_deserialize(map) } } - deserializer.deserialize_struct("DurationLogInfo", DURATION_LOG_INFO_FIELDS, StructVisitor) + deserializer.deserialize_struct("DesktopDeviceSessionLogInfo", DESKTOP_DEVICE_SESSION_LOG_INFO_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for DurationLogInfo { +impl ::serde::ser::Serialize for DesktopDeviceSessionLogInfo { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("DurationLogInfo", 2)?; + let mut s = serializer.serialize_struct("DesktopDeviceSessionLogInfo", 9)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Policy for deciding whether a team can use Email to Dropbox feature -#[derive(Debug, Clone, PartialEq, Eq)] -#[non_exhaustive] // variants may be added in the future -pub enum EmailIngestPolicy { - Disabled, - Enabled, - /// Catch-all used for unrecognized values returned from the server. Encountering this value - /// typically indicates that this SDK version is out of date. - Other, -} - -impl<'de> ::serde::de::Deserialize<'de> for EmailIngestPolicy { - fn deserialize>(deserializer: D) -> Result { - // union deserializer - use serde::de::{self, MapAccess, Visitor}; - struct EnumVisitor; - impl<'de> Visitor<'de> for EnumVisitor { - type Value = EmailIngestPolicy; - fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a EmailIngestPolicy structure") - } - fn visit_map>(self, mut map: V) -> Result { - let tag: &str = match map.next_key()? { - Some(".tag") => map.next_value()?, - _ => return Err(de::Error::missing_field(".tag")) - }; - let value = match tag { - "disabled" => EmailIngestPolicy::Disabled, - "enabled" => EmailIngestPolicy::Enabled, - _ => EmailIngestPolicy::Other, - }; - crate::eat_json_fields(&mut map)?; - Ok(value) - } - } - const VARIANTS: &[&str] = &["disabled", - "enabled", - "other"]; - deserializer.deserialize_struct("EmailIngestPolicy", VARIANTS, EnumVisitor) - } -} - -impl ::serde::ser::Serialize for EmailIngestPolicy { - fn serialize(&self, serializer: S) -> Result { - // union serializer - use serde::ser::SerializeStruct; - match self { - EmailIngestPolicy::Disabled => { - // unit - let mut s = serializer.serialize_struct("EmailIngestPolicy", 1)?; - s.serialize_field(".tag", "disabled")?; - s.end() - } - EmailIngestPolicy::Enabled => { - // unit - let mut s = serializer.serialize_struct("EmailIngestPolicy", 1)?; - s.serialize_field(".tag", "enabled")?; - s.end() - } - EmailIngestPolicy::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) - } +// struct extends polymorphic struct DeviceSessionLogInfo +impl From for DeviceSessionLogInfo { + fn from(subtype: DesktopDeviceSessionLogInfo) -> Self { + DeviceSessionLogInfo::DesktopDeviceSession(subtype) } } - -/// Changed email to Dropbox policy for team. -#[derive(Debug, Clone, PartialEq, Eq)] +/// Desktop session. +#[derive(Debug, Clone, PartialEq, Eq, Default)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct EmailIngestPolicyChangedDetails { - /// To. - pub new_value: EmailIngestPolicy, - /// From. - pub previous_value: EmailIngestPolicy, +pub struct DesktopSessionLogInfo { + /// Session ID. + pub session_id: Option, } -impl EmailIngestPolicyChangedDetails { - pub fn new(new_value: EmailIngestPolicy, previous_value: EmailIngestPolicy) -> Self { - EmailIngestPolicyChangedDetails { - new_value, - previous_value, - } +impl DesktopSessionLogInfo { + pub fn with_session_id(mut self, value: crate::types::common::SessionId) -> Self { + self.session_id = Some(value); + self } } -const EMAIL_INGEST_POLICY_CHANGED_DETAILS_FIELDS: &[&str] = &["new_value", - "previous_value"]; -impl EmailIngestPolicyChangedDetails { +const DESKTOP_SESSION_LOG_INFO_FIELDS: &[&str] = &["session_id"]; +impl DesktopSessionLogInfo { + // no _opt deserializer pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( - map: V, - ) -> Result { - Self::internal_deserialize_opt(map, false).map(Option::unwrap) - } - - pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - optional: bool, - ) -> Result, V::Error> { - let mut field_new_value = None; - let mut field_previous_value = None; - let mut nothing = true; + ) -> Result { + let mut field_session_id = None; while let Some(key) = map.next_key::<&str>()? { - nothing = false; match key { - "new_value" => { - if field_new_value.is_some() { - return Err(::serde::de::Error::duplicate_field("new_value")); - } - field_new_value = Some(map.next_value()?); - } - "previous_value" => { - if field_previous_value.is_some() { - return Err(::serde::de::Error::duplicate_field("previous_value")); + "session_id" => { + if field_session_id.is_some() { + return Err(::serde::de::Error::duplicate_field("session_id")); } - field_previous_value = Some(map.next_value()?); + field_session_id = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -18142,14 +20558,10 @@ impl EmailIngestPolicyChangedDetails { } } } - if optional && nothing { - return Ok(None); - } - let result = EmailIngestPolicyChangedDetails { - new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, - previous_value: field_previous_value.ok_or_else(|| ::serde::de::Error::missing_field("previous_value"))?, + let result = DesktopSessionLogInfo { + session_id: field_session_id.and_then(Option::flatten), }; - Ok(Some(result)) + Ok(result) } pub(crate) fn internal_serialize( @@ -18157,66 +20569,117 @@ impl EmailIngestPolicyChangedDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("new_value", &self.new_value)?; - s.serialize_field("previous_value", &self.previous_value)?; + if let Some(val) = &self.session_id { + s.serialize_field("session_id", val)?; + } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for EmailIngestPolicyChangedDetails { +impl<'de> ::serde::de::Deserialize<'de> for DesktopSessionLogInfo { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = EmailIngestPolicyChangedDetails; + type Value = DesktopSessionLogInfo; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a EmailIngestPolicyChangedDetails struct") + f.write_str("a DesktopSessionLogInfo struct") } fn visit_map>(self, map: V) -> Result { - EmailIngestPolicyChangedDetails::internal_deserialize(map) + DesktopSessionLogInfo::internal_deserialize(map) } } - deserializer.deserialize_struct("EmailIngestPolicyChangedDetails", EMAIL_INGEST_POLICY_CHANGED_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("DesktopSessionLogInfo", DESKTOP_SESSION_LOG_INFO_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for EmailIngestPolicyChangedDetails { +impl ::serde::ser::Serialize for DesktopSessionLogInfo { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("EmailIngestPolicyChangedDetails", 2)?; + let mut s = serializer.serialize_struct("DesktopSessionLogInfo", 1)?; self.internal_serialize::(&mut s)?; s.end() } } +// struct extends polymorphic struct SessionLogInfo +impl From for SessionLogInfo { + fn from(subtype: DesktopSessionLogInfo) -> Self { + SessionLogInfo::Desktop(subtype) + } +} +/// Added members to device approvals exception list. +#[derive(Debug, Clone, PartialEq, Eq, Default)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct DeviceApprovalsAddExceptionDetails { +} + +const DEVICE_APPROVALS_ADD_EXCEPTION_DETAILS_FIELDS: &[&str] = &[]; +impl DeviceApprovalsAddExceptionDetails { + // no _opt deserializer + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + ) -> Result { + // ignore any fields found; none are presently recognized + crate::eat_json_fields(&mut map)?; + Ok(DeviceApprovalsAddExceptionDetails {}) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for DeviceApprovalsAddExceptionDetails { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = DeviceApprovalsAddExceptionDetails; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a DeviceApprovalsAddExceptionDetails struct") + } + fn visit_map>(self, map: V) -> Result { + DeviceApprovalsAddExceptionDetails::internal_deserialize(map) + } + } + deserializer.deserialize_struct("DeviceApprovalsAddExceptionDetails", DEVICE_APPROVALS_ADD_EXCEPTION_DETAILS_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for DeviceApprovalsAddExceptionDetails { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + serializer.serialize_struct("DeviceApprovalsAddExceptionDetails", 0)?.end() + } +} + #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct EmailIngestPolicyChangedType { +pub struct DeviceApprovalsAddExceptionType { pub description: String, } -impl EmailIngestPolicyChangedType { +impl DeviceApprovalsAddExceptionType { pub fn new(description: String) -> Self { - EmailIngestPolicyChangedType { + DeviceApprovalsAddExceptionType { description, } } } -const EMAIL_INGEST_POLICY_CHANGED_TYPE_FIELDS: &[&str] = &["description"]; -impl EmailIngestPolicyChangedType { +const DEVICE_APPROVALS_ADD_EXCEPTION_TYPE_FIELDS: &[&str] = &["description"]; +impl DeviceApprovalsAddExceptionType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -18237,7 +20700,7 @@ impl EmailIngestPolicyChangedType { if optional && nothing { return Ok(None); } - let result = EmailIngestPolicyChangedType { + let result = DeviceApprovalsAddExceptionType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -18253,131 +20716,78 @@ impl EmailIngestPolicyChangedType { } } -impl<'de> ::serde::de::Deserialize<'de> for EmailIngestPolicyChangedType { +impl<'de> ::serde::de::Deserialize<'de> for DeviceApprovalsAddExceptionType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = EmailIngestPolicyChangedType; + type Value = DeviceApprovalsAddExceptionType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a EmailIngestPolicyChangedType struct") + f.write_str("a DeviceApprovalsAddExceptionType struct") } fn visit_map>(self, map: V) -> Result { - EmailIngestPolicyChangedType::internal_deserialize(map) + DeviceApprovalsAddExceptionType::internal_deserialize(map) } } - deserializer.deserialize_struct("EmailIngestPolicyChangedType", EMAIL_INGEST_POLICY_CHANGED_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("DeviceApprovalsAddExceptionType", DEVICE_APPROVALS_ADD_EXCEPTION_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for EmailIngestPolicyChangedType { +impl ::serde::ser::Serialize for DeviceApprovalsAddExceptionType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("EmailIngestPolicyChangedType", 1)?; + let mut s = serializer.serialize_struct("DeviceApprovalsAddExceptionType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Received files via Email to Dropbox. -#[derive(Debug, Clone, PartialEq, Eq)] +/// Set/removed limit on number of computers member can link to team Dropbox account. +#[derive(Debug, Clone, PartialEq, Eq, Default)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct EmailIngestReceiveFileDetails { - /// Inbox name. - pub inbox_name: String, - /// Submitted file names. - pub attachment_names: Vec, - /// Subject of the email. - pub subject: Option, - /// The name as provided by the submitter. - pub from_name: Option, - /// The email as provided by the submitter. - pub from_email: Option, +pub struct DeviceApprovalsChangeDesktopPolicyDetails { + /// New desktop device approvals policy. Might be missing due to historical data gap. + pub new_value: Option, + /// Previous desktop device approvals policy. Might be missing due to historical data gap. + pub previous_value: Option, } -impl EmailIngestReceiveFileDetails { - pub fn new(inbox_name: String, attachment_names: Vec) -> Self { - EmailIngestReceiveFileDetails { - inbox_name, - attachment_names, - subject: None, - from_name: None, - from_email: None, - } - } - - pub fn with_subject(mut self, value: String) -> Self { - self.subject = Some(value); - self - } - - pub fn with_from_name(mut self, value: crate::types::common::DisplayNameLegacy) -> Self { - self.from_name = Some(value); +impl DeviceApprovalsChangeDesktopPolicyDetails { + pub fn with_new_value(mut self, value: DeviceApprovalsPolicy) -> Self { + self.new_value = Some(value); self } - pub fn with_from_email(mut self, value: EmailAddress) -> Self { - self.from_email = Some(value); + pub fn with_previous_value(mut self, value: DeviceApprovalsPolicy) -> Self { + self.previous_value = Some(value); self } } -const EMAIL_INGEST_RECEIVE_FILE_DETAILS_FIELDS: &[&str] = &["inbox_name", - "attachment_names", - "subject", - "from_name", - "from_email"]; -impl EmailIngestReceiveFileDetails { +const DEVICE_APPROVALS_CHANGE_DESKTOP_POLICY_DETAILS_FIELDS: &[&str] = &["new_value", + "previous_value"]; +impl DeviceApprovalsChangeDesktopPolicyDetails { + // no _opt deserializer pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( - map: V, - ) -> Result { - Self::internal_deserialize_opt(map, false).map(Option::unwrap) - } - - pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - optional: bool, - ) -> Result, V::Error> { - let mut field_inbox_name = None; - let mut field_attachment_names = None; - let mut field_subject = None; - let mut field_from_name = None; - let mut field_from_email = None; - let mut nothing = true; + ) -> Result { + let mut field_new_value = None; + let mut field_previous_value = None; while let Some(key) = map.next_key::<&str>()? { - nothing = false; match key { - "inbox_name" => { - if field_inbox_name.is_some() { - return Err(::serde::de::Error::duplicate_field("inbox_name")); - } - field_inbox_name = Some(map.next_value()?); - } - "attachment_names" => { - if field_attachment_names.is_some() { - return Err(::serde::de::Error::duplicate_field("attachment_names")); - } - field_attachment_names = Some(map.next_value()?); - } - "subject" => { - if field_subject.is_some() { - return Err(::serde::de::Error::duplicate_field("subject")); - } - field_subject = Some(map.next_value()?); - } - "from_name" => { - if field_from_name.is_some() { - return Err(::serde::de::Error::duplicate_field("from_name")); + "new_value" => { + if field_new_value.is_some() { + return Err(::serde::de::Error::duplicate_field("new_value")); } - field_from_name = Some(map.next_value()?); + field_new_value = Some(map.next_value()?); } - "from_email" => { - if field_from_email.is_some() { - return Err(::serde::de::Error::duplicate_field("from_email")); + "previous_value" => { + if field_previous_value.is_some() { + return Err(::serde::de::Error::duplicate_field("previous_value")); } - field_from_email = Some(map.next_value()?); + field_previous_value = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -18385,17 +20795,11 @@ impl EmailIngestReceiveFileDetails { } } } - if optional && nothing { - return Ok(None); - } - let result = EmailIngestReceiveFileDetails { - inbox_name: field_inbox_name.ok_or_else(|| ::serde::de::Error::missing_field("inbox_name"))?, - attachment_names: field_attachment_names.ok_or_else(|| ::serde::de::Error::missing_field("attachment_names"))?, - subject: field_subject.and_then(Option::flatten), - from_name: field_from_name.and_then(Option::flatten), - from_email: field_from_email.and_then(Option::flatten), + let result = DeviceApprovalsChangeDesktopPolicyDetails { + new_value: field_new_value.and_then(Option::flatten), + previous_value: field_previous_value.and_then(Option::flatten), }; - Ok(Some(result)) + Ok(result) } pub(crate) fn internal_serialize( @@ -18403,44 +20807,39 @@ impl EmailIngestReceiveFileDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("inbox_name", &self.inbox_name)?; - s.serialize_field("attachment_names", &self.attachment_names)?; - if let Some(val) = &self.subject { - s.serialize_field("subject", val)?; - } - if let Some(val) = &self.from_name { - s.serialize_field("from_name", val)?; + if let Some(val) = &self.new_value { + s.serialize_field("new_value", val)?; } - if let Some(val) = &self.from_email { - s.serialize_field("from_email", val)?; + if let Some(val) = &self.previous_value { + s.serialize_field("previous_value", val)?; } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for EmailIngestReceiveFileDetails { +impl<'de> ::serde::de::Deserialize<'de> for DeviceApprovalsChangeDesktopPolicyDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = EmailIngestReceiveFileDetails; + type Value = DeviceApprovalsChangeDesktopPolicyDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a EmailIngestReceiveFileDetails struct") + f.write_str("a DeviceApprovalsChangeDesktopPolicyDetails struct") } fn visit_map>(self, map: V) -> Result { - EmailIngestReceiveFileDetails::internal_deserialize(map) + DeviceApprovalsChangeDesktopPolicyDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("EmailIngestReceiveFileDetails", EMAIL_INGEST_RECEIVE_FILE_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("DeviceApprovalsChangeDesktopPolicyDetails", DEVICE_APPROVALS_CHANGE_DESKTOP_POLICY_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for EmailIngestReceiveFileDetails { +impl ::serde::ser::Serialize for DeviceApprovalsChangeDesktopPolicyDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("EmailIngestReceiveFileDetails", 5)?; + let mut s = serializer.serialize_struct("DeviceApprovalsChangeDesktopPolicyDetails", 2)?; self.internal_serialize::(&mut s)?; s.end() } @@ -18448,30 +20847,30 @@ impl ::serde::ser::Serialize for EmailIngestReceiveFileDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct EmailIngestReceiveFileType { +pub struct DeviceApprovalsChangeDesktopPolicyType { pub description: String, } -impl EmailIngestReceiveFileType { +impl DeviceApprovalsChangeDesktopPolicyType { pub fn new(description: String) -> Self { - EmailIngestReceiveFileType { + DeviceApprovalsChangeDesktopPolicyType { description, } } } -const EMAIL_INGEST_RECEIVE_FILE_TYPE_FIELDS: &[&str] = &["description"]; -impl EmailIngestReceiveFileType { +const DEVICE_APPROVALS_CHANGE_DESKTOP_POLICY_TYPE_FIELDS: &[&str] = &["description"]; +impl DeviceApprovalsChangeDesktopPolicyType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -18492,7 +20891,7 @@ impl EmailIngestReceiveFileType { if optional && nothing { return Ok(None); } - let result = EmailIngestReceiveFileType { + let result = DeviceApprovalsChangeDesktopPolicyType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -18508,104 +20907,161 @@ impl EmailIngestReceiveFileType { } } -impl<'de> ::serde::de::Deserialize<'de> for EmailIngestReceiveFileType { +impl<'de> ::serde::de::Deserialize<'de> for DeviceApprovalsChangeDesktopPolicyType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = EmailIngestReceiveFileType; + type Value = DeviceApprovalsChangeDesktopPolicyType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a EmailIngestReceiveFileType struct") + f.write_str("a DeviceApprovalsChangeDesktopPolicyType struct") } fn visit_map>(self, map: V) -> Result { - EmailIngestReceiveFileType::internal_deserialize(map) + DeviceApprovalsChangeDesktopPolicyType::internal_deserialize(map) } } - deserializer.deserialize_struct("EmailIngestReceiveFileType", EMAIL_INGEST_RECEIVE_FILE_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("DeviceApprovalsChangeDesktopPolicyType", DEVICE_APPROVALS_CHANGE_DESKTOP_POLICY_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for EmailIngestReceiveFileType { +impl ::serde::ser::Serialize for DeviceApprovalsChangeDesktopPolicyType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("EmailIngestReceiveFileType", 1)?; + let mut s = serializer.serialize_struct("DeviceApprovalsChangeDesktopPolicyType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Added members to EMM exception list. +/// Set/removed limit on number of mobile devices member can link to team Dropbox account. #[derive(Debug, Clone, PartialEq, Eq, Default)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct EmmAddExceptionDetails { +pub struct DeviceApprovalsChangeMobilePolicyDetails { + /// New mobile device approvals policy. Might be missing due to historical data gap. + pub new_value: Option, + /// Previous mobile device approvals policy. Might be missing due to historical data gap. + pub previous_value: Option, } -const EMM_ADD_EXCEPTION_DETAILS_FIELDS: &[&str] = &[]; -impl EmmAddExceptionDetails { +impl DeviceApprovalsChangeMobilePolicyDetails { + pub fn with_new_value(mut self, value: DeviceApprovalsPolicy) -> Self { + self.new_value = Some(value); + self + } + + pub fn with_previous_value(mut self, value: DeviceApprovalsPolicy) -> Self { + self.previous_value = Some(value); + self + } +} + +const DEVICE_APPROVALS_CHANGE_MOBILE_POLICY_DETAILS_FIELDS: &[&str] = &["new_value", + "previous_value"]; +impl DeviceApprovalsChangeMobilePolicyDetails { // no _opt deserializer pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - ) -> Result { - // ignore any fields found; none are presently recognized - crate::eat_json_fields(&mut map)?; - Ok(EmmAddExceptionDetails {}) + ) -> Result { + let mut field_new_value = None; + let mut field_previous_value = None; + while let Some(key) = map.next_key::<&str>()? { + match key { + "new_value" => { + if field_new_value.is_some() { + return Err(::serde::de::Error::duplicate_field("new_value")); + } + field_new_value = Some(map.next_value()?); + } + "previous_value" => { + if field_previous_value.is_some() { + return Err(::serde::de::Error::duplicate_field("previous_value")); + } + field_previous_value = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } + } + } + let result = DeviceApprovalsChangeMobilePolicyDetails { + new_value: field_new_value.and_then(Option::flatten), + previous_value: field_previous_value.and_then(Option::flatten), + }; + Ok(result) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + if let Some(val) = &self.new_value { + s.serialize_field("new_value", val)?; + } + if let Some(val) = &self.previous_value { + s.serialize_field("previous_value", val)?; + } + Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for EmmAddExceptionDetails { +impl<'de> ::serde::de::Deserialize<'de> for DeviceApprovalsChangeMobilePolicyDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = EmmAddExceptionDetails; + type Value = DeviceApprovalsChangeMobilePolicyDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a EmmAddExceptionDetails struct") + f.write_str("a DeviceApprovalsChangeMobilePolicyDetails struct") } fn visit_map>(self, map: V) -> Result { - EmmAddExceptionDetails::internal_deserialize(map) + DeviceApprovalsChangeMobilePolicyDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("EmmAddExceptionDetails", EMM_ADD_EXCEPTION_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("DeviceApprovalsChangeMobilePolicyDetails", DEVICE_APPROVALS_CHANGE_MOBILE_POLICY_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for EmmAddExceptionDetails { +impl ::serde::ser::Serialize for DeviceApprovalsChangeMobilePolicyDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - serializer.serialize_struct("EmmAddExceptionDetails", 0)?.end() + let mut s = serializer.serialize_struct("DeviceApprovalsChangeMobilePolicyDetails", 2)?; + self.internal_serialize::(&mut s)?; + s.end() } } #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct EmmAddExceptionType { +pub struct DeviceApprovalsChangeMobilePolicyType { pub description: String, } -impl EmmAddExceptionType { +impl DeviceApprovalsChangeMobilePolicyType { pub fn new(description: String) -> Self { - EmmAddExceptionType { + DeviceApprovalsChangeMobilePolicyType { description, } } } -const EMM_ADD_EXCEPTION_TYPE_FIELDS: &[&str] = &["description"]; -impl EmmAddExceptionType { +const DEVICE_APPROVALS_CHANGE_MOBILE_POLICY_TYPE_FIELDS: &[&str] = &["description"]; +impl DeviceApprovalsChangeMobilePolicyType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -18626,7 +21082,7 @@ impl EmmAddExceptionType { if optional && nothing { return Ok(None); } - let result = EmmAddExceptionType { + let result = DeviceApprovalsChangeMobilePolicyType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -18642,76 +21098,69 @@ impl EmmAddExceptionType { } } -impl<'de> ::serde::de::Deserialize<'de> for EmmAddExceptionType { +impl<'de> ::serde::de::Deserialize<'de> for DeviceApprovalsChangeMobilePolicyType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = EmmAddExceptionType; + type Value = DeviceApprovalsChangeMobilePolicyType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a EmmAddExceptionType struct") + f.write_str("a DeviceApprovalsChangeMobilePolicyType struct") } fn visit_map>(self, map: V) -> Result { - EmmAddExceptionType::internal_deserialize(map) + DeviceApprovalsChangeMobilePolicyType::internal_deserialize(map) } } - deserializer.deserialize_struct("EmmAddExceptionType", EMM_ADD_EXCEPTION_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("DeviceApprovalsChangeMobilePolicyType", DEVICE_APPROVALS_CHANGE_MOBILE_POLICY_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for EmmAddExceptionType { +impl ::serde::ser::Serialize for DeviceApprovalsChangeMobilePolicyType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("EmmAddExceptionType", 1)?; + let mut s = serializer.serialize_struct("DeviceApprovalsChangeMobilePolicyType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Enabled/disabled enterprise mobility management for members. -#[derive(Debug, Clone, PartialEq, Eq)] +/// Changed device approvals setting when member is over limit. +#[derive(Debug, Clone, PartialEq, Eq, Default)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct EmmChangePolicyDetails { - /// New enterprise mobility management policy. - pub new_value: crate::types::team_policies::EmmState, - /// Previous enterprise mobility management policy. Might be missing due to historical data gap. - pub previous_value: Option, +pub struct DeviceApprovalsChangeOverageActionDetails { + /// New over the limits policy. Might be missing due to historical data gap. + pub new_value: Option, + /// Previous over the limit policy. Might be missing due to historical data gap. + pub previous_value: Option, } -impl EmmChangePolicyDetails { - pub fn new(new_value: crate::types::team_policies::EmmState) -> Self { - EmmChangePolicyDetails { - new_value, - previous_value: None, - } +impl DeviceApprovalsChangeOverageActionDetails { + pub fn with_new_value(mut self, value: crate::types::team_policies::RolloutMethod) -> Self { + self.new_value = Some(value); + self } - pub fn with_previous_value(mut self, value: crate::types::team_policies::EmmState) -> Self { + pub fn with_previous_value( + mut self, + value: crate::types::team_policies::RolloutMethod, + ) -> Self { self.previous_value = Some(value); self } } -const EMM_CHANGE_POLICY_DETAILS_FIELDS: &[&str] = &["new_value", - "previous_value"]; -impl EmmChangePolicyDetails { +const DEVICE_APPROVALS_CHANGE_OVERAGE_ACTION_DETAILS_FIELDS: &[&str] = &["new_value", + "previous_value"]; +impl DeviceApprovalsChangeOverageActionDetails { + // no _opt deserializer pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( - map: V, - ) -> Result { - Self::internal_deserialize_opt(map, false).map(Option::unwrap) - } - - pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - optional: bool, - ) -> Result, V::Error> { + ) -> Result { let mut field_new_value = None; let mut field_previous_value = None; - let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { - nothing = false; match key { "new_value" => { if field_new_value.is_some() { @@ -18731,14 +21180,11 @@ impl EmmChangePolicyDetails { } } } - if optional && nothing { - return Ok(None); - } - let result = EmmChangePolicyDetails { - new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, + let result = DeviceApprovalsChangeOverageActionDetails { + new_value: field_new_value.and_then(Option::flatten), previous_value: field_previous_value.and_then(Option::flatten), }; - Ok(Some(result)) + Ok(result) } pub(crate) fn internal_serialize( @@ -18746,7 +21192,9 @@ impl EmmChangePolicyDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("new_value", &self.new_value)?; + if let Some(val) = &self.new_value { + s.serialize_field("new_value", val)?; + } if let Some(val) = &self.previous_value { s.serialize_field("previous_value", val)?; } @@ -18754,29 +21202,29 @@ impl EmmChangePolicyDetails { } } -impl<'de> ::serde::de::Deserialize<'de> for EmmChangePolicyDetails { +impl<'de> ::serde::de::Deserialize<'de> for DeviceApprovalsChangeOverageActionDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = EmmChangePolicyDetails; + type Value = DeviceApprovalsChangeOverageActionDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a EmmChangePolicyDetails struct") + f.write_str("a DeviceApprovalsChangeOverageActionDetails struct") } fn visit_map>(self, map: V) -> Result { - EmmChangePolicyDetails::internal_deserialize(map) + DeviceApprovalsChangeOverageActionDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("EmmChangePolicyDetails", EMM_CHANGE_POLICY_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("DeviceApprovalsChangeOverageActionDetails", DEVICE_APPROVALS_CHANGE_OVERAGE_ACTION_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for EmmChangePolicyDetails { +impl ::serde::ser::Serialize for DeviceApprovalsChangeOverageActionDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("EmmChangePolicyDetails", 2)?; + let mut s = serializer.serialize_struct("DeviceApprovalsChangeOverageActionDetails", 2)?; self.internal_serialize::(&mut s)?; s.end() } @@ -18784,30 +21232,30 @@ impl ::serde::ser::Serialize for EmmChangePolicyDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct EmmChangePolicyType { +pub struct DeviceApprovalsChangeOverageActionType { pub description: String, } -impl EmmChangePolicyType { +impl DeviceApprovalsChangeOverageActionType { pub fn new(description: String) -> Self { - EmmChangePolicyType { + DeviceApprovalsChangeOverageActionType { description, } } } -const EMM_CHANGE_POLICY_TYPE_FIELDS: &[&str] = &["description"]; -impl EmmChangePolicyType { +const DEVICE_APPROVALS_CHANGE_OVERAGE_ACTION_TYPE_FIELDS: &[&str] = &["description"]; +impl DeviceApprovalsChangeOverageActionType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -18828,7 +21276,7 @@ impl EmmChangePolicyType { if optional && nothing { return Ok(None); } - let result = EmmChangePolicyType { + let result = DeviceApprovalsChangeOverageActionType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -18844,104 +21292,161 @@ impl EmmChangePolicyType { } } -impl<'de> ::serde::de::Deserialize<'de> for EmmChangePolicyType { +impl<'de> ::serde::de::Deserialize<'de> for DeviceApprovalsChangeOverageActionType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = EmmChangePolicyType; + type Value = DeviceApprovalsChangeOverageActionType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a EmmChangePolicyType struct") + f.write_str("a DeviceApprovalsChangeOverageActionType struct") } fn visit_map>(self, map: V) -> Result { - EmmChangePolicyType::internal_deserialize(map) + DeviceApprovalsChangeOverageActionType::internal_deserialize(map) } } - deserializer.deserialize_struct("EmmChangePolicyType", EMM_CHANGE_POLICY_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("DeviceApprovalsChangeOverageActionType", DEVICE_APPROVALS_CHANGE_OVERAGE_ACTION_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for EmmChangePolicyType { +impl ::serde::ser::Serialize for DeviceApprovalsChangeOverageActionType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("EmmChangePolicyType", 1)?; + let mut s = serializer.serialize_struct("DeviceApprovalsChangeOverageActionType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Created EMM-excluded users report. +/// Changed device approvals setting when member unlinks approved device. #[derive(Debug, Clone, PartialEq, Eq, Default)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct EmmCreateExceptionsReportDetails { +pub struct DeviceApprovalsChangeUnlinkActionDetails { + /// New device unlink policy. Might be missing due to historical data gap. + pub new_value: Option, + /// Previous device unlink policy. Might be missing due to historical data gap. + pub previous_value: Option, } -const EMM_CREATE_EXCEPTIONS_REPORT_DETAILS_FIELDS: &[&str] = &[]; -impl EmmCreateExceptionsReportDetails { +impl DeviceApprovalsChangeUnlinkActionDetails { + pub fn with_new_value(mut self, value: DeviceUnlinkPolicy) -> Self { + self.new_value = Some(value); + self + } + + pub fn with_previous_value(mut self, value: DeviceUnlinkPolicy) -> Self { + self.previous_value = Some(value); + self + } +} + +const DEVICE_APPROVALS_CHANGE_UNLINK_ACTION_DETAILS_FIELDS: &[&str] = &["new_value", + "previous_value"]; +impl DeviceApprovalsChangeUnlinkActionDetails { // no _opt deserializer pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - ) -> Result { - // ignore any fields found; none are presently recognized - crate::eat_json_fields(&mut map)?; - Ok(EmmCreateExceptionsReportDetails {}) + ) -> Result { + let mut field_new_value = None; + let mut field_previous_value = None; + while let Some(key) = map.next_key::<&str>()? { + match key { + "new_value" => { + if field_new_value.is_some() { + return Err(::serde::de::Error::duplicate_field("new_value")); + } + field_new_value = Some(map.next_value()?); + } + "previous_value" => { + if field_previous_value.is_some() { + return Err(::serde::de::Error::duplicate_field("previous_value")); + } + field_previous_value = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } + } + } + let result = DeviceApprovalsChangeUnlinkActionDetails { + new_value: field_new_value.and_then(Option::flatten), + previous_value: field_previous_value.and_then(Option::flatten), + }; + Ok(result) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + if let Some(val) = &self.new_value { + s.serialize_field("new_value", val)?; + } + if let Some(val) = &self.previous_value { + s.serialize_field("previous_value", val)?; + } + Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for EmmCreateExceptionsReportDetails { +impl<'de> ::serde::de::Deserialize<'de> for DeviceApprovalsChangeUnlinkActionDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = EmmCreateExceptionsReportDetails; + type Value = DeviceApprovalsChangeUnlinkActionDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a EmmCreateExceptionsReportDetails struct") + f.write_str("a DeviceApprovalsChangeUnlinkActionDetails struct") } fn visit_map>(self, map: V) -> Result { - EmmCreateExceptionsReportDetails::internal_deserialize(map) + DeviceApprovalsChangeUnlinkActionDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("EmmCreateExceptionsReportDetails", EMM_CREATE_EXCEPTIONS_REPORT_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("DeviceApprovalsChangeUnlinkActionDetails", DEVICE_APPROVALS_CHANGE_UNLINK_ACTION_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for EmmCreateExceptionsReportDetails { +impl ::serde::ser::Serialize for DeviceApprovalsChangeUnlinkActionDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - serializer.serialize_struct("EmmCreateExceptionsReportDetails", 0)?.end() + let mut s = serializer.serialize_struct("DeviceApprovalsChangeUnlinkActionDetails", 2)?; + self.internal_serialize::(&mut s)?; + s.end() } } #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct EmmCreateExceptionsReportType { +pub struct DeviceApprovalsChangeUnlinkActionType { pub description: String, } -impl EmmCreateExceptionsReportType { +impl DeviceApprovalsChangeUnlinkActionType { pub fn new(description: String) -> Self { - EmmCreateExceptionsReportType { + DeviceApprovalsChangeUnlinkActionType { description, } } } -const EMM_CREATE_EXCEPTIONS_REPORT_TYPE_FIELDS: &[&str] = &["description"]; -impl EmmCreateExceptionsReportType { +const DEVICE_APPROVALS_CHANGE_UNLINK_ACTION_TYPE_FIELDS: &[&str] = &["description"]; +impl DeviceApprovalsChangeUnlinkActionType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -18962,7 +21467,7 @@ impl EmmCreateExceptionsReportType { if optional && nothing { return Ok(None); } - let result = EmmCreateExceptionsReportType { + let result = DeviceApprovalsChangeUnlinkActionType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -18978,104 +21483,167 @@ impl EmmCreateExceptionsReportType { } } -impl<'de> ::serde::de::Deserialize<'de> for EmmCreateExceptionsReportType { +impl<'de> ::serde::de::Deserialize<'de> for DeviceApprovalsChangeUnlinkActionType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = EmmCreateExceptionsReportType; + type Value = DeviceApprovalsChangeUnlinkActionType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a EmmCreateExceptionsReportType struct") + f.write_str("a DeviceApprovalsChangeUnlinkActionType struct") } fn visit_map>(self, map: V) -> Result { - EmmCreateExceptionsReportType::internal_deserialize(map) + DeviceApprovalsChangeUnlinkActionType::internal_deserialize(map) } } - deserializer.deserialize_struct("EmmCreateExceptionsReportType", EMM_CREATE_EXCEPTIONS_REPORT_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("DeviceApprovalsChangeUnlinkActionType", DEVICE_APPROVALS_CHANGE_UNLINK_ACTION_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for EmmCreateExceptionsReportType { +impl ::serde::ser::Serialize for DeviceApprovalsChangeUnlinkActionType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("EmmCreateExceptionsReportType", 1)?; + let mut s = serializer.serialize_struct("DeviceApprovalsChangeUnlinkActionType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Created EMM mobile app usage report. +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // variants may be added in the future +pub enum DeviceApprovalsPolicy { + Limited, + Unlimited, + /// Catch-all used for unrecognized values returned from the server. Encountering this value + /// typically indicates that this SDK version is out of date. + Other, +} + +impl<'de> ::serde::de::Deserialize<'de> for DeviceApprovalsPolicy { + fn deserialize>(deserializer: D) -> Result { + // union deserializer + use serde::de::{self, MapAccess, Visitor}; + struct EnumVisitor; + impl<'de> Visitor<'de> for EnumVisitor { + type Value = DeviceApprovalsPolicy; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a DeviceApprovalsPolicy structure") + } + fn visit_map>(self, mut map: V) -> Result { + let tag: &str = match map.next_key()? { + Some(".tag") => map.next_value()?, + _ => return Err(de::Error::missing_field(".tag")) + }; + let value = match tag { + "limited" => DeviceApprovalsPolicy::Limited, + "unlimited" => DeviceApprovalsPolicy::Unlimited, + _ => DeviceApprovalsPolicy::Other, + }; + crate::eat_json_fields(&mut map)?; + Ok(value) + } + } + const VARIANTS: &[&str] = &["limited", + "unlimited", + "other"]; + deserializer.deserialize_struct("DeviceApprovalsPolicy", VARIANTS, EnumVisitor) + } +} + +impl ::serde::ser::Serialize for DeviceApprovalsPolicy { + fn serialize(&self, serializer: S) -> Result { + // union serializer + use serde::ser::SerializeStruct; + match self { + DeviceApprovalsPolicy::Limited => { + // unit + let mut s = serializer.serialize_struct("DeviceApprovalsPolicy", 1)?; + s.serialize_field(".tag", "limited")?; + s.end() + } + DeviceApprovalsPolicy::Unlimited => { + // unit + let mut s = serializer.serialize_struct("DeviceApprovalsPolicy", 1)?; + s.serialize_field(".tag", "unlimited")?; + s.end() + } + DeviceApprovalsPolicy::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) + } + } +} + +/// Removed members from device approvals exception list. #[derive(Debug, Clone, PartialEq, Eq, Default)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct EmmCreateUsageReportDetails { +pub struct DeviceApprovalsRemoveExceptionDetails { } -const EMM_CREATE_USAGE_REPORT_DETAILS_FIELDS: &[&str] = &[]; -impl EmmCreateUsageReportDetails { +const DEVICE_APPROVALS_REMOVE_EXCEPTION_DETAILS_FIELDS: &[&str] = &[]; +impl DeviceApprovalsRemoveExceptionDetails { // no _opt deserializer pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - ) -> Result { + ) -> Result { // ignore any fields found; none are presently recognized crate::eat_json_fields(&mut map)?; - Ok(EmmCreateUsageReportDetails {}) + Ok(DeviceApprovalsRemoveExceptionDetails {}) } } -impl<'de> ::serde::de::Deserialize<'de> for EmmCreateUsageReportDetails { +impl<'de> ::serde::de::Deserialize<'de> for DeviceApprovalsRemoveExceptionDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = EmmCreateUsageReportDetails; + type Value = DeviceApprovalsRemoveExceptionDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a EmmCreateUsageReportDetails struct") + f.write_str("a DeviceApprovalsRemoveExceptionDetails struct") } fn visit_map>(self, map: V) -> Result { - EmmCreateUsageReportDetails::internal_deserialize(map) + DeviceApprovalsRemoveExceptionDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("EmmCreateUsageReportDetails", EMM_CREATE_USAGE_REPORT_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("DeviceApprovalsRemoveExceptionDetails", DEVICE_APPROVALS_REMOVE_EXCEPTION_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for EmmCreateUsageReportDetails { +impl ::serde::ser::Serialize for DeviceApprovalsRemoveExceptionDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - serializer.serialize_struct("EmmCreateUsageReportDetails", 0)?.end() + serializer.serialize_struct("DeviceApprovalsRemoveExceptionDetails", 0)?.end() } } #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct EmmCreateUsageReportType { +pub struct DeviceApprovalsRemoveExceptionType { pub description: String, } -impl EmmCreateUsageReportType { +impl DeviceApprovalsRemoveExceptionType { pub fn new(description: String) -> Self { - EmmCreateUsageReportType { + DeviceApprovalsRemoveExceptionType { description, } } } -const EMM_CREATE_USAGE_REPORT_TYPE_FIELDS: &[&str] = &["description"]; -impl EmmCreateUsageReportType { +const DEVICE_APPROVALS_REMOVE_EXCEPTION_TYPE_FIELDS: &[&str] = &["description"]; +impl DeviceApprovalsRemoveExceptionType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -19096,7 +21664,7 @@ impl EmmCreateUsageReportType { if optional && nothing { return Ok(None); } - let result = EmmCreateUsageReportType { + let result = DeviceApprovalsRemoveExceptionType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -19112,72 +21680,72 @@ impl EmmCreateUsageReportType { } } -impl<'de> ::serde::de::Deserialize<'de> for EmmCreateUsageReportType { +impl<'de> ::serde::de::Deserialize<'de> for DeviceApprovalsRemoveExceptionType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = EmmCreateUsageReportType; + type Value = DeviceApprovalsRemoveExceptionType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a EmmCreateUsageReportType struct") + f.write_str("a DeviceApprovalsRemoveExceptionType struct") } fn visit_map>(self, map: V) -> Result { - EmmCreateUsageReportType::internal_deserialize(map) + DeviceApprovalsRemoveExceptionType::internal_deserialize(map) } } - deserializer.deserialize_struct("EmmCreateUsageReportType", EMM_CREATE_USAGE_REPORT_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("DeviceApprovalsRemoveExceptionType", DEVICE_APPROVALS_REMOVE_EXCEPTION_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for EmmCreateUsageReportType { +impl ::serde::ser::Serialize for DeviceApprovalsRemoveExceptionType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("EmmCreateUsageReportType", 1)?; + let mut s = serializer.serialize_struct("DeviceApprovalsRemoveExceptionType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Failed to sign in via EMM. +/// Changed IP address associated with active desktop session. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct EmmErrorDetails { - /// Error details. - pub error_details: FailureDetailsLogInfo, +pub struct DeviceChangeIpDesktopDetails { + /// Device's session logged information. + pub device_session_info: DeviceSessionLogInfo, } -impl EmmErrorDetails { - pub fn new(error_details: FailureDetailsLogInfo) -> Self { - EmmErrorDetails { - error_details, +impl DeviceChangeIpDesktopDetails { + pub fn new(device_session_info: DeviceSessionLogInfo) -> Self { + DeviceChangeIpDesktopDetails { + device_session_info, } } } -const EMM_ERROR_DETAILS_FIELDS: &[&str] = &["error_details"]; -impl EmmErrorDetails { +const DEVICE_CHANGE_IP_DESKTOP_DETAILS_FIELDS: &[&str] = &["device_session_info"]; +impl DeviceChangeIpDesktopDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_error_details = None; + ) -> Result, V::Error> { + let mut field_device_session_info = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "error_details" => { - if field_error_details.is_some() { - return Err(::serde::de::Error::duplicate_field("error_details")); + "device_session_info" => { + if field_device_session_info.is_some() { + return Err(::serde::de::Error::duplicate_field("device_session_info")); } - field_error_details = Some(map.next_value()?); + field_device_session_info = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -19188,8 +21756,8 @@ impl EmmErrorDetails { if optional && nothing { return Ok(None); } - let result = EmmErrorDetails { - error_details: field_error_details.ok_or_else(|| ::serde::de::Error::missing_field("error_details"))?, + let result = DeviceChangeIpDesktopDetails { + device_session_info: field_device_session_info.ok_or_else(|| ::serde::de::Error::missing_field("device_session_info"))?, }; Ok(Some(result)) } @@ -19199,34 +21767,34 @@ impl EmmErrorDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("error_details", &self.error_details)?; + s.serialize_field("device_session_info", &self.device_session_info)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for EmmErrorDetails { +impl<'de> ::serde::de::Deserialize<'de> for DeviceChangeIpDesktopDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = EmmErrorDetails; + type Value = DeviceChangeIpDesktopDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a EmmErrorDetails struct") + f.write_str("a DeviceChangeIpDesktopDetails struct") } fn visit_map>(self, map: V) -> Result { - EmmErrorDetails::internal_deserialize(map) + DeviceChangeIpDesktopDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("EmmErrorDetails", EMM_ERROR_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("DeviceChangeIpDesktopDetails", DEVICE_CHANGE_IP_DESKTOP_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for EmmErrorDetails { +impl ::serde::ser::Serialize for DeviceChangeIpDesktopDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("EmmErrorDetails", 1)?; + let mut s = serializer.serialize_struct("DeviceChangeIpDesktopDetails", 1)?; self.internal_serialize::(&mut s)?; s.end() } @@ -19234,30 +21802,30 @@ impl ::serde::ser::Serialize for EmmErrorDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct EmmErrorType { +pub struct DeviceChangeIpDesktopType { pub description: String, } -impl EmmErrorType { +impl DeviceChangeIpDesktopType { pub fn new(description: String) -> Self { - EmmErrorType { + DeviceChangeIpDesktopType { description, } } } -const EMM_ERROR_TYPE_FIELDS: &[&str] = &["description"]; -impl EmmErrorType { +const DEVICE_CHANGE_IP_DESKTOP_TYPE_FIELDS: &[&str] = &["description"]; +impl DeviceChangeIpDesktopType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -19278,7 +21846,7 @@ impl EmmErrorType { if optional && nothing { return Ok(None); } - let result = EmmErrorType { + let result = DeviceChangeIpDesktopType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -19294,104 +21862,142 @@ impl EmmErrorType { } } -impl<'de> ::serde::de::Deserialize<'de> for EmmErrorType { +impl<'de> ::serde::de::Deserialize<'de> for DeviceChangeIpDesktopType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = EmmErrorType; + type Value = DeviceChangeIpDesktopType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a EmmErrorType struct") + f.write_str("a DeviceChangeIpDesktopType struct") } fn visit_map>(self, map: V) -> Result { - EmmErrorType::internal_deserialize(map) + DeviceChangeIpDesktopType::internal_deserialize(map) } } - deserializer.deserialize_struct("EmmErrorType", EMM_ERROR_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("DeviceChangeIpDesktopType", DEVICE_CHANGE_IP_DESKTOP_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for EmmErrorType { +impl ::serde::ser::Serialize for DeviceChangeIpDesktopType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("EmmErrorType", 1)?; + let mut s = serializer.serialize_struct("DeviceChangeIpDesktopType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Refreshed auth token used for setting up EMM. +/// Changed IP address associated with active mobile session. #[derive(Debug, Clone, PartialEq, Eq, Default)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct EmmRefreshAuthTokenDetails { +pub struct DeviceChangeIpMobileDetails { + /// Device's session logged information. + pub device_session_info: Option, } -const EMM_REFRESH_AUTH_TOKEN_DETAILS_FIELDS: &[&str] = &[]; -impl EmmRefreshAuthTokenDetails { +impl DeviceChangeIpMobileDetails { + pub fn with_device_session_info(mut self, value: DeviceSessionLogInfo) -> Self { + self.device_session_info = Some(value); + self + } +} + +const DEVICE_CHANGE_IP_MOBILE_DETAILS_FIELDS: &[&str] = &["device_session_info"]; +impl DeviceChangeIpMobileDetails { // no _opt deserializer pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - ) -> Result { - // ignore any fields found; none are presently recognized - crate::eat_json_fields(&mut map)?; - Ok(EmmRefreshAuthTokenDetails {}) + ) -> Result { + let mut field_device_session_info = None; + while let Some(key) = map.next_key::<&str>()? { + match key { + "device_session_info" => { + if field_device_session_info.is_some() { + return Err(::serde::de::Error::duplicate_field("device_session_info")); + } + field_device_session_info = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } + } + } + let result = DeviceChangeIpMobileDetails { + device_session_info: field_device_session_info.and_then(Option::flatten), + }; + Ok(result) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + if let Some(val) = &self.device_session_info { + s.serialize_field("device_session_info", val)?; + } + Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for EmmRefreshAuthTokenDetails { +impl<'de> ::serde::de::Deserialize<'de> for DeviceChangeIpMobileDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = EmmRefreshAuthTokenDetails; + type Value = DeviceChangeIpMobileDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a EmmRefreshAuthTokenDetails struct") + f.write_str("a DeviceChangeIpMobileDetails struct") } fn visit_map>(self, map: V) -> Result { - EmmRefreshAuthTokenDetails::internal_deserialize(map) + DeviceChangeIpMobileDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("EmmRefreshAuthTokenDetails", EMM_REFRESH_AUTH_TOKEN_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("DeviceChangeIpMobileDetails", DEVICE_CHANGE_IP_MOBILE_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for EmmRefreshAuthTokenDetails { +impl ::serde::ser::Serialize for DeviceChangeIpMobileDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - serializer.serialize_struct("EmmRefreshAuthTokenDetails", 0)?.end() + let mut s = serializer.serialize_struct("DeviceChangeIpMobileDetails", 1)?; + self.internal_serialize::(&mut s)?; + s.end() } } #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct EmmRefreshAuthTokenType { +pub struct DeviceChangeIpMobileType { pub description: String, } -impl EmmRefreshAuthTokenType { +impl DeviceChangeIpMobileType { pub fn new(description: String) -> Self { - EmmRefreshAuthTokenType { + DeviceChangeIpMobileType { description, } } } -const EMM_REFRESH_AUTH_TOKEN_TYPE_FIELDS: &[&str] = &["description"]; -impl EmmRefreshAuthTokenType { +const DEVICE_CHANGE_IP_MOBILE_TYPE_FIELDS: &[&str] = &["description"]; +impl DeviceChangeIpMobileType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -19412,7 +22018,7 @@ impl EmmRefreshAuthTokenType { if optional && nothing { return Ok(None); } - let result = EmmRefreshAuthTokenType { + let result = DeviceChangeIpMobileType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -19428,114 +22034,72 @@ impl EmmRefreshAuthTokenType { } } -impl<'de> ::serde::de::Deserialize<'de> for EmmRefreshAuthTokenType { +impl<'de> ::serde::de::Deserialize<'de> for DeviceChangeIpMobileType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = EmmRefreshAuthTokenType; + type Value = DeviceChangeIpMobileType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a EmmRefreshAuthTokenType struct") + f.write_str("a DeviceChangeIpMobileType struct") } fn visit_map>(self, map: V) -> Result { - EmmRefreshAuthTokenType::internal_deserialize(map) + DeviceChangeIpMobileType::internal_deserialize(map) } } - deserializer.deserialize_struct("EmmRefreshAuthTokenType", EMM_REFRESH_AUTH_TOKEN_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("DeviceChangeIpMobileType", DEVICE_CHANGE_IP_MOBILE_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for EmmRefreshAuthTokenType { +impl ::serde::ser::Serialize for DeviceChangeIpMobileType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("EmmRefreshAuthTokenType", 1)?; + let mut s = serializer.serialize_struct("DeviceChangeIpMobileType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Removed members from EMM exception list. -#[derive(Debug, Clone, PartialEq, Eq, Default)] -#[non_exhaustive] // structs may have more fields added in the future. -pub struct EmmRemoveExceptionDetails { -} - -const EMM_REMOVE_EXCEPTION_DETAILS_FIELDS: &[&str] = &[]; -impl EmmRemoveExceptionDetails { - // no _opt deserializer - pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( - mut map: V, - ) -> Result { - // ignore any fields found; none are presently recognized - crate::eat_json_fields(&mut map)?; - Ok(EmmRemoveExceptionDetails {}) - } -} - -impl<'de> ::serde::de::Deserialize<'de> for EmmRemoveExceptionDetails { - fn deserialize>(deserializer: D) -> Result { - // struct deserializer - use serde::de::{MapAccess, Visitor}; - struct StructVisitor; - impl<'de> Visitor<'de> for StructVisitor { - type Value = EmmRemoveExceptionDetails; - fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a EmmRemoveExceptionDetails struct") - } - fn visit_map>(self, map: V) -> Result { - EmmRemoveExceptionDetails::internal_deserialize(map) - } - } - deserializer.deserialize_struct("EmmRemoveExceptionDetails", EMM_REMOVE_EXCEPTION_DETAILS_FIELDS, StructVisitor) - } -} - -impl ::serde::ser::Serialize for EmmRemoveExceptionDetails { - fn serialize(&self, serializer: S) -> Result { - // struct serializer - use serde::ser::SerializeStruct; - serializer.serialize_struct("EmmRemoveExceptionDetails", 0)?.end() - } -} - +/// Changed IP address associated with active web session. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct EmmRemoveExceptionType { - pub description: String, +pub struct DeviceChangeIpWebDetails { + /// Web browser name. + pub user_agent: String, } -impl EmmRemoveExceptionType { - pub fn new(description: String) -> Self { - EmmRemoveExceptionType { - description, +impl DeviceChangeIpWebDetails { + pub fn new(user_agent: String) -> Self { + DeviceChangeIpWebDetails { + user_agent, } } } -const EMM_REMOVE_EXCEPTION_TYPE_FIELDS: &[&str] = &["description"]; -impl EmmRemoveExceptionType { +const DEVICE_CHANGE_IP_WEB_DETAILS_FIELDS: &[&str] = &["user_agent"]; +impl DeviceChangeIpWebDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_description = None; + ) -> Result, V::Error> { + let mut field_user_agent = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "description" => { - if field_description.is_some() { - return Err(::serde::de::Error::duplicate_field("description")); + "user_agent" => { + if field_user_agent.is_some() { + return Err(::serde::de::Error::duplicate_field("user_agent")); } - field_description = Some(map.next_value()?); + field_user_agent = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -19546,8 +22110,8 @@ impl EmmRemoveExceptionType { if optional && nothing { return Ok(None); } - let result = EmmRemoveExceptionType { - description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + let result = DeviceChangeIpWebDetails { + user_agent: field_user_agent.ok_or_else(|| ::serde::de::Error::missing_field("user_agent"))?, }; Ok(Some(result)) } @@ -19557,109 +22121,65 @@ impl EmmRemoveExceptionType { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("description", &self.description)?; + s.serialize_field("user_agent", &self.user_agent)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for EmmRemoveExceptionType { +impl<'de> ::serde::de::Deserialize<'de> for DeviceChangeIpWebDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = EmmRemoveExceptionType; + type Value = DeviceChangeIpWebDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a EmmRemoveExceptionType struct") + f.write_str("a DeviceChangeIpWebDetails struct") } fn visit_map>(self, map: V) -> Result { - EmmRemoveExceptionType::internal_deserialize(map) + DeviceChangeIpWebDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("EmmRemoveExceptionType", EMM_REMOVE_EXCEPTION_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("DeviceChangeIpWebDetails", DEVICE_CHANGE_IP_WEB_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for EmmRemoveExceptionType { +impl ::serde::ser::Serialize for DeviceChangeIpWebDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("EmmRemoveExceptionType", 1)?; + let mut s = serializer.serialize_struct("DeviceChangeIpWebDetails", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Enabled domain invites. -#[derive(Debug, Clone, PartialEq, Eq, Default)] -#[non_exhaustive] // structs may have more fields added in the future. -pub struct EnabledDomainInvitesDetails { -} - -const ENABLED_DOMAIN_INVITES_DETAILS_FIELDS: &[&str] = &[]; -impl EnabledDomainInvitesDetails { - // no _opt deserializer - pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( - mut map: V, - ) -> Result { - // ignore any fields found; none are presently recognized - crate::eat_json_fields(&mut map)?; - Ok(EnabledDomainInvitesDetails {}) - } -} - -impl<'de> ::serde::de::Deserialize<'de> for EnabledDomainInvitesDetails { - fn deserialize>(deserializer: D) -> Result { - // struct deserializer - use serde::de::{MapAccess, Visitor}; - struct StructVisitor; - impl<'de> Visitor<'de> for StructVisitor { - type Value = EnabledDomainInvitesDetails; - fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a EnabledDomainInvitesDetails struct") - } - fn visit_map>(self, map: V) -> Result { - EnabledDomainInvitesDetails::internal_deserialize(map) - } - } - deserializer.deserialize_struct("EnabledDomainInvitesDetails", ENABLED_DOMAIN_INVITES_DETAILS_FIELDS, StructVisitor) - } -} - -impl ::serde::ser::Serialize for EnabledDomainInvitesDetails { - fn serialize(&self, serializer: S) -> Result { - // struct serializer - use serde::ser::SerializeStruct; - serializer.serialize_struct("EnabledDomainInvitesDetails", 0)?.end() - } -} - #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct EnabledDomainInvitesType { +pub struct DeviceChangeIpWebType { pub description: String, } -impl EnabledDomainInvitesType { +impl DeviceChangeIpWebType { pub fn new(description: String) -> Self { - EnabledDomainInvitesType { + DeviceChangeIpWebType { description, } } } -const ENABLED_DOMAIN_INVITES_TYPE_FIELDS: &[&str] = &["description"]; -impl EnabledDomainInvitesType { +const DEVICE_CHANGE_IP_WEB_TYPE_FIELDS: &[&str] = &["description"]; +impl DeviceChangeIpWebType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -19680,7 +22200,7 @@ impl EnabledDomainInvitesType { if optional && nothing { return Ok(None); } - let result = EnabledDomainInvitesType { + let result = DeviceChangeIpWebType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -19696,72 +22216,104 @@ impl EnabledDomainInvitesType { } } -impl<'de> ::serde::de::Deserialize<'de> for EnabledDomainInvitesType { +impl<'de> ::serde::de::Deserialize<'de> for DeviceChangeIpWebType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = EnabledDomainInvitesType; + type Value = DeviceChangeIpWebType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a EnabledDomainInvitesType struct") + f.write_str("a DeviceChangeIpWebType struct") } fn visit_map>(self, map: V) -> Result { - EnabledDomainInvitesType::internal_deserialize(map) + DeviceChangeIpWebType::internal_deserialize(map) } } - deserializer.deserialize_struct("EnabledDomainInvitesType", ENABLED_DOMAIN_INVITES_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("DeviceChangeIpWebType", DEVICE_CHANGE_IP_WEB_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for EnabledDomainInvitesType { +impl ::serde::ser::Serialize for DeviceChangeIpWebType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("EnabledDomainInvitesType", 1)?; + let mut s = serializer.serialize_struct("DeviceChangeIpWebType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Ended enterprise admin session. +/// Failed to delete all files from unlinked device. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct EndedEnterpriseAdminSessionDeprecatedDetails { - /// More information about the organization or team. - pub federation_extra_details: FedExtraDetails, +pub struct DeviceDeleteOnUnlinkFailDetails { + /// The number of times that remote file deletion failed. + pub num_failures: i64, + /// Session unique id. + pub session_info: Option, + /// The device name. Might be missing due to historical data gap. + pub display_name: Option, } -impl EndedEnterpriseAdminSessionDeprecatedDetails { - pub fn new(federation_extra_details: FedExtraDetails) -> Self { - EndedEnterpriseAdminSessionDeprecatedDetails { - federation_extra_details, +impl DeviceDeleteOnUnlinkFailDetails { + pub fn new(num_failures: i64) -> Self { + DeviceDeleteOnUnlinkFailDetails { + num_failures, + session_info: None, + display_name: None, } } + + pub fn with_session_info(mut self, value: SessionLogInfo) -> Self { + self.session_info = Some(value); + self + } + + pub fn with_display_name(mut self, value: String) -> Self { + self.display_name = Some(value); + self + } } -const ENDED_ENTERPRISE_ADMIN_SESSION_DEPRECATED_DETAILS_FIELDS: &[&str] = &["federation_extra_details"]; -impl EndedEnterpriseAdminSessionDeprecatedDetails { +const DEVICE_DELETE_ON_UNLINK_FAIL_DETAILS_FIELDS: &[&str] = &["num_failures", + "session_info", + "display_name"]; +impl DeviceDeleteOnUnlinkFailDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_federation_extra_details = None; + ) -> Result, V::Error> { + let mut field_num_failures = None; + let mut field_session_info = None; + let mut field_display_name = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "federation_extra_details" => { - if field_federation_extra_details.is_some() { - return Err(::serde::de::Error::duplicate_field("federation_extra_details")); + "num_failures" => { + if field_num_failures.is_some() { + return Err(::serde::de::Error::duplicate_field("num_failures")); } - field_federation_extra_details = Some(map.next_value()?); + field_num_failures = Some(map.next_value()?); + } + "session_info" => { + if field_session_info.is_some() { + return Err(::serde::de::Error::duplicate_field("session_info")); + } + field_session_info = Some(map.next_value()?); + } + "display_name" => { + if field_display_name.is_some() { + return Err(::serde::de::Error::duplicate_field("display_name")); + } + field_display_name = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -19772,8 +22324,10 @@ impl EndedEnterpriseAdminSessionDeprecatedDetails { if optional && nothing { return Ok(None); } - let result = EndedEnterpriseAdminSessionDeprecatedDetails { - federation_extra_details: field_federation_extra_details.ok_or_else(|| ::serde::de::Error::missing_field("federation_extra_details"))?, + let result = DeviceDeleteOnUnlinkFailDetails { + num_failures: field_num_failures.ok_or_else(|| ::serde::de::Error::missing_field("num_failures"))?, + session_info: field_session_info.and_then(Option::flatten), + display_name: field_display_name.and_then(Option::flatten), }; Ok(Some(result)) } @@ -19783,34 +22337,40 @@ impl EndedEnterpriseAdminSessionDeprecatedDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("federation_extra_details", &self.federation_extra_details)?; + s.serialize_field("num_failures", &self.num_failures)?; + if let Some(val) = &self.session_info { + s.serialize_field("session_info", val)?; + } + if let Some(val) = &self.display_name { + s.serialize_field("display_name", val)?; + } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for EndedEnterpriseAdminSessionDeprecatedDetails { +impl<'de> ::serde::de::Deserialize<'de> for DeviceDeleteOnUnlinkFailDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = EndedEnterpriseAdminSessionDeprecatedDetails; + type Value = DeviceDeleteOnUnlinkFailDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a EndedEnterpriseAdminSessionDeprecatedDetails struct") + f.write_str("a DeviceDeleteOnUnlinkFailDetails struct") } fn visit_map>(self, map: V) -> Result { - EndedEnterpriseAdminSessionDeprecatedDetails::internal_deserialize(map) + DeviceDeleteOnUnlinkFailDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("EndedEnterpriseAdminSessionDeprecatedDetails", ENDED_ENTERPRISE_ADMIN_SESSION_DEPRECATED_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("DeviceDeleteOnUnlinkFailDetails", DEVICE_DELETE_ON_UNLINK_FAIL_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for EndedEnterpriseAdminSessionDeprecatedDetails { +impl ::serde::ser::Serialize for DeviceDeleteOnUnlinkFailDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("EndedEnterpriseAdminSessionDeprecatedDetails", 1)?; + let mut s = serializer.serialize_struct("DeviceDeleteOnUnlinkFailDetails", 3)?; self.internal_serialize::(&mut s)?; s.end() } @@ -19818,30 +22378,30 @@ impl ::serde::ser::Serialize for EndedEnterpriseAdminSessionDeprecatedDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct EndedEnterpriseAdminSessionDeprecatedType { +pub struct DeviceDeleteOnUnlinkFailType { pub description: String, } -impl EndedEnterpriseAdminSessionDeprecatedType { +impl DeviceDeleteOnUnlinkFailType { pub fn new(description: String) -> Self { - EndedEnterpriseAdminSessionDeprecatedType { + DeviceDeleteOnUnlinkFailType { description, } } } -const ENDED_ENTERPRISE_ADMIN_SESSION_DEPRECATED_TYPE_FIELDS: &[&str] = &["description"]; -impl EndedEnterpriseAdminSessionDeprecatedType { +const DEVICE_DELETE_ON_UNLINK_FAIL_TYPE_FIELDS: &[&str] = &["description"]; +impl DeviceDeleteOnUnlinkFailType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -19862,7 +22422,7 @@ impl EndedEnterpriseAdminSessionDeprecatedType { if optional && nothing { return Ok(None); } - let result = EndedEnterpriseAdminSessionDeprecatedType { + let result = DeviceDeleteOnUnlinkFailType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -19878,104 +22438,161 @@ impl EndedEnterpriseAdminSessionDeprecatedType { } } -impl<'de> ::serde::de::Deserialize<'de> for EndedEnterpriseAdminSessionDeprecatedType { +impl<'de> ::serde::de::Deserialize<'de> for DeviceDeleteOnUnlinkFailType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = EndedEnterpriseAdminSessionDeprecatedType; + type Value = DeviceDeleteOnUnlinkFailType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a EndedEnterpriseAdminSessionDeprecatedType struct") + f.write_str("a DeviceDeleteOnUnlinkFailType struct") } fn visit_map>(self, map: V) -> Result { - EndedEnterpriseAdminSessionDeprecatedType::internal_deserialize(map) + DeviceDeleteOnUnlinkFailType::internal_deserialize(map) } } - deserializer.deserialize_struct("EndedEnterpriseAdminSessionDeprecatedType", ENDED_ENTERPRISE_ADMIN_SESSION_DEPRECATED_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("DeviceDeleteOnUnlinkFailType", DEVICE_DELETE_ON_UNLINK_FAIL_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for EndedEnterpriseAdminSessionDeprecatedType { +impl ::serde::ser::Serialize for DeviceDeleteOnUnlinkFailType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("EndedEnterpriseAdminSessionDeprecatedType", 1)?; + let mut s = serializer.serialize_struct("DeviceDeleteOnUnlinkFailType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Ended enterprise admin session. +/// Deleted all files from unlinked device. #[derive(Debug, Clone, PartialEq, Eq, Default)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct EndedEnterpriseAdminSessionDetails { +pub struct DeviceDeleteOnUnlinkSuccessDetails { + /// Session unique id. + pub session_info: Option, + /// The device name. Might be missing due to historical data gap. + pub display_name: Option, } -const ENDED_ENTERPRISE_ADMIN_SESSION_DETAILS_FIELDS: &[&str] = &[]; -impl EndedEnterpriseAdminSessionDetails { +impl DeviceDeleteOnUnlinkSuccessDetails { + pub fn with_session_info(mut self, value: SessionLogInfo) -> Self { + self.session_info = Some(value); + self + } + + pub fn with_display_name(mut self, value: String) -> Self { + self.display_name = Some(value); + self + } +} + +const DEVICE_DELETE_ON_UNLINK_SUCCESS_DETAILS_FIELDS: &[&str] = &["session_info", + "display_name"]; +impl DeviceDeleteOnUnlinkSuccessDetails { // no _opt deserializer pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - ) -> Result { - // ignore any fields found; none are presently recognized - crate::eat_json_fields(&mut map)?; - Ok(EndedEnterpriseAdminSessionDetails {}) + ) -> Result { + let mut field_session_info = None; + let mut field_display_name = None; + while let Some(key) = map.next_key::<&str>()? { + match key { + "session_info" => { + if field_session_info.is_some() { + return Err(::serde::de::Error::duplicate_field("session_info")); + } + field_session_info = Some(map.next_value()?); + } + "display_name" => { + if field_display_name.is_some() { + return Err(::serde::de::Error::duplicate_field("display_name")); + } + field_display_name = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } + } + } + let result = DeviceDeleteOnUnlinkSuccessDetails { + session_info: field_session_info.and_then(Option::flatten), + display_name: field_display_name.and_then(Option::flatten), + }; + Ok(result) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + if let Some(val) = &self.session_info { + s.serialize_field("session_info", val)?; + } + if let Some(val) = &self.display_name { + s.serialize_field("display_name", val)?; + } + Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for EndedEnterpriseAdminSessionDetails { +impl<'de> ::serde::de::Deserialize<'de> for DeviceDeleteOnUnlinkSuccessDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = EndedEnterpriseAdminSessionDetails; + type Value = DeviceDeleteOnUnlinkSuccessDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a EndedEnterpriseAdminSessionDetails struct") + f.write_str("a DeviceDeleteOnUnlinkSuccessDetails struct") } fn visit_map>(self, map: V) -> Result { - EndedEnterpriseAdminSessionDetails::internal_deserialize(map) + DeviceDeleteOnUnlinkSuccessDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("EndedEnterpriseAdminSessionDetails", ENDED_ENTERPRISE_ADMIN_SESSION_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("DeviceDeleteOnUnlinkSuccessDetails", DEVICE_DELETE_ON_UNLINK_SUCCESS_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for EndedEnterpriseAdminSessionDetails { +impl ::serde::ser::Serialize for DeviceDeleteOnUnlinkSuccessDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - serializer.serialize_struct("EndedEnterpriseAdminSessionDetails", 0)?.end() + let mut s = serializer.serialize_struct("DeviceDeleteOnUnlinkSuccessDetails", 2)?; + self.internal_serialize::(&mut s)?; + s.end() } } #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct EndedEnterpriseAdminSessionType { +pub struct DeviceDeleteOnUnlinkSuccessType { pub description: String, } -impl EndedEnterpriseAdminSessionType { +impl DeviceDeleteOnUnlinkSuccessType { pub fn new(description: String) -> Self { - EndedEnterpriseAdminSessionType { + DeviceDeleteOnUnlinkSuccessType { description, } } } -const ENDED_ENTERPRISE_ADMIN_SESSION_TYPE_FIELDS: &[&str] = &["description"]; -impl EndedEnterpriseAdminSessionType { +const DEVICE_DELETE_ON_UNLINK_SUCCESS_TYPE_FIELDS: &[&str] = &["description"]; +impl DeviceDeleteOnUnlinkSuccessType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -19996,7 +22613,7 @@ impl EndedEnterpriseAdminSessionType { if optional && nothing { return Ok(None); } - let result = EndedEnterpriseAdminSessionType { + let result = DeviceDeleteOnUnlinkSuccessType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -20012,174 +22629,88 @@ impl EndedEnterpriseAdminSessionType { } } -impl<'de> ::serde::de::Deserialize<'de> for EndedEnterpriseAdminSessionType { +impl<'de> ::serde::de::Deserialize<'de> for DeviceDeleteOnUnlinkSuccessType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = EndedEnterpriseAdminSessionType; + type Value = DeviceDeleteOnUnlinkSuccessType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a EndedEnterpriseAdminSessionType struct") + f.write_str("a DeviceDeleteOnUnlinkSuccessType struct") } fn visit_map>(self, map: V) -> Result { - EndedEnterpriseAdminSessionType::internal_deserialize(map) + DeviceDeleteOnUnlinkSuccessType::internal_deserialize(map) } } - deserializer.deserialize_struct("EndedEnterpriseAdminSessionType", ENDED_ENTERPRISE_ADMIN_SESSION_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("DeviceDeleteOnUnlinkSuccessType", DEVICE_DELETE_ON_UNLINK_SUCCESS_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for EndedEnterpriseAdminSessionType { +impl ::serde::ser::Serialize for DeviceDeleteOnUnlinkSuccessType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("EndedEnterpriseAdminSessionType", 1)?; + let mut s = serializer.serialize_struct("DeviceDeleteOnUnlinkSuccessType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Policy for deciding whether password must be enforced when an externally shared link is updated +/// Failed to link device. #[derive(Debug, Clone, PartialEq, Eq)] -#[non_exhaustive] // variants may be added in the future -pub enum EnforceLinkPasswordPolicy { - Optional, - Required, - /// Catch-all used for unrecognized values returned from the server. Encountering this value - /// typically indicates that this SDK version is out of date. - Other, -} - -impl<'de> ::serde::de::Deserialize<'de> for EnforceLinkPasswordPolicy { - fn deserialize>(deserializer: D) -> Result { - // union deserializer - use serde::de::{self, MapAccess, Visitor}; - struct EnumVisitor; - impl<'de> Visitor<'de> for EnumVisitor { - type Value = EnforceLinkPasswordPolicy; - fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a EnforceLinkPasswordPolicy structure") - } - fn visit_map>(self, mut map: V) -> Result { - let tag: &str = match map.next_key()? { - Some(".tag") => map.next_value()?, - _ => return Err(de::Error::missing_field(".tag")) - }; - let value = match tag { - "optional" => EnforceLinkPasswordPolicy::Optional, - "required" => EnforceLinkPasswordPolicy::Required, - _ => EnforceLinkPasswordPolicy::Other, - }; - crate::eat_json_fields(&mut map)?; - Ok(value) - } - } - const VARIANTS: &[&str] = &["optional", - "required", - "other"]; - deserializer.deserialize_struct("EnforceLinkPasswordPolicy", VARIANTS, EnumVisitor) - } +#[non_exhaustive] // structs may have more fields added in the future. +pub struct DeviceLinkFailDetails { + /// A description of the device used while user approval blocked. + pub device_type: DeviceType, + /// IP address. Might be missing due to historical data gap. + pub ip_address: Option, } -impl ::serde::ser::Serialize for EnforceLinkPasswordPolicy { - fn serialize(&self, serializer: S) -> Result { - // union serializer - use serde::ser::SerializeStruct; - match self { - EnforceLinkPasswordPolicy::Optional => { - // unit - let mut s = serializer.serialize_struct("EnforceLinkPasswordPolicy", 1)?; - s.serialize_field(".tag", "optional")?; - s.end() - } - EnforceLinkPasswordPolicy::Required => { - // unit - let mut s = serializer.serialize_struct("EnforceLinkPasswordPolicy", 1)?; - s.serialize_field(".tag", "required")?; - s.end() - } - EnforceLinkPasswordPolicy::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) +impl DeviceLinkFailDetails { + pub fn new(device_type: DeviceType) -> Self { + DeviceLinkFailDetails { + device_type, + ip_address: None, } } -} - -/// Changed who can update a setting. -#[derive(Debug, Clone, PartialEq, Eq)] -#[non_exhaustive] // structs may have more fields added in the future. -pub struct EnterpriseSettingsLockingDetails { - /// The secondary team name. - pub team_name: String, - /// Settings page name. - pub settings_page_name: String, - /// Previous locked settings page state. - pub previous_settings_page_locking_state: String, - /// New locked settings page state. - pub new_settings_page_locking_state: String, -} -impl EnterpriseSettingsLockingDetails { - pub fn new( - team_name: String, - settings_page_name: String, - previous_settings_page_locking_state: String, - new_settings_page_locking_state: String, - ) -> Self { - EnterpriseSettingsLockingDetails { - team_name, - settings_page_name, - previous_settings_page_locking_state, - new_settings_page_locking_state, - } + pub fn with_ip_address(mut self, value: IpAddress) -> Self { + self.ip_address = Some(value); + self } } -const ENTERPRISE_SETTINGS_LOCKING_DETAILS_FIELDS: &[&str] = &["team_name", - "settings_page_name", - "previous_settings_page_locking_state", - "new_settings_page_locking_state"]; -impl EnterpriseSettingsLockingDetails { +const DEVICE_LINK_FAIL_DETAILS_FIELDS: &[&str] = &["device_type", + "ip_address"]; +impl DeviceLinkFailDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_team_name = None; - let mut field_settings_page_name = None; - let mut field_previous_settings_page_locking_state = None; - let mut field_new_settings_page_locking_state = None; + ) -> Result, V::Error> { + let mut field_device_type = None; + let mut field_ip_address = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "team_name" => { - if field_team_name.is_some() { - return Err(::serde::de::Error::duplicate_field("team_name")); - } - field_team_name = Some(map.next_value()?); - } - "settings_page_name" => { - if field_settings_page_name.is_some() { - return Err(::serde::de::Error::duplicate_field("settings_page_name")); - } - field_settings_page_name = Some(map.next_value()?); - } - "previous_settings_page_locking_state" => { - if field_previous_settings_page_locking_state.is_some() { - return Err(::serde::de::Error::duplicate_field("previous_settings_page_locking_state")); + "device_type" => { + if field_device_type.is_some() { + return Err(::serde::de::Error::duplicate_field("device_type")); } - field_previous_settings_page_locking_state = Some(map.next_value()?); + field_device_type = Some(map.next_value()?); } - "new_settings_page_locking_state" => { - if field_new_settings_page_locking_state.is_some() { - return Err(::serde::de::Error::duplicate_field("new_settings_page_locking_state")); + "ip_address" => { + if field_ip_address.is_some() { + return Err(::serde::de::Error::duplicate_field("ip_address")); } - field_new_settings_page_locking_state = Some(map.next_value()?); + field_ip_address = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -20190,11 +22721,9 @@ impl EnterpriseSettingsLockingDetails { if optional && nothing { return Ok(None); } - let result = EnterpriseSettingsLockingDetails { - team_name: field_team_name.ok_or_else(|| ::serde::de::Error::missing_field("team_name"))?, - settings_page_name: field_settings_page_name.ok_or_else(|| ::serde::de::Error::missing_field("settings_page_name"))?, - previous_settings_page_locking_state: field_previous_settings_page_locking_state.ok_or_else(|| ::serde::de::Error::missing_field("previous_settings_page_locking_state"))?, - new_settings_page_locking_state: field_new_settings_page_locking_state.ok_or_else(|| ::serde::de::Error::missing_field("new_settings_page_locking_state"))?, + let result = DeviceLinkFailDetails { + device_type: field_device_type.ok_or_else(|| ::serde::de::Error::missing_field("device_type"))?, + ip_address: field_ip_address.and_then(Option::flatten), }; Ok(Some(result)) } @@ -20204,37 +22733,37 @@ impl EnterpriseSettingsLockingDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("team_name", &self.team_name)?; - s.serialize_field("settings_page_name", &self.settings_page_name)?; - s.serialize_field("previous_settings_page_locking_state", &self.previous_settings_page_locking_state)?; - s.serialize_field("new_settings_page_locking_state", &self.new_settings_page_locking_state)?; + s.serialize_field("device_type", &self.device_type)?; + if let Some(val) = &self.ip_address { + s.serialize_field("ip_address", val)?; + } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for EnterpriseSettingsLockingDetails { +impl<'de> ::serde::de::Deserialize<'de> for DeviceLinkFailDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = EnterpriseSettingsLockingDetails; + type Value = DeviceLinkFailDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a EnterpriseSettingsLockingDetails struct") + f.write_str("a DeviceLinkFailDetails struct") } fn visit_map>(self, map: V) -> Result { - EnterpriseSettingsLockingDetails::internal_deserialize(map) + DeviceLinkFailDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("EnterpriseSettingsLockingDetails", ENTERPRISE_SETTINGS_LOCKING_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("DeviceLinkFailDetails", DEVICE_LINK_FAIL_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for EnterpriseSettingsLockingDetails { +impl ::serde::ser::Serialize for DeviceLinkFailDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("EnterpriseSettingsLockingDetails", 4)?; + let mut s = serializer.serialize_struct("DeviceLinkFailDetails", 2)?; self.internal_serialize::(&mut s)?; s.end() } @@ -20242,30 +22771,30 @@ impl ::serde::ser::Serialize for EnterpriseSettingsLockingDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct EnterpriseSettingsLockingType { +pub struct DeviceLinkFailType { pub description: String, } -impl EnterpriseSettingsLockingType { +impl DeviceLinkFailType { pub fn new(description: String) -> Self { - EnterpriseSettingsLockingType { + DeviceLinkFailType { description, } } } -const ENTERPRISE_SETTINGS_LOCKING_TYPE_FIELDS: &[&str] = &["description"]; -impl EnterpriseSettingsLockingType { +const DEVICE_LINK_FAIL_TYPE_FIELDS: &[&str] = &["description"]; +impl DeviceLinkFailType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -20286,7 +22815,7 @@ impl EnterpriseSettingsLockingType { if optional && nothing { return Ok(None); } - let result = EnterpriseSettingsLockingType { + let result = DeviceLinkFailType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -20302,5339 +22831,14195 @@ impl EnterpriseSettingsLockingType { } } -impl<'de> ::serde::de::Deserialize<'de> for EnterpriseSettingsLockingType { +impl<'de> ::serde::de::Deserialize<'de> for DeviceLinkFailType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = EnterpriseSettingsLockingType; + type Value = DeviceLinkFailType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a EnterpriseSettingsLockingType struct") + f.write_str("a DeviceLinkFailType struct") } fn visit_map>(self, map: V) -> Result { - EnterpriseSettingsLockingType::internal_deserialize(map) + DeviceLinkFailType::internal_deserialize(map) } } - deserializer.deserialize_struct("EnterpriseSettingsLockingType", ENTERPRISE_SETTINGS_LOCKING_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("DeviceLinkFailType", DEVICE_LINK_FAIL_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for EnterpriseSettingsLockingType { +impl ::serde::ser::Serialize for DeviceLinkFailType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("EnterpriseSettingsLockingType", 1)?; + let mut s = serializer.serialize_struct("DeviceLinkFailType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Category of events in event audit log. -#[derive(Debug, Clone, PartialEq, Eq)] -#[non_exhaustive] // variants may be added in the future -pub enum EventCategory { - /// Events that involve team related alerts. - AdminAlerting, - /// Events that apply to management of linked apps. - Apps, - /// Events that have to do with comments on files and Paper documents. - Comments, - /// Events that involve data governance actions - DataGovernance, - /// Events that apply to linked devices on mobile, desktop and Web platforms. - Devices, - /// Events that involve domain management feature: domain verification, invite enforcement and - /// account capture. - Domains, - /// Events that involve encryption. - Encryption, - /// Events that have to do with filesystem operations on files and folders: copy, move, delete, - /// etc. - FileOperations, - /// Events that apply to the file requests feature. - FileRequests, - /// Events that involve group management. - Groups, - /// Events that involve users signing in to or out of Dropbox. - Logins, - /// Events that involve team member management. - Members, - /// Events that apply to Dropbox Paper. - Paper, - /// Events that involve using, changing or resetting passwords. - Passwords, - /// Events that concern generation of admin reports, including team activity and device usage. - Reports, - /// Events that apply to all types of sharing and collaboration. - Sharing, - /// Events that apply to Dropbox Showcase. - Showcase, - /// Events that involve using or configuring single sign-on as well as administrative policies - /// concerning single sign-on. - Sso, - /// Events that involve team folder management. - TeamFolders, - /// Events that involve a change in team-wide policies. - TeamPolicies, - /// Events that involve a change in the team profile. - TeamProfile, - /// Events that involve using or configuring two factor authentication as well as administrative - /// policies concerning two factor authentication. - Tfa, - /// Events that apply to cross-team trust establishment. - TrustedTeams, - /// Catch-all used for unrecognized values returned from the server. Encountering this value - /// typically indicates that this SDK version is out of date. - Other, +/// Linked device. +#[derive(Debug, Clone, PartialEq, Eq, Default)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct DeviceLinkSuccessDetails { + /// Device's session logged information. + pub device_session_info: Option, } -impl<'de> ::serde::de::Deserialize<'de> for EventCategory { +impl DeviceLinkSuccessDetails { + pub fn with_device_session_info(mut self, value: DeviceSessionLogInfo) -> Self { + self.device_session_info = Some(value); + self + } +} + +const DEVICE_LINK_SUCCESS_DETAILS_FIELDS: &[&str] = &["device_session_info"]; +impl DeviceLinkSuccessDetails { + // no _opt deserializer + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + ) -> Result { + let mut field_device_session_info = None; + while let Some(key) = map.next_key::<&str>()? { + match key { + "device_session_info" => { + if field_device_session_info.is_some() { + return Err(::serde::de::Error::duplicate_field("device_session_info")); + } + field_device_session_info = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } + } + } + let result = DeviceLinkSuccessDetails { + device_session_info: field_device_session_info.and_then(Option::flatten), + }; + Ok(result) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + if let Some(val) = &self.device_session_info { + s.serialize_field("device_session_info", val)?; + } + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for DeviceLinkSuccessDetails { fn deserialize>(deserializer: D) -> Result { - // union deserializer - use serde::de::{self, MapAccess, Visitor}; - struct EnumVisitor; - impl<'de> Visitor<'de> for EnumVisitor { - type Value = EventCategory; + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = DeviceLinkSuccessDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a EventCategory structure") + f.write_str("a DeviceLinkSuccessDetails struct") } - fn visit_map>(self, mut map: V) -> Result { - let tag: &str = match map.next_key()? { - Some(".tag") => map.next_value()?, - _ => return Err(de::Error::missing_field(".tag")) - }; - let value = match tag { - "admin_alerting" => EventCategory::AdminAlerting, - "apps" => EventCategory::Apps, - "comments" => EventCategory::Comments, - "data_governance" => EventCategory::DataGovernance, - "devices" => EventCategory::Devices, - "domains" => EventCategory::Domains, - "encryption" => EventCategory::Encryption, - "file_operations" => EventCategory::FileOperations, - "file_requests" => EventCategory::FileRequests, - "groups" => EventCategory::Groups, - "logins" => EventCategory::Logins, - "members" => EventCategory::Members, - "paper" => EventCategory::Paper, - "passwords" => EventCategory::Passwords, - "reports" => EventCategory::Reports, - "sharing" => EventCategory::Sharing, - "showcase" => EventCategory::Showcase, - "sso" => EventCategory::Sso, - "team_folders" => EventCategory::TeamFolders, - "team_policies" => EventCategory::TeamPolicies, - "team_profile" => EventCategory::TeamProfile, - "tfa" => EventCategory::Tfa, - "trusted_teams" => EventCategory::TrustedTeams, - _ => EventCategory::Other, - }; - crate::eat_json_fields(&mut map)?; - Ok(value) + fn visit_map>(self, map: V) -> Result { + DeviceLinkSuccessDetails::internal_deserialize(map) } } - const VARIANTS: &[&str] = &["admin_alerting", - "apps", - "comments", - "data_governance", - "devices", - "domains", - "encryption", - "file_operations", - "file_requests", - "groups", - "logins", - "members", - "paper", - "passwords", - "reports", - "sharing", - "showcase", - "sso", - "team_folders", - "team_policies", - "team_profile", - "tfa", - "trusted_teams", - "other"]; - deserializer.deserialize_struct("EventCategory", VARIANTS, EnumVisitor) + deserializer.deserialize_struct("DeviceLinkSuccessDetails", DEVICE_LINK_SUCCESS_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for EventCategory { +impl ::serde::ser::Serialize for DeviceLinkSuccessDetails { fn serialize(&self, serializer: S) -> Result { - // union serializer + // struct serializer use serde::ser::SerializeStruct; - match self { - EventCategory::AdminAlerting => { - // unit - let mut s = serializer.serialize_struct("EventCategory", 1)?; - s.serialize_field(".tag", "admin_alerting")?; - s.end() - } - EventCategory::Apps => { - // unit - let mut s = serializer.serialize_struct("EventCategory", 1)?; - s.serialize_field(".tag", "apps")?; - s.end() - } - EventCategory::Comments => { - // unit - let mut s = serializer.serialize_struct("EventCategory", 1)?; - s.serialize_field(".tag", "comments")?; - s.end() - } - EventCategory::DataGovernance => { - // unit - let mut s = serializer.serialize_struct("EventCategory", 1)?; - s.serialize_field(".tag", "data_governance")?; - s.end() - } - EventCategory::Devices => { - // unit - let mut s = serializer.serialize_struct("EventCategory", 1)?; - s.serialize_field(".tag", "devices")?; - s.end() - } - EventCategory::Domains => { - // unit - let mut s = serializer.serialize_struct("EventCategory", 1)?; - s.serialize_field(".tag", "domains")?; - s.end() - } - EventCategory::Encryption => { - // unit - let mut s = serializer.serialize_struct("EventCategory", 1)?; - s.serialize_field(".tag", "encryption")?; - s.end() - } - EventCategory::FileOperations => { - // unit - let mut s = serializer.serialize_struct("EventCategory", 1)?; - s.serialize_field(".tag", "file_operations")?; - s.end() - } - EventCategory::FileRequests => { - // unit - let mut s = serializer.serialize_struct("EventCategory", 1)?; - s.serialize_field(".tag", "file_requests")?; - s.end() - } - EventCategory::Groups => { - // unit - let mut s = serializer.serialize_struct("EventCategory", 1)?; - s.serialize_field(".tag", "groups")?; - s.end() - } - EventCategory::Logins => { - // unit - let mut s = serializer.serialize_struct("EventCategory", 1)?; - s.serialize_field(".tag", "logins")?; - s.end() - } - EventCategory::Members => { - // unit - let mut s = serializer.serialize_struct("EventCategory", 1)?; - s.serialize_field(".tag", "members")?; - s.end() - } - EventCategory::Paper => { - // unit - let mut s = serializer.serialize_struct("EventCategory", 1)?; - s.serialize_field(".tag", "paper")?; - s.end() - } - EventCategory::Passwords => { - // unit - let mut s = serializer.serialize_struct("EventCategory", 1)?; - s.serialize_field(".tag", "passwords")?; - s.end() - } - EventCategory::Reports => { - // unit - let mut s = serializer.serialize_struct("EventCategory", 1)?; - s.serialize_field(".tag", "reports")?; - s.end() - } - EventCategory::Sharing => { - // unit - let mut s = serializer.serialize_struct("EventCategory", 1)?; - s.serialize_field(".tag", "sharing")?; - s.end() - } - EventCategory::Showcase => { - // unit - let mut s = serializer.serialize_struct("EventCategory", 1)?; - s.serialize_field(".tag", "showcase")?; - s.end() - } - EventCategory::Sso => { - // unit - let mut s = serializer.serialize_struct("EventCategory", 1)?; - s.serialize_field(".tag", "sso")?; - s.end() - } - EventCategory::TeamFolders => { - // unit - let mut s = serializer.serialize_struct("EventCategory", 1)?; - s.serialize_field(".tag", "team_folders")?; - s.end() + let mut s = serializer.serialize_struct("DeviceLinkSuccessDetails", 1)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct DeviceLinkSuccessType { + pub description: String, +} + +impl DeviceLinkSuccessType { + pub fn new(description: String) -> Self { + DeviceLinkSuccessType { + description, + } + } +} + +const DEVICE_LINK_SUCCESS_TYPE_FIELDS: &[&str] = &["description"]; +impl DeviceLinkSuccessType { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_description = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); + } + field_description = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } } - EventCategory::TeamPolicies => { - // unit - let mut s = serializer.serialize_struct("EventCategory", 1)?; - s.serialize_field(".tag", "team_policies")?; - s.end() + } + if optional && nothing { + return Ok(None); + } + let result = DeviceLinkSuccessType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("description", &self.description)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for DeviceLinkSuccessType { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = DeviceLinkSuccessType; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a DeviceLinkSuccessType struct") } - EventCategory::TeamProfile => { - // unit - let mut s = serializer.serialize_struct("EventCategory", 1)?; - s.serialize_field(".tag", "team_profile")?; - s.end() + fn visit_map>(self, map: V) -> Result { + DeviceLinkSuccessType::internal_deserialize(map) } - EventCategory::Tfa => { - // unit - let mut s = serializer.serialize_struct("EventCategory", 1)?; - s.serialize_field(".tag", "tfa")?; - s.end() + } + deserializer.deserialize_struct("DeviceLinkSuccessType", DEVICE_LINK_SUCCESS_TYPE_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for DeviceLinkSuccessType { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("DeviceLinkSuccessType", 1)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +/// Disabled device management. +#[derive(Debug, Clone, PartialEq, Eq, Default)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct DeviceManagementDisabledDetails { +} + +const DEVICE_MANAGEMENT_DISABLED_DETAILS_FIELDS: &[&str] = &[]; +impl DeviceManagementDisabledDetails { + // no _opt deserializer + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + ) -> Result { + // ignore any fields found; none are presently recognized + crate::eat_json_fields(&mut map)?; + Ok(DeviceManagementDisabledDetails {}) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for DeviceManagementDisabledDetails { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = DeviceManagementDisabledDetails; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a DeviceManagementDisabledDetails struct") } - EventCategory::TrustedTeams => { - // unit - let mut s = serializer.serialize_struct("EventCategory", 1)?; - s.serialize_field(".tag", "trusted_teams")?; - s.end() + fn visit_map>(self, map: V) -> Result { + DeviceManagementDisabledDetails::internal_deserialize(map) } - EventCategory::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) } + deserializer.deserialize_struct("DeviceManagementDisabledDetails", DEVICE_MANAGEMENT_DISABLED_DETAILS_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for DeviceManagementDisabledDetails { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + serializer.serialize_struct("DeviceManagementDisabledDetails", 0)?.end() } } -/// Additional fields depending on the event type. #[derive(Debug, Clone, PartialEq, Eq)] -#[non_exhaustive] // variants may be added in the future -pub enum EventDetails { - AdminAlertingAlertStateChangedDetails(AdminAlertingAlertStateChangedDetails), - AdminAlertingChangedAlertConfigDetails(AdminAlertingChangedAlertConfigDetails), - AdminAlertingTriggeredAlertDetails(AdminAlertingTriggeredAlertDetails), - RansomwareRestoreProcessCompletedDetails(RansomwareRestoreProcessCompletedDetails), - RansomwareRestoreProcessStartedDetails(RansomwareRestoreProcessStartedDetails), - AppBlockedByPermissionsDetails(AppBlockedByPermissionsDetails), - AppLinkTeamDetails(AppLinkTeamDetails), - AppLinkUserDetails(AppLinkUserDetails), - AppUnlinkTeamDetails(AppUnlinkTeamDetails), - AppUnlinkUserDetails(AppUnlinkUserDetails), - IntegrationConnectedDetails(IntegrationConnectedDetails), - IntegrationDisconnectedDetails(IntegrationDisconnectedDetails), - FileAddCommentDetails(FileAddCommentDetails), - FileChangeCommentSubscriptionDetails(FileChangeCommentSubscriptionDetails), - FileDeleteCommentDetails(FileDeleteCommentDetails), - FileEditCommentDetails(FileEditCommentDetails), - FileLikeCommentDetails(FileLikeCommentDetails), - FileResolveCommentDetails(FileResolveCommentDetails), - FileUnlikeCommentDetails(FileUnlikeCommentDetails), - FileUnresolveCommentDetails(FileUnresolveCommentDetails), - GovernancePolicyAddFoldersDetails(GovernancePolicyAddFoldersDetails), - GovernancePolicyAddFolderFailedDetails(GovernancePolicyAddFolderFailedDetails), - GovernancePolicyContentDisposedDetails(GovernancePolicyContentDisposedDetails), - GovernancePolicyCreateDetails(GovernancePolicyCreateDetails), - GovernancePolicyDeleteDetails(GovernancePolicyDeleteDetails), - GovernancePolicyEditDetailsDetails(GovernancePolicyEditDetailsDetails), - GovernancePolicyEditDurationDetails(GovernancePolicyEditDurationDetails), - GovernancePolicyExportCreatedDetails(GovernancePolicyExportCreatedDetails), - GovernancePolicyExportRemovedDetails(GovernancePolicyExportRemovedDetails), - GovernancePolicyRemoveFoldersDetails(GovernancePolicyRemoveFoldersDetails), - GovernancePolicyReportCreatedDetails(GovernancePolicyReportCreatedDetails), - GovernancePolicyZipPartDownloadedDetails(GovernancePolicyZipPartDownloadedDetails), - LegalHoldsActivateAHoldDetails(LegalHoldsActivateAHoldDetails), - LegalHoldsAddMembersDetails(LegalHoldsAddMembersDetails), - LegalHoldsChangeHoldDetailsDetails(LegalHoldsChangeHoldDetailsDetails), - LegalHoldsChangeHoldNameDetails(LegalHoldsChangeHoldNameDetails), - LegalHoldsExportAHoldDetails(LegalHoldsExportAHoldDetails), - LegalHoldsExportCancelledDetails(LegalHoldsExportCancelledDetails), - LegalHoldsExportDownloadedDetails(LegalHoldsExportDownloadedDetails), - LegalHoldsExportRemovedDetails(LegalHoldsExportRemovedDetails), - LegalHoldsReleaseAHoldDetails(LegalHoldsReleaseAHoldDetails), - LegalHoldsRemoveMembersDetails(LegalHoldsRemoveMembersDetails), - LegalHoldsReportAHoldDetails(LegalHoldsReportAHoldDetails), - DeviceChangeIpDesktopDetails(DeviceChangeIpDesktopDetails), - DeviceChangeIpMobileDetails(DeviceChangeIpMobileDetails), - DeviceChangeIpWebDetails(DeviceChangeIpWebDetails), - DeviceDeleteOnUnlinkFailDetails(DeviceDeleteOnUnlinkFailDetails), - DeviceDeleteOnUnlinkSuccessDetails(DeviceDeleteOnUnlinkSuccessDetails), - DeviceLinkFailDetails(DeviceLinkFailDetails), - DeviceLinkSuccessDetails(DeviceLinkSuccessDetails), - DeviceManagementDisabledDetails(DeviceManagementDisabledDetails), - DeviceManagementEnabledDetails(DeviceManagementEnabledDetails), - DeviceSyncBackupStatusChangedDetails(DeviceSyncBackupStatusChangedDetails), - DeviceUnlinkDetails(DeviceUnlinkDetails), - DropboxPasswordsExportedDetails(DropboxPasswordsExportedDetails), - DropboxPasswordsNewDeviceEnrolledDetails(DropboxPasswordsNewDeviceEnrolledDetails), - EmmRefreshAuthTokenDetails(EmmRefreshAuthTokenDetails), - ExternalDriveBackupEligibilityStatusCheckedDetails(ExternalDriveBackupEligibilityStatusCheckedDetails), - ExternalDriveBackupStatusChangedDetails(ExternalDriveBackupStatusChangedDetails), - AccountCaptureChangeAvailabilityDetails(AccountCaptureChangeAvailabilityDetails), - AccountCaptureMigrateAccountDetails(AccountCaptureMigrateAccountDetails), - AccountCaptureNotificationEmailsSentDetails(AccountCaptureNotificationEmailsSentDetails), - AccountCaptureRelinquishAccountDetails(AccountCaptureRelinquishAccountDetails), - DisabledDomainInvitesDetails(DisabledDomainInvitesDetails), - DomainInvitesApproveRequestToJoinTeamDetails(DomainInvitesApproveRequestToJoinTeamDetails), - DomainInvitesDeclineRequestToJoinTeamDetails(DomainInvitesDeclineRequestToJoinTeamDetails), - DomainInvitesEmailExistingUsersDetails(DomainInvitesEmailExistingUsersDetails), - DomainInvitesRequestToJoinTeamDetails(DomainInvitesRequestToJoinTeamDetails), - DomainInvitesSetInviteNewUserPrefToNoDetails(DomainInvitesSetInviteNewUserPrefToNoDetails), - DomainInvitesSetInviteNewUserPrefToYesDetails(DomainInvitesSetInviteNewUserPrefToYesDetails), - DomainVerificationAddDomainFailDetails(DomainVerificationAddDomainFailDetails), - DomainVerificationAddDomainSuccessDetails(DomainVerificationAddDomainSuccessDetails), - DomainVerificationRemoveDomainDetails(DomainVerificationRemoveDomainDetails), - EnabledDomainInvitesDetails(EnabledDomainInvitesDetails), - TeamEncryptionKeyCancelKeyDeletionDetails(TeamEncryptionKeyCancelKeyDeletionDetails), - TeamEncryptionKeyCreateKeyDetails(TeamEncryptionKeyCreateKeyDetails), - TeamEncryptionKeyDeleteKeyDetails(TeamEncryptionKeyDeleteKeyDetails), - TeamEncryptionKeyDisableKeyDetails(TeamEncryptionKeyDisableKeyDetails), - TeamEncryptionKeyEnableKeyDetails(TeamEncryptionKeyEnableKeyDetails), - TeamEncryptionKeyRotateKeyDetails(TeamEncryptionKeyRotateKeyDetails), - TeamEncryptionKeyScheduleKeyDeletionDetails(TeamEncryptionKeyScheduleKeyDeletionDetails), - ApplyNamingConventionDetails(ApplyNamingConventionDetails), - CreateFolderDetails(CreateFolderDetails), - FileAddDetails(FileAddDetails), - FileAddFromAutomationDetails(FileAddFromAutomationDetails), - FileCopyDetails(FileCopyDetails), - FileDeleteDetails(FileDeleteDetails), - FileDownloadDetails(FileDownloadDetails), - FileEditDetails(FileEditDetails), - FileGetCopyReferenceDetails(FileGetCopyReferenceDetails), - FileLockingLockStatusChangedDetails(FileLockingLockStatusChangedDetails), - FileMoveDetails(FileMoveDetails), - FilePermanentlyDeleteDetails(FilePermanentlyDeleteDetails), - FilePreviewDetails(FilePreviewDetails), - FileRenameDetails(FileRenameDetails), - FileRestoreDetails(FileRestoreDetails), - FileRevertDetails(FileRevertDetails), - FileRollbackChangesDetails(FileRollbackChangesDetails), - FileSaveCopyReferenceDetails(FileSaveCopyReferenceDetails), - FolderOverviewDescriptionChangedDetails(FolderOverviewDescriptionChangedDetails), - FolderOverviewItemPinnedDetails(FolderOverviewItemPinnedDetails), - FolderOverviewItemUnpinnedDetails(FolderOverviewItemUnpinnedDetails), - ObjectLabelAddedDetails(ObjectLabelAddedDetails), - ObjectLabelRemovedDetails(ObjectLabelRemovedDetails), - ObjectLabelUpdatedValueDetails(ObjectLabelUpdatedValueDetails), - OrganizeFolderWithTidyDetails(OrganizeFolderWithTidyDetails), - ReplayFileDeleteDetails(ReplayFileDeleteDetails), - RewindFolderDetails(RewindFolderDetails), - UndoNamingConventionDetails(UndoNamingConventionDetails), - UndoOrganizeFolderWithTidyDetails(UndoOrganizeFolderWithTidyDetails), - UserTagsAddedDetails(UserTagsAddedDetails), - UserTagsRemovedDetails(UserTagsRemovedDetails), - EmailIngestReceiveFileDetails(EmailIngestReceiveFileDetails), - FileRequestChangeDetails(FileRequestChangeDetails), - FileRequestCloseDetails(FileRequestCloseDetails), - FileRequestCreateDetails(FileRequestCreateDetails), - FileRequestDeleteDetails(FileRequestDeleteDetails), - FileRequestReceiveFileDetails(FileRequestReceiveFileDetails), - GroupAddExternalIdDetails(GroupAddExternalIdDetails), - GroupAddMemberDetails(GroupAddMemberDetails), - GroupChangeExternalIdDetails(GroupChangeExternalIdDetails), - GroupChangeManagementTypeDetails(GroupChangeManagementTypeDetails), - GroupChangeMemberRoleDetails(GroupChangeMemberRoleDetails), - GroupCreateDetails(GroupCreateDetails), - GroupDeleteDetails(GroupDeleteDetails), - GroupDescriptionUpdatedDetails(GroupDescriptionUpdatedDetails), - GroupJoinPolicyUpdatedDetails(GroupJoinPolicyUpdatedDetails), - GroupMovedDetails(GroupMovedDetails), - GroupRemoveExternalIdDetails(GroupRemoveExternalIdDetails), - GroupRemoveMemberDetails(GroupRemoveMemberDetails), - GroupRenameDetails(GroupRenameDetails), - AccountLockOrUnlockedDetails(AccountLockOrUnlockedDetails), - EmmErrorDetails(EmmErrorDetails), - GuestAdminSignedInViaTrustedTeamsDetails(GuestAdminSignedInViaTrustedTeamsDetails), - GuestAdminSignedOutViaTrustedTeamsDetails(GuestAdminSignedOutViaTrustedTeamsDetails), - LoginFailDetails(LoginFailDetails), - LoginSuccessDetails(LoginSuccessDetails), - LogoutDetails(LogoutDetails), - ResellerSupportSessionEndDetails(ResellerSupportSessionEndDetails), - ResellerSupportSessionStartDetails(ResellerSupportSessionStartDetails), - SignInAsSessionEndDetails(SignInAsSessionEndDetails), - SignInAsSessionStartDetails(SignInAsSessionStartDetails), - SsoErrorDetails(SsoErrorDetails), - BackupAdminInvitationSentDetails(BackupAdminInvitationSentDetails), - BackupInvitationOpenedDetails(BackupInvitationOpenedDetails), - CreateTeamInviteLinkDetails(CreateTeamInviteLinkDetails), - DeleteTeamInviteLinkDetails(DeleteTeamInviteLinkDetails), - MemberAddExternalIdDetails(MemberAddExternalIdDetails), - MemberAddNameDetails(MemberAddNameDetails), - MemberChangeAdminRoleDetails(MemberChangeAdminRoleDetails), - MemberChangeEmailDetails(MemberChangeEmailDetails), - MemberChangeExternalIdDetails(MemberChangeExternalIdDetails), - MemberChangeMembershipTypeDetails(MemberChangeMembershipTypeDetails), - MemberChangeNameDetails(MemberChangeNameDetails), - MemberChangeResellerRoleDetails(MemberChangeResellerRoleDetails), - MemberChangeStatusDetails(MemberChangeStatusDetails), - MemberDeleteManualContactsDetails(MemberDeleteManualContactsDetails), - MemberDeleteProfilePhotoDetails(MemberDeleteProfilePhotoDetails), - MemberPermanentlyDeleteAccountContentsDetails(MemberPermanentlyDeleteAccountContentsDetails), - MemberRemoveExternalIdDetails(MemberRemoveExternalIdDetails), - MemberSetProfilePhotoDetails(MemberSetProfilePhotoDetails), - MemberSpaceLimitsAddCustomQuotaDetails(MemberSpaceLimitsAddCustomQuotaDetails), - MemberSpaceLimitsChangeCustomQuotaDetails(MemberSpaceLimitsChangeCustomQuotaDetails), - MemberSpaceLimitsChangeStatusDetails(MemberSpaceLimitsChangeStatusDetails), - MemberSpaceLimitsRemoveCustomQuotaDetails(MemberSpaceLimitsRemoveCustomQuotaDetails), - MemberSuggestDetails(MemberSuggestDetails), - MemberTransferAccountContentsDetails(MemberTransferAccountContentsDetails), - PendingSecondaryEmailAddedDetails(PendingSecondaryEmailAddedDetails), - SecondaryEmailDeletedDetails(SecondaryEmailDeletedDetails), - SecondaryEmailVerifiedDetails(SecondaryEmailVerifiedDetails), - SecondaryMailsPolicyChangedDetails(SecondaryMailsPolicyChangedDetails), - BinderAddPageDetails(BinderAddPageDetails), - BinderAddSectionDetails(BinderAddSectionDetails), - BinderRemovePageDetails(BinderRemovePageDetails), - BinderRemoveSectionDetails(BinderRemoveSectionDetails), - BinderRenamePageDetails(BinderRenamePageDetails), - BinderRenameSectionDetails(BinderRenameSectionDetails), - BinderReorderPageDetails(BinderReorderPageDetails), - BinderReorderSectionDetails(BinderReorderSectionDetails), - PaperContentAddMemberDetails(PaperContentAddMemberDetails), - PaperContentAddToFolderDetails(PaperContentAddToFolderDetails), - PaperContentArchiveDetails(PaperContentArchiveDetails), - PaperContentCreateDetails(PaperContentCreateDetails), - PaperContentPermanentlyDeleteDetails(PaperContentPermanentlyDeleteDetails), - PaperContentRemoveFromFolderDetails(PaperContentRemoveFromFolderDetails), - PaperContentRemoveMemberDetails(PaperContentRemoveMemberDetails), - PaperContentRenameDetails(PaperContentRenameDetails), - PaperContentRestoreDetails(PaperContentRestoreDetails), - PaperDocAddCommentDetails(PaperDocAddCommentDetails), - PaperDocChangeMemberRoleDetails(PaperDocChangeMemberRoleDetails), - PaperDocChangeSharingPolicyDetails(PaperDocChangeSharingPolicyDetails), - PaperDocChangeSubscriptionDetails(PaperDocChangeSubscriptionDetails), - PaperDocDeletedDetails(PaperDocDeletedDetails), - PaperDocDeleteCommentDetails(PaperDocDeleteCommentDetails), - PaperDocDownloadDetails(PaperDocDownloadDetails), - PaperDocEditDetails(PaperDocEditDetails), - PaperDocEditCommentDetails(PaperDocEditCommentDetails), - PaperDocFollowedDetails(PaperDocFollowedDetails), - PaperDocMentionDetails(PaperDocMentionDetails), - PaperDocOwnershipChangedDetails(PaperDocOwnershipChangedDetails), - PaperDocRequestAccessDetails(PaperDocRequestAccessDetails), - PaperDocResolveCommentDetails(PaperDocResolveCommentDetails), - PaperDocRevertDetails(PaperDocRevertDetails), - PaperDocSlackShareDetails(PaperDocSlackShareDetails), - PaperDocTeamInviteDetails(PaperDocTeamInviteDetails), - PaperDocTrashedDetails(PaperDocTrashedDetails), - PaperDocUnresolveCommentDetails(PaperDocUnresolveCommentDetails), - PaperDocUntrashedDetails(PaperDocUntrashedDetails), - PaperDocViewDetails(PaperDocViewDetails), - PaperExternalViewAllowDetails(PaperExternalViewAllowDetails), - PaperExternalViewDefaultTeamDetails(PaperExternalViewDefaultTeamDetails), - PaperExternalViewForbidDetails(PaperExternalViewForbidDetails), - PaperFolderChangeSubscriptionDetails(PaperFolderChangeSubscriptionDetails), - PaperFolderDeletedDetails(PaperFolderDeletedDetails), - PaperFolderFollowedDetails(PaperFolderFollowedDetails), - PaperFolderTeamInviteDetails(PaperFolderTeamInviteDetails), - PaperPublishedLinkChangePermissionDetails(PaperPublishedLinkChangePermissionDetails), - PaperPublishedLinkCreateDetails(PaperPublishedLinkCreateDetails), - PaperPublishedLinkDisabledDetails(PaperPublishedLinkDisabledDetails), - PaperPublishedLinkViewDetails(PaperPublishedLinkViewDetails), - PasswordChangeDetails(PasswordChangeDetails), - PasswordResetDetails(PasswordResetDetails), - PasswordResetAllDetails(PasswordResetAllDetails), - ClassificationCreateReportDetails(ClassificationCreateReportDetails), - ClassificationCreateReportFailDetails(ClassificationCreateReportFailDetails), - EmmCreateExceptionsReportDetails(EmmCreateExceptionsReportDetails), - EmmCreateUsageReportDetails(EmmCreateUsageReportDetails), - ExportMembersReportDetails(ExportMembersReportDetails), - ExportMembersReportFailDetails(ExportMembersReportFailDetails), - ExternalSharingCreateReportDetails(ExternalSharingCreateReportDetails), - ExternalSharingReportFailedDetails(ExternalSharingReportFailedDetails), - NoExpirationLinkGenCreateReportDetails(NoExpirationLinkGenCreateReportDetails), - NoExpirationLinkGenReportFailedDetails(NoExpirationLinkGenReportFailedDetails), - NoPasswordLinkGenCreateReportDetails(NoPasswordLinkGenCreateReportDetails), - NoPasswordLinkGenReportFailedDetails(NoPasswordLinkGenReportFailedDetails), - NoPasswordLinkViewCreateReportDetails(NoPasswordLinkViewCreateReportDetails), - NoPasswordLinkViewReportFailedDetails(NoPasswordLinkViewReportFailedDetails), - OutdatedLinkViewCreateReportDetails(OutdatedLinkViewCreateReportDetails), - OutdatedLinkViewReportFailedDetails(OutdatedLinkViewReportFailedDetails), - PaperAdminExportStartDetails(PaperAdminExportStartDetails), - RansomwareAlertCreateReportDetails(RansomwareAlertCreateReportDetails), - RansomwareAlertCreateReportFailedDetails(RansomwareAlertCreateReportFailedDetails), - SmartSyncCreateAdminPrivilegeReportDetails(SmartSyncCreateAdminPrivilegeReportDetails), - TeamActivityCreateReportDetails(TeamActivityCreateReportDetails), - TeamActivityCreateReportFailDetails(TeamActivityCreateReportFailDetails), - CollectionShareDetails(CollectionShareDetails), - FileTransfersFileAddDetails(FileTransfersFileAddDetails), - FileTransfersTransferDeleteDetails(FileTransfersTransferDeleteDetails), - FileTransfersTransferDownloadDetails(FileTransfersTransferDownloadDetails), - FileTransfersTransferSendDetails(FileTransfersTransferSendDetails), - FileTransfersTransferViewDetails(FileTransfersTransferViewDetails), - NoteAclInviteOnlyDetails(NoteAclInviteOnlyDetails), - NoteAclLinkDetails(NoteAclLinkDetails), - NoteAclTeamLinkDetails(NoteAclTeamLinkDetails), - NoteSharedDetails(NoteSharedDetails), - NoteShareReceiveDetails(NoteShareReceiveDetails), - OpenNoteSharedDetails(OpenNoteSharedDetails), - ReplayFileSharedLinkCreatedDetails(ReplayFileSharedLinkCreatedDetails), - ReplayFileSharedLinkModifiedDetails(ReplayFileSharedLinkModifiedDetails), - ReplayProjectTeamAddDetails(ReplayProjectTeamAddDetails), - ReplayProjectTeamDeleteDetails(ReplayProjectTeamDeleteDetails), - SfAddGroupDetails(SfAddGroupDetails), - SfAllowNonMembersToViewSharedLinksDetails(SfAllowNonMembersToViewSharedLinksDetails), - SfExternalInviteWarnDetails(SfExternalInviteWarnDetails), - SfFbInviteDetails(SfFbInviteDetails), - SfFbInviteChangeRoleDetails(SfFbInviteChangeRoleDetails), - SfFbUninviteDetails(SfFbUninviteDetails), - SfInviteGroupDetails(SfInviteGroupDetails), - SfTeamGrantAccessDetails(SfTeamGrantAccessDetails), - SfTeamInviteDetails(SfTeamInviteDetails), - SfTeamInviteChangeRoleDetails(SfTeamInviteChangeRoleDetails), - SfTeamJoinDetails(SfTeamJoinDetails), - SfTeamJoinFromOobLinkDetails(SfTeamJoinFromOobLinkDetails), - SfTeamUninviteDetails(SfTeamUninviteDetails), - SharedContentAddInviteesDetails(SharedContentAddInviteesDetails), - SharedContentAddLinkExpiryDetails(SharedContentAddLinkExpiryDetails), - SharedContentAddLinkPasswordDetails(SharedContentAddLinkPasswordDetails), - SharedContentAddMemberDetails(SharedContentAddMemberDetails), - SharedContentChangeDownloadsPolicyDetails(SharedContentChangeDownloadsPolicyDetails), - SharedContentChangeInviteeRoleDetails(SharedContentChangeInviteeRoleDetails), - SharedContentChangeLinkAudienceDetails(SharedContentChangeLinkAudienceDetails), - SharedContentChangeLinkExpiryDetails(SharedContentChangeLinkExpiryDetails), - SharedContentChangeLinkPasswordDetails(SharedContentChangeLinkPasswordDetails), - SharedContentChangeMemberRoleDetails(SharedContentChangeMemberRoleDetails), - SharedContentChangeViewerInfoPolicyDetails(SharedContentChangeViewerInfoPolicyDetails), - SharedContentClaimInvitationDetails(SharedContentClaimInvitationDetails), - SharedContentCopyDetails(SharedContentCopyDetails), - SharedContentDownloadDetails(SharedContentDownloadDetails), - SharedContentRelinquishMembershipDetails(SharedContentRelinquishMembershipDetails), - SharedContentRemoveInviteesDetails(SharedContentRemoveInviteesDetails), - SharedContentRemoveLinkExpiryDetails(SharedContentRemoveLinkExpiryDetails), - SharedContentRemoveLinkPasswordDetails(SharedContentRemoveLinkPasswordDetails), - SharedContentRemoveMemberDetails(SharedContentRemoveMemberDetails), - SharedContentRequestAccessDetails(SharedContentRequestAccessDetails), - SharedContentRestoreInviteesDetails(SharedContentRestoreInviteesDetails), - SharedContentRestoreMemberDetails(SharedContentRestoreMemberDetails), - SharedContentUnshareDetails(SharedContentUnshareDetails), - SharedContentViewDetails(SharedContentViewDetails), - SharedFolderChangeLinkPolicyDetails(SharedFolderChangeLinkPolicyDetails), - SharedFolderChangeMembersInheritancePolicyDetails(SharedFolderChangeMembersInheritancePolicyDetails), - SharedFolderChangeMembersManagementPolicyDetails(SharedFolderChangeMembersManagementPolicyDetails), - SharedFolderChangeMembersPolicyDetails(SharedFolderChangeMembersPolicyDetails), - SharedFolderCreateDetails(SharedFolderCreateDetails), - SharedFolderDeclineInvitationDetails(SharedFolderDeclineInvitationDetails), - SharedFolderMountDetails(SharedFolderMountDetails), - SharedFolderNestDetails(SharedFolderNestDetails), - SharedFolderTransferOwnershipDetails(SharedFolderTransferOwnershipDetails), - SharedFolderUnmountDetails(SharedFolderUnmountDetails), - SharedLinkAddExpiryDetails(SharedLinkAddExpiryDetails), - SharedLinkChangeExpiryDetails(SharedLinkChangeExpiryDetails), - SharedLinkChangeVisibilityDetails(SharedLinkChangeVisibilityDetails), - SharedLinkCopyDetails(SharedLinkCopyDetails), - SharedLinkCreateDetails(SharedLinkCreateDetails), - SharedLinkDisableDetails(SharedLinkDisableDetails), - SharedLinkDownloadDetails(SharedLinkDownloadDetails), - SharedLinkRemoveExpiryDetails(SharedLinkRemoveExpiryDetails), - SharedLinkSettingsAddExpirationDetails(SharedLinkSettingsAddExpirationDetails), - SharedLinkSettingsAddPasswordDetails(SharedLinkSettingsAddPasswordDetails), - SharedLinkSettingsAllowDownloadDisabledDetails(SharedLinkSettingsAllowDownloadDisabledDetails), - SharedLinkSettingsAllowDownloadEnabledDetails(SharedLinkSettingsAllowDownloadEnabledDetails), - SharedLinkSettingsChangeAudienceDetails(SharedLinkSettingsChangeAudienceDetails), - SharedLinkSettingsChangeExpirationDetails(SharedLinkSettingsChangeExpirationDetails), - SharedLinkSettingsChangePasswordDetails(SharedLinkSettingsChangePasswordDetails), - SharedLinkSettingsRemoveExpirationDetails(SharedLinkSettingsRemoveExpirationDetails), - SharedLinkSettingsRemovePasswordDetails(SharedLinkSettingsRemovePasswordDetails), - SharedLinkShareDetails(SharedLinkShareDetails), - SharedLinkViewDetails(SharedLinkViewDetails), - SharedNoteOpenedDetails(SharedNoteOpenedDetails), - ShmodelDisableDownloadsDetails(ShmodelDisableDownloadsDetails), - ShmodelEnableDownloadsDetails(ShmodelEnableDownloadsDetails), - ShmodelGroupShareDetails(ShmodelGroupShareDetails), - ShowcaseAccessGrantedDetails(ShowcaseAccessGrantedDetails), - ShowcaseAddMemberDetails(ShowcaseAddMemberDetails), - ShowcaseArchivedDetails(ShowcaseArchivedDetails), - ShowcaseCreatedDetails(ShowcaseCreatedDetails), - ShowcaseDeleteCommentDetails(ShowcaseDeleteCommentDetails), - ShowcaseEditedDetails(ShowcaseEditedDetails), - ShowcaseEditCommentDetails(ShowcaseEditCommentDetails), - ShowcaseFileAddedDetails(ShowcaseFileAddedDetails), - ShowcaseFileDownloadDetails(ShowcaseFileDownloadDetails), - ShowcaseFileRemovedDetails(ShowcaseFileRemovedDetails), - ShowcaseFileViewDetails(ShowcaseFileViewDetails), - ShowcasePermanentlyDeletedDetails(ShowcasePermanentlyDeletedDetails), - ShowcasePostCommentDetails(ShowcasePostCommentDetails), - ShowcaseRemoveMemberDetails(ShowcaseRemoveMemberDetails), - ShowcaseRenamedDetails(ShowcaseRenamedDetails), - ShowcaseRequestAccessDetails(ShowcaseRequestAccessDetails), - ShowcaseResolveCommentDetails(ShowcaseResolveCommentDetails), - ShowcaseRestoredDetails(ShowcaseRestoredDetails), - ShowcaseTrashedDetails(ShowcaseTrashedDetails), - ShowcaseTrashedDeprecatedDetails(ShowcaseTrashedDeprecatedDetails), - ShowcaseUnresolveCommentDetails(ShowcaseUnresolveCommentDetails), - ShowcaseUntrashedDetails(ShowcaseUntrashedDetails), - ShowcaseUntrashedDeprecatedDetails(ShowcaseUntrashedDeprecatedDetails), - ShowcaseViewDetails(ShowcaseViewDetails), - SsoAddCertDetails(SsoAddCertDetails), - SsoAddLoginUrlDetails(SsoAddLoginUrlDetails), - SsoAddLogoutUrlDetails(SsoAddLogoutUrlDetails), - SsoChangeCertDetails(SsoChangeCertDetails), - SsoChangeLoginUrlDetails(SsoChangeLoginUrlDetails), - SsoChangeLogoutUrlDetails(SsoChangeLogoutUrlDetails), - SsoChangeSamlIdentityModeDetails(SsoChangeSamlIdentityModeDetails), - SsoRemoveCertDetails(SsoRemoveCertDetails), - SsoRemoveLoginUrlDetails(SsoRemoveLoginUrlDetails), - SsoRemoveLogoutUrlDetails(SsoRemoveLogoutUrlDetails), - TeamFolderChangeStatusDetails(TeamFolderChangeStatusDetails), - TeamFolderCreateDetails(TeamFolderCreateDetails), - TeamFolderDowngradeDetails(TeamFolderDowngradeDetails), - TeamFolderPermanentlyDeleteDetails(TeamFolderPermanentlyDeleteDetails), - TeamFolderRenameDetails(TeamFolderRenameDetails), - TeamSelectiveSyncSettingsChangedDetails(TeamSelectiveSyncSettingsChangedDetails), - AccountCaptureChangePolicyDetails(AccountCaptureChangePolicyDetails), - AdminEmailRemindersChangedDetails(AdminEmailRemindersChangedDetails), - AllowDownloadDisabledDetails(AllowDownloadDisabledDetails), - AllowDownloadEnabledDetails(AllowDownloadEnabledDetails), - AppPermissionsChangedDetails(AppPermissionsChangedDetails), - CameraUploadsPolicyChangedDetails(CameraUploadsPolicyChangedDetails), - CaptureTranscriptPolicyChangedDetails(CaptureTranscriptPolicyChangedDetails), - ClassificationChangePolicyDetails(ClassificationChangePolicyDetails), - ComputerBackupPolicyChangedDetails(ComputerBackupPolicyChangedDetails), - ContentAdministrationPolicyChangedDetails(ContentAdministrationPolicyChangedDetails), - DataPlacementRestrictionChangePolicyDetails(DataPlacementRestrictionChangePolicyDetails), - DataPlacementRestrictionSatisfyPolicyDetails(DataPlacementRestrictionSatisfyPolicyDetails), - DeviceApprovalsAddExceptionDetails(DeviceApprovalsAddExceptionDetails), - DeviceApprovalsChangeDesktopPolicyDetails(DeviceApprovalsChangeDesktopPolicyDetails), - DeviceApprovalsChangeMobilePolicyDetails(DeviceApprovalsChangeMobilePolicyDetails), - DeviceApprovalsChangeOverageActionDetails(DeviceApprovalsChangeOverageActionDetails), - DeviceApprovalsChangeUnlinkActionDetails(DeviceApprovalsChangeUnlinkActionDetails), - DeviceApprovalsRemoveExceptionDetails(DeviceApprovalsRemoveExceptionDetails), - DirectoryRestrictionsAddMembersDetails(DirectoryRestrictionsAddMembersDetails), - DirectoryRestrictionsRemoveMembersDetails(DirectoryRestrictionsRemoveMembersDetails), - DropboxPasswordsPolicyChangedDetails(DropboxPasswordsPolicyChangedDetails), - EmailIngestPolicyChangedDetails(EmailIngestPolicyChangedDetails), - EmmAddExceptionDetails(EmmAddExceptionDetails), - EmmChangePolicyDetails(EmmChangePolicyDetails), - EmmRemoveExceptionDetails(EmmRemoveExceptionDetails), - ExtendedVersionHistoryChangePolicyDetails(ExtendedVersionHistoryChangePolicyDetails), - ExternalDriveBackupPolicyChangedDetails(ExternalDriveBackupPolicyChangedDetails), - FileCommentsChangePolicyDetails(FileCommentsChangePolicyDetails), - FileLockingPolicyChangedDetails(FileLockingPolicyChangedDetails), - FileProviderMigrationPolicyChangedDetails(FileProviderMigrationPolicyChangedDetails), - FileRequestsChangePolicyDetails(FileRequestsChangePolicyDetails), - FileRequestsEmailsEnabledDetails(FileRequestsEmailsEnabledDetails), - FileRequestsEmailsRestrictedToTeamOnlyDetails(FileRequestsEmailsRestrictedToTeamOnlyDetails), - FileTransfersPolicyChangedDetails(FileTransfersPolicyChangedDetails), - FolderLinkRestrictionPolicyChangedDetails(FolderLinkRestrictionPolicyChangedDetails), - GoogleSsoChangePolicyDetails(GoogleSsoChangePolicyDetails), - GroupUserManagementChangePolicyDetails(GroupUserManagementChangePolicyDetails), - IntegrationPolicyChangedDetails(IntegrationPolicyChangedDetails), - InviteAcceptanceEmailPolicyChangedDetails(InviteAcceptanceEmailPolicyChangedDetails), - MemberRequestsChangePolicyDetails(MemberRequestsChangePolicyDetails), - MemberSendInvitePolicyChangedDetails(MemberSendInvitePolicyChangedDetails), - MemberSpaceLimitsAddExceptionDetails(MemberSpaceLimitsAddExceptionDetails), - MemberSpaceLimitsChangeCapsTypePolicyDetails(MemberSpaceLimitsChangeCapsTypePolicyDetails), - MemberSpaceLimitsChangePolicyDetails(MemberSpaceLimitsChangePolicyDetails), - MemberSpaceLimitsRemoveExceptionDetails(MemberSpaceLimitsRemoveExceptionDetails), - MemberSuggestionsChangePolicyDetails(MemberSuggestionsChangePolicyDetails), - MicrosoftOfficeAddinChangePolicyDetails(MicrosoftOfficeAddinChangePolicyDetails), - NetworkControlChangePolicyDetails(NetworkControlChangePolicyDetails), - PaperChangeDeploymentPolicyDetails(PaperChangeDeploymentPolicyDetails), - PaperChangeMemberLinkPolicyDetails(PaperChangeMemberLinkPolicyDetails), - PaperChangeMemberPolicyDetails(PaperChangeMemberPolicyDetails), - PaperChangePolicyDetails(PaperChangePolicyDetails), - PaperDefaultFolderPolicyChangedDetails(PaperDefaultFolderPolicyChangedDetails), - PaperDesktopPolicyChangedDetails(PaperDesktopPolicyChangedDetails), - PaperEnabledUsersGroupAdditionDetails(PaperEnabledUsersGroupAdditionDetails), - PaperEnabledUsersGroupRemovalDetails(PaperEnabledUsersGroupRemovalDetails), - PasswordStrengthRequirementsChangePolicyDetails(PasswordStrengthRequirementsChangePolicyDetails), - PermanentDeleteChangePolicyDetails(PermanentDeleteChangePolicyDetails), - ResellerSupportChangePolicyDetails(ResellerSupportChangePolicyDetails), - RewindPolicyChangedDetails(RewindPolicyChangedDetails), - SendForSignaturePolicyChangedDetails(SendForSignaturePolicyChangedDetails), - SharingChangeFolderJoinPolicyDetails(SharingChangeFolderJoinPolicyDetails), - SharingChangeLinkAllowChangeExpirationPolicyDetails(SharingChangeLinkAllowChangeExpirationPolicyDetails), - SharingChangeLinkDefaultExpirationPolicyDetails(SharingChangeLinkDefaultExpirationPolicyDetails), - SharingChangeLinkEnforcePasswordPolicyDetails(SharingChangeLinkEnforcePasswordPolicyDetails), - SharingChangeLinkPolicyDetails(SharingChangeLinkPolicyDetails), - SharingChangeMemberPolicyDetails(SharingChangeMemberPolicyDetails), - ShowcaseChangeDownloadPolicyDetails(ShowcaseChangeDownloadPolicyDetails), - ShowcaseChangeEnabledPolicyDetails(ShowcaseChangeEnabledPolicyDetails), - ShowcaseChangeExternalSharingPolicyDetails(ShowcaseChangeExternalSharingPolicyDetails), - SmarterSmartSyncPolicyChangedDetails(SmarterSmartSyncPolicyChangedDetails), - SmartSyncChangePolicyDetails(SmartSyncChangePolicyDetails), - SmartSyncNotOptOutDetails(SmartSyncNotOptOutDetails), - SmartSyncOptOutDetails(SmartSyncOptOutDetails), - SsoChangePolicyDetails(SsoChangePolicyDetails), - TeamBrandingPolicyChangedDetails(TeamBrandingPolicyChangedDetails), - TeamExtensionsPolicyChangedDetails(TeamExtensionsPolicyChangedDetails), - TeamSelectiveSyncPolicyChangedDetails(TeamSelectiveSyncPolicyChangedDetails), - TeamSharingWhitelistSubjectsChangedDetails(TeamSharingWhitelistSubjectsChangedDetails), - TfaAddExceptionDetails(TfaAddExceptionDetails), - TfaChangePolicyDetails(TfaChangePolicyDetails), - TfaRemoveExceptionDetails(TfaRemoveExceptionDetails), - TwoAccountChangePolicyDetails(TwoAccountChangePolicyDetails), - ViewerInfoPolicyChangedDetails(ViewerInfoPolicyChangedDetails), - WatermarkingPolicyChangedDetails(WatermarkingPolicyChangedDetails), - WebSessionsChangeActiveSessionLimitDetails(WebSessionsChangeActiveSessionLimitDetails), - WebSessionsChangeFixedLengthPolicyDetails(WebSessionsChangeFixedLengthPolicyDetails), - WebSessionsChangeIdleLengthPolicyDetails(WebSessionsChangeIdleLengthPolicyDetails), - DataResidencyMigrationRequestSuccessfulDetails(DataResidencyMigrationRequestSuccessfulDetails), - DataResidencyMigrationRequestUnsuccessfulDetails(DataResidencyMigrationRequestUnsuccessfulDetails), - TeamMergeFromDetails(TeamMergeFromDetails), - TeamMergeToDetails(TeamMergeToDetails), - TeamProfileAddBackgroundDetails(TeamProfileAddBackgroundDetails), - TeamProfileAddLogoDetails(TeamProfileAddLogoDetails), - TeamProfileChangeBackgroundDetails(TeamProfileChangeBackgroundDetails), - TeamProfileChangeDefaultLanguageDetails(TeamProfileChangeDefaultLanguageDetails), - TeamProfileChangeLogoDetails(TeamProfileChangeLogoDetails), - TeamProfileChangeNameDetails(TeamProfileChangeNameDetails), - TeamProfileRemoveBackgroundDetails(TeamProfileRemoveBackgroundDetails), - TeamProfileRemoveLogoDetails(TeamProfileRemoveLogoDetails), - TfaAddBackupPhoneDetails(TfaAddBackupPhoneDetails), - TfaAddSecurityKeyDetails(TfaAddSecurityKeyDetails), - TfaChangeBackupPhoneDetails(TfaChangeBackupPhoneDetails), - TfaChangeStatusDetails(TfaChangeStatusDetails), - TfaRemoveBackupPhoneDetails(TfaRemoveBackupPhoneDetails), - TfaRemoveSecurityKeyDetails(TfaRemoveSecurityKeyDetails), - TfaResetDetails(TfaResetDetails), - ChangedEnterpriseAdminRoleDetails(ChangedEnterpriseAdminRoleDetails), - ChangedEnterpriseConnectedTeamStatusDetails(ChangedEnterpriseConnectedTeamStatusDetails), - EndedEnterpriseAdminSessionDetails(EndedEnterpriseAdminSessionDetails), - EndedEnterpriseAdminSessionDeprecatedDetails(EndedEnterpriseAdminSessionDeprecatedDetails), - EnterpriseSettingsLockingDetails(EnterpriseSettingsLockingDetails), - GuestAdminChangeStatusDetails(GuestAdminChangeStatusDetails), - StartedEnterpriseAdminSessionDetails(StartedEnterpriseAdminSessionDetails), - TeamMergeRequestAcceptedDetails(TeamMergeRequestAcceptedDetails), - TeamMergeRequestAcceptedShownToPrimaryTeamDetails(TeamMergeRequestAcceptedShownToPrimaryTeamDetails), - TeamMergeRequestAcceptedShownToSecondaryTeamDetails(TeamMergeRequestAcceptedShownToSecondaryTeamDetails), - TeamMergeRequestAutoCanceledDetails(TeamMergeRequestAutoCanceledDetails), - TeamMergeRequestCanceledDetails(TeamMergeRequestCanceledDetails), - TeamMergeRequestCanceledShownToPrimaryTeamDetails(TeamMergeRequestCanceledShownToPrimaryTeamDetails), - TeamMergeRequestCanceledShownToSecondaryTeamDetails(TeamMergeRequestCanceledShownToSecondaryTeamDetails), - TeamMergeRequestExpiredDetails(TeamMergeRequestExpiredDetails), - TeamMergeRequestExpiredShownToPrimaryTeamDetails(TeamMergeRequestExpiredShownToPrimaryTeamDetails), - TeamMergeRequestExpiredShownToSecondaryTeamDetails(TeamMergeRequestExpiredShownToSecondaryTeamDetails), - TeamMergeRequestRejectedShownToPrimaryTeamDetails(TeamMergeRequestRejectedShownToPrimaryTeamDetails), - TeamMergeRequestRejectedShownToSecondaryTeamDetails(TeamMergeRequestRejectedShownToSecondaryTeamDetails), - TeamMergeRequestReminderDetails(TeamMergeRequestReminderDetails), - TeamMergeRequestReminderShownToPrimaryTeamDetails(TeamMergeRequestReminderShownToPrimaryTeamDetails), - TeamMergeRequestReminderShownToSecondaryTeamDetails(TeamMergeRequestReminderShownToSecondaryTeamDetails), - TeamMergeRequestRevokedDetails(TeamMergeRequestRevokedDetails), - TeamMergeRequestSentShownToPrimaryTeamDetails(TeamMergeRequestSentShownToPrimaryTeamDetails), - TeamMergeRequestSentShownToSecondaryTeamDetails(TeamMergeRequestSentShownToSecondaryTeamDetails), - /// Hints that this event was returned with missing details due to an internal error. - MissingDetails(MissingDetails), - /// Catch-all used for unrecognized values returned from the server. Encountering this value - /// typically indicates that this SDK version is out of date. - Other, +#[non_exhaustive] // structs may have more fields added in the future. +pub struct DeviceManagementDisabledType { + pub description: String, } -impl<'de> ::serde::de::Deserialize<'de> for EventDetails { - fn deserialize>(deserializer: D) -> Result { - // union deserializer - use serde::de::{self, MapAccess, Visitor}; - struct EnumVisitor; - impl<'de> Visitor<'de> for EnumVisitor { - type Value = EventDetails; - fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a EventDetails structure") - } - fn visit_map>(self, mut map: V) -> Result { - let tag: &str = match map.next_key()? { - Some(".tag") => map.next_value()?, - _ => return Err(de::Error::missing_field(".tag")) - }; - let value = match tag { - "admin_alerting_alert_state_changed_details" => EventDetails::AdminAlertingAlertStateChangedDetails(AdminAlertingAlertStateChangedDetails::internal_deserialize(&mut map)?), - "admin_alerting_changed_alert_config_details" => EventDetails::AdminAlertingChangedAlertConfigDetails(AdminAlertingChangedAlertConfigDetails::internal_deserialize(&mut map)?), - "admin_alerting_triggered_alert_details" => EventDetails::AdminAlertingTriggeredAlertDetails(AdminAlertingTriggeredAlertDetails::internal_deserialize(&mut map)?), - "ransomware_restore_process_completed_details" => EventDetails::RansomwareRestoreProcessCompletedDetails(RansomwareRestoreProcessCompletedDetails::internal_deserialize(&mut map)?), - "ransomware_restore_process_started_details" => EventDetails::RansomwareRestoreProcessStartedDetails(RansomwareRestoreProcessStartedDetails::internal_deserialize(&mut map)?), - "app_blocked_by_permissions_details" => EventDetails::AppBlockedByPermissionsDetails(AppBlockedByPermissionsDetails::internal_deserialize(&mut map)?), - "app_link_team_details" => EventDetails::AppLinkTeamDetails(AppLinkTeamDetails::internal_deserialize(&mut map)?), - "app_link_user_details" => EventDetails::AppLinkUserDetails(AppLinkUserDetails::internal_deserialize(&mut map)?), - "app_unlink_team_details" => EventDetails::AppUnlinkTeamDetails(AppUnlinkTeamDetails::internal_deserialize(&mut map)?), - "app_unlink_user_details" => EventDetails::AppUnlinkUserDetails(AppUnlinkUserDetails::internal_deserialize(&mut map)?), - "integration_connected_details" => EventDetails::IntegrationConnectedDetails(IntegrationConnectedDetails::internal_deserialize(&mut map)?), - "integration_disconnected_details" => EventDetails::IntegrationDisconnectedDetails(IntegrationDisconnectedDetails::internal_deserialize(&mut map)?), - "file_add_comment_details" => EventDetails::FileAddCommentDetails(FileAddCommentDetails::internal_deserialize(&mut map)?), - "file_change_comment_subscription_details" => EventDetails::FileChangeCommentSubscriptionDetails(FileChangeCommentSubscriptionDetails::internal_deserialize(&mut map)?), - "file_delete_comment_details" => EventDetails::FileDeleteCommentDetails(FileDeleteCommentDetails::internal_deserialize(&mut map)?), - "file_edit_comment_details" => EventDetails::FileEditCommentDetails(FileEditCommentDetails::internal_deserialize(&mut map)?), - "file_like_comment_details" => EventDetails::FileLikeCommentDetails(FileLikeCommentDetails::internal_deserialize(&mut map)?), - "file_resolve_comment_details" => EventDetails::FileResolveCommentDetails(FileResolveCommentDetails::internal_deserialize(&mut map)?), - "file_unlike_comment_details" => EventDetails::FileUnlikeCommentDetails(FileUnlikeCommentDetails::internal_deserialize(&mut map)?), - "file_unresolve_comment_details" => EventDetails::FileUnresolveCommentDetails(FileUnresolveCommentDetails::internal_deserialize(&mut map)?), - "governance_policy_add_folders_details" => EventDetails::GovernancePolicyAddFoldersDetails(GovernancePolicyAddFoldersDetails::internal_deserialize(&mut map)?), - "governance_policy_add_folder_failed_details" => EventDetails::GovernancePolicyAddFolderFailedDetails(GovernancePolicyAddFolderFailedDetails::internal_deserialize(&mut map)?), - "governance_policy_content_disposed_details" => EventDetails::GovernancePolicyContentDisposedDetails(GovernancePolicyContentDisposedDetails::internal_deserialize(&mut map)?), - "governance_policy_create_details" => EventDetails::GovernancePolicyCreateDetails(GovernancePolicyCreateDetails::internal_deserialize(&mut map)?), - "governance_policy_delete_details" => EventDetails::GovernancePolicyDeleteDetails(GovernancePolicyDeleteDetails::internal_deserialize(&mut map)?), - "governance_policy_edit_details_details" => EventDetails::GovernancePolicyEditDetailsDetails(GovernancePolicyEditDetailsDetails::internal_deserialize(&mut map)?), - "governance_policy_edit_duration_details" => EventDetails::GovernancePolicyEditDurationDetails(GovernancePolicyEditDurationDetails::internal_deserialize(&mut map)?), - "governance_policy_export_created_details" => EventDetails::GovernancePolicyExportCreatedDetails(GovernancePolicyExportCreatedDetails::internal_deserialize(&mut map)?), - "governance_policy_export_removed_details" => EventDetails::GovernancePolicyExportRemovedDetails(GovernancePolicyExportRemovedDetails::internal_deserialize(&mut map)?), - "governance_policy_remove_folders_details" => EventDetails::GovernancePolicyRemoveFoldersDetails(GovernancePolicyRemoveFoldersDetails::internal_deserialize(&mut map)?), - "governance_policy_report_created_details" => EventDetails::GovernancePolicyReportCreatedDetails(GovernancePolicyReportCreatedDetails::internal_deserialize(&mut map)?), - "governance_policy_zip_part_downloaded_details" => EventDetails::GovernancePolicyZipPartDownloadedDetails(GovernancePolicyZipPartDownloadedDetails::internal_deserialize(&mut map)?), - "legal_holds_activate_a_hold_details" => EventDetails::LegalHoldsActivateAHoldDetails(LegalHoldsActivateAHoldDetails::internal_deserialize(&mut map)?), - "legal_holds_add_members_details" => EventDetails::LegalHoldsAddMembersDetails(LegalHoldsAddMembersDetails::internal_deserialize(&mut map)?), - "legal_holds_change_hold_details_details" => EventDetails::LegalHoldsChangeHoldDetailsDetails(LegalHoldsChangeHoldDetailsDetails::internal_deserialize(&mut map)?), - "legal_holds_change_hold_name_details" => EventDetails::LegalHoldsChangeHoldNameDetails(LegalHoldsChangeHoldNameDetails::internal_deserialize(&mut map)?), - "legal_holds_export_a_hold_details" => EventDetails::LegalHoldsExportAHoldDetails(LegalHoldsExportAHoldDetails::internal_deserialize(&mut map)?), - "legal_holds_export_cancelled_details" => EventDetails::LegalHoldsExportCancelledDetails(LegalHoldsExportCancelledDetails::internal_deserialize(&mut map)?), - "legal_holds_export_downloaded_details" => EventDetails::LegalHoldsExportDownloadedDetails(LegalHoldsExportDownloadedDetails::internal_deserialize(&mut map)?), - "legal_holds_export_removed_details" => EventDetails::LegalHoldsExportRemovedDetails(LegalHoldsExportRemovedDetails::internal_deserialize(&mut map)?), - "legal_holds_release_a_hold_details" => EventDetails::LegalHoldsReleaseAHoldDetails(LegalHoldsReleaseAHoldDetails::internal_deserialize(&mut map)?), - "legal_holds_remove_members_details" => EventDetails::LegalHoldsRemoveMembersDetails(LegalHoldsRemoveMembersDetails::internal_deserialize(&mut map)?), - "legal_holds_report_a_hold_details" => EventDetails::LegalHoldsReportAHoldDetails(LegalHoldsReportAHoldDetails::internal_deserialize(&mut map)?), - "device_change_ip_desktop_details" => EventDetails::DeviceChangeIpDesktopDetails(DeviceChangeIpDesktopDetails::internal_deserialize(&mut map)?), - "device_change_ip_mobile_details" => EventDetails::DeviceChangeIpMobileDetails(DeviceChangeIpMobileDetails::internal_deserialize(&mut map)?), - "device_change_ip_web_details" => EventDetails::DeviceChangeIpWebDetails(DeviceChangeIpWebDetails::internal_deserialize(&mut map)?), - "device_delete_on_unlink_fail_details" => EventDetails::DeviceDeleteOnUnlinkFailDetails(DeviceDeleteOnUnlinkFailDetails::internal_deserialize(&mut map)?), - "device_delete_on_unlink_success_details" => EventDetails::DeviceDeleteOnUnlinkSuccessDetails(DeviceDeleteOnUnlinkSuccessDetails::internal_deserialize(&mut map)?), - "device_link_fail_details" => EventDetails::DeviceLinkFailDetails(DeviceLinkFailDetails::internal_deserialize(&mut map)?), - "device_link_success_details" => EventDetails::DeviceLinkSuccessDetails(DeviceLinkSuccessDetails::internal_deserialize(&mut map)?), - "device_management_disabled_details" => EventDetails::DeviceManagementDisabledDetails(DeviceManagementDisabledDetails::internal_deserialize(&mut map)?), - "device_management_enabled_details" => EventDetails::DeviceManagementEnabledDetails(DeviceManagementEnabledDetails::internal_deserialize(&mut map)?), - "device_sync_backup_status_changed_details" => EventDetails::DeviceSyncBackupStatusChangedDetails(DeviceSyncBackupStatusChangedDetails::internal_deserialize(&mut map)?), - "device_unlink_details" => EventDetails::DeviceUnlinkDetails(DeviceUnlinkDetails::internal_deserialize(&mut map)?), - "dropbox_passwords_exported_details" => EventDetails::DropboxPasswordsExportedDetails(DropboxPasswordsExportedDetails::internal_deserialize(&mut map)?), - "dropbox_passwords_new_device_enrolled_details" => EventDetails::DropboxPasswordsNewDeviceEnrolledDetails(DropboxPasswordsNewDeviceEnrolledDetails::internal_deserialize(&mut map)?), - "emm_refresh_auth_token_details" => EventDetails::EmmRefreshAuthTokenDetails(EmmRefreshAuthTokenDetails::internal_deserialize(&mut map)?), - "external_drive_backup_eligibility_status_checked_details" => EventDetails::ExternalDriveBackupEligibilityStatusCheckedDetails(ExternalDriveBackupEligibilityStatusCheckedDetails::internal_deserialize(&mut map)?), - "external_drive_backup_status_changed_details" => EventDetails::ExternalDriveBackupStatusChangedDetails(ExternalDriveBackupStatusChangedDetails::internal_deserialize(&mut map)?), - "account_capture_change_availability_details" => EventDetails::AccountCaptureChangeAvailabilityDetails(AccountCaptureChangeAvailabilityDetails::internal_deserialize(&mut map)?), - "account_capture_migrate_account_details" => EventDetails::AccountCaptureMigrateAccountDetails(AccountCaptureMigrateAccountDetails::internal_deserialize(&mut map)?), - "account_capture_notification_emails_sent_details" => EventDetails::AccountCaptureNotificationEmailsSentDetails(AccountCaptureNotificationEmailsSentDetails::internal_deserialize(&mut map)?), - "account_capture_relinquish_account_details" => EventDetails::AccountCaptureRelinquishAccountDetails(AccountCaptureRelinquishAccountDetails::internal_deserialize(&mut map)?), - "disabled_domain_invites_details" => EventDetails::DisabledDomainInvitesDetails(DisabledDomainInvitesDetails::internal_deserialize(&mut map)?), - "domain_invites_approve_request_to_join_team_details" => EventDetails::DomainInvitesApproveRequestToJoinTeamDetails(DomainInvitesApproveRequestToJoinTeamDetails::internal_deserialize(&mut map)?), - "domain_invites_decline_request_to_join_team_details" => EventDetails::DomainInvitesDeclineRequestToJoinTeamDetails(DomainInvitesDeclineRequestToJoinTeamDetails::internal_deserialize(&mut map)?), - "domain_invites_email_existing_users_details" => EventDetails::DomainInvitesEmailExistingUsersDetails(DomainInvitesEmailExistingUsersDetails::internal_deserialize(&mut map)?), - "domain_invites_request_to_join_team_details" => EventDetails::DomainInvitesRequestToJoinTeamDetails(DomainInvitesRequestToJoinTeamDetails::internal_deserialize(&mut map)?), - "domain_invites_set_invite_new_user_pref_to_no_details" => EventDetails::DomainInvitesSetInviteNewUserPrefToNoDetails(DomainInvitesSetInviteNewUserPrefToNoDetails::internal_deserialize(&mut map)?), - "domain_invites_set_invite_new_user_pref_to_yes_details" => EventDetails::DomainInvitesSetInviteNewUserPrefToYesDetails(DomainInvitesSetInviteNewUserPrefToYesDetails::internal_deserialize(&mut map)?), - "domain_verification_add_domain_fail_details" => EventDetails::DomainVerificationAddDomainFailDetails(DomainVerificationAddDomainFailDetails::internal_deserialize(&mut map)?), - "domain_verification_add_domain_success_details" => EventDetails::DomainVerificationAddDomainSuccessDetails(DomainVerificationAddDomainSuccessDetails::internal_deserialize(&mut map)?), - "domain_verification_remove_domain_details" => EventDetails::DomainVerificationRemoveDomainDetails(DomainVerificationRemoveDomainDetails::internal_deserialize(&mut map)?), - "enabled_domain_invites_details" => EventDetails::EnabledDomainInvitesDetails(EnabledDomainInvitesDetails::internal_deserialize(&mut map)?), - "team_encryption_key_cancel_key_deletion_details" => EventDetails::TeamEncryptionKeyCancelKeyDeletionDetails(TeamEncryptionKeyCancelKeyDeletionDetails::internal_deserialize(&mut map)?), - "team_encryption_key_create_key_details" => EventDetails::TeamEncryptionKeyCreateKeyDetails(TeamEncryptionKeyCreateKeyDetails::internal_deserialize(&mut map)?), - "team_encryption_key_delete_key_details" => EventDetails::TeamEncryptionKeyDeleteKeyDetails(TeamEncryptionKeyDeleteKeyDetails::internal_deserialize(&mut map)?), - "team_encryption_key_disable_key_details" => EventDetails::TeamEncryptionKeyDisableKeyDetails(TeamEncryptionKeyDisableKeyDetails::internal_deserialize(&mut map)?), - "team_encryption_key_enable_key_details" => EventDetails::TeamEncryptionKeyEnableKeyDetails(TeamEncryptionKeyEnableKeyDetails::internal_deserialize(&mut map)?), - "team_encryption_key_rotate_key_details" => EventDetails::TeamEncryptionKeyRotateKeyDetails(TeamEncryptionKeyRotateKeyDetails::internal_deserialize(&mut map)?), - "team_encryption_key_schedule_key_deletion_details" => EventDetails::TeamEncryptionKeyScheduleKeyDeletionDetails(TeamEncryptionKeyScheduleKeyDeletionDetails::internal_deserialize(&mut map)?), - "apply_naming_convention_details" => EventDetails::ApplyNamingConventionDetails(ApplyNamingConventionDetails::internal_deserialize(&mut map)?), - "create_folder_details" => EventDetails::CreateFolderDetails(CreateFolderDetails::internal_deserialize(&mut map)?), - "file_add_details" => EventDetails::FileAddDetails(FileAddDetails::internal_deserialize(&mut map)?), - "file_add_from_automation_details" => EventDetails::FileAddFromAutomationDetails(FileAddFromAutomationDetails::internal_deserialize(&mut map)?), - "file_copy_details" => EventDetails::FileCopyDetails(FileCopyDetails::internal_deserialize(&mut map)?), - "file_delete_details" => EventDetails::FileDeleteDetails(FileDeleteDetails::internal_deserialize(&mut map)?), - "file_download_details" => EventDetails::FileDownloadDetails(FileDownloadDetails::internal_deserialize(&mut map)?), - "file_edit_details" => EventDetails::FileEditDetails(FileEditDetails::internal_deserialize(&mut map)?), - "file_get_copy_reference_details" => EventDetails::FileGetCopyReferenceDetails(FileGetCopyReferenceDetails::internal_deserialize(&mut map)?), - "file_locking_lock_status_changed_details" => EventDetails::FileLockingLockStatusChangedDetails(FileLockingLockStatusChangedDetails::internal_deserialize(&mut map)?), - "file_move_details" => EventDetails::FileMoveDetails(FileMoveDetails::internal_deserialize(&mut map)?), - "file_permanently_delete_details" => EventDetails::FilePermanentlyDeleteDetails(FilePermanentlyDeleteDetails::internal_deserialize(&mut map)?), - "file_preview_details" => EventDetails::FilePreviewDetails(FilePreviewDetails::internal_deserialize(&mut map)?), - "file_rename_details" => EventDetails::FileRenameDetails(FileRenameDetails::internal_deserialize(&mut map)?), - "file_restore_details" => EventDetails::FileRestoreDetails(FileRestoreDetails::internal_deserialize(&mut map)?), - "file_revert_details" => EventDetails::FileRevertDetails(FileRevertDetails::internal_deserialize(&mut map)?), - "file_rollback_changes_details" => EventDetails::FileRollbackChangesDetails(FileRollbackChangesDetails::internal_deserialize(&mut map)?), - "file_save_copy_reference_details" => EventDetails::FileSaveCopyReferenceDetails(FileSaveCopyReferenceDetails::internal_deserialize(&mut map)?), - "folder_overview_description_changed_details" => EventDetails::FolderOverviewDescriptionChangedDetails(FolderOverviewDescriptionChangedDetails::internal_deserialize(&mut map)?), - "folder_overview_item_pinned_details" => EventDetails::FolderOverviewItemPinnedDetails(FolderOverviewItemPinnedDetails::internal_deserialize(&mut map)?), - "folder_overview_item_unpinned_details" => EventDetails::FolderOverviewItemUnpinnedDetails(FolderOverviewItemUnpinnedDetails::internal_deserialize(&mut map)?), - "object_label_added_details" => EventDetails::ObjectLabelAddedDetails(ObjectLabelAddedDetails::internal_deserialize(&mut map)?), - "object_label_removed_details" => EventDetails::ObjectLabelRemovedDetails(ObjectLabelRemovedDetails::internal_deserialize(&mut map)?), - "object_label_updated_value_details" => EventDetails::ObjectLabelUpdatedValueDetails(ObjectLabelUpdatedValueDetails::internal_deserialize(&mut map)?), - "organize_folder_with_tidy_details" => EventDetails::OrganizeFolderWithTidyDetails(OrganizeFolderWithTidyDetails::internal_deserialize(&mut map)?), - "replay_file_delete_details" => EventDetails::ReplayFileDeleteDetails(ReplayFileDeleteDetails::internal_deserialize(&mut map)?), - "rewind_folder_details" => EventDetails::RewindFolderDetails(RewindFolderDetails::internal_deserialize(&mut map)?), - "undo_naming_convention_details" => EventDetails::UndoNamingConventionDetails(UndoNamingConventionDetails::internal_deserialize(&mut map)?), - "undo_organize_folder_with_tidy_details" => EventDetails::UndoOrganizeFolderWithTidyDetails(UndoOrganizeFolderWithTidyDetails::internal_deserialize(&mut map)?), - "user_tags_added_details" => EventDetails::UserTagsAddedDetails(UserTagsAddedDetails::internal_deserialize(&mut map)?), - "user_tags_removed_details" => EventDetails::UserTagsRemovedDetails(UserTagsRemovedDetails::internal_deserialize(&mut map)?), - "email_ingest_receive_file_details" => EventDetails::EmailIngestReceiveFileDetails(EmailIngestReceiveFileDetails::internal_deserialize(&mut map)?), - "file_request_change_details" => EventDetails::FileRequestChangeDetails(FileRequestChangeDetails::internal_deserialize(&mut map)?), - "file_request_close_details" => EventDetails::FileRequestCloseDetails(FileRequestCloseDetails::internal_deserialize(&mut map)?), - "file_request_create_details" => EventDetails::FileRequestCreateDetails(FileRequestCreateDetails::internal_deserialize(&mut map)?), - "file_request_delete_details" => EventDetails::FileRequestDeleteDetails(FileRequestDeleteDetails::internal_deserialize(&mut map)?), - "file_request_receive_file_details" => EventDetails::FileRequestReceiveFileDetails(FileRequestReceiveFileDetails::internal_deserialize(&mut map)?), - "group_add_external_id_details" => EventDetails::GroupAddExternalIdDetails(GroupAddExternalIdDetails::internal_deserialize(&mut map)?), - "group_add_member_details" => EventDetails::GroupAddMemberDetails(GroupAddMemberDetails::internal_deserialize(&mut map)?), - "group_change_external_id_details" => EventDetails::GroupChangeExternalIdDetails(GroupChangeExternalIdDetails::internal_deserialize(&mut map)?), - "group_change_management_type_details" => EventDetails::GroupChangeManagementTypeDetails(GroupChangeManagementTypeDetails::internal_deserialize(&mut map)?), - "group_change_member_role_details" => EventDetails::GroupChangeMemberRoleDetails(GroupChangeMemberRoleDetails::internal_deserialize(&mut map)?), - "group_create_details" => EventDetails::GroupCreateDetails(GroupCreateDetails::internal_deserialize(&mut map)?), - "group_delete_details" => EventDetails::GroupDeleteDetails(GroupDeleteDetails::internal_deserialize(&mut map)?), - "group_description_updated_details" => EventDetails::GroupDescriptionUpdatedDetails(GroupDescriptionUpdatedDetails::internal_deserialize(&mut map)?), - "group_join_policy_updated_details" => EventDetails::GroupJoinPolicyUpdatedDetails(GroupJoinPolicyUpdatedDetails::internal_deserialize(&mut map)?), - "group_moved_details" => EventDetails::GroupMovedDetails(GroupMovedDetails::internal_deserialize(&mut map)?), - "group_remove_external_id_details" => EventDetails::GroupRemoveExternalIdDetails(GroupRemoveExternalIdDetails::internal_deserialize(&mut map)?), - "group_remove_member_details" => EventDetails::GroupRemoveMemberDetails(GroupRemoveMemberDetails::internal_deserialize(&mut map)?), - "group_rename_details" => EventDetails::GroupRenameDetails(GroupRenameDetails::internal_deserialize(&mut map)?), - "account_lock_or_unlocked_details" => EventDetails::AccountLockOrUnlockedDetails(AccountLockOrUnlockedDetails::internal_deserialize(&mut map)?), - "emm_error_details" => EventDetails::EmmErrorDetails(EmmErrorDetails::internal_deserialize(&mut map)?), - "guest_admin_signed_in_via_trusted_teams_details" => EventDetails::GuestAdminSignedInViaTrustedTeamsDetails(GuestAdminSignedInViaTrustedTeamsDetails::internal_deserialize(&mut map)?), - "guest_admin_signed_out_via_trusted_teams_details" => EventDetails::GuestAdminSignedOutViaTrustedTeamsDetails(GuestAdminSignedOutViaTrustedTeamsDetails::internal_deserialize(&mut map)?), - "login_fail_details" => EventDetails::LoginFailDetails(LoginFailDetails::internal_deserialize(&mut map)?), - "login_success_details" => EventDetails::LoginSuccessDetails(LoginSuccessDetails::internal_deserialize(&mut map)?), - "logout_details" => EventDetails::LogoutDetails(LogoutDetails::internal_deserialize(&mut map)?), - "reseller_support_session_end_details" => EventDetails::ResellerSupportSessionEndDetails(ResellerSupportSessionEndDetails::internal_deserialize(&mut map)?), - "reseller_support_session_start_details" => EventDetails::ResellerSupportSessionStartDetails(ResellerSupportSessionStartDetails::internal_deserialize(&mut map)?), - "sign_in_as_session_end_details" => EventDetails::SignInAsSessionEndDetails(SignInAsSessionEndDetails::internal_deserialize(&mut map)?), - "sign_in_as_session_start_details" => EventDetails::SignInAsSessionStartDetails(SignInAsSessionStartDetails::internal_deserialize(&mut map)?), - "sso_error_details" => EventDetails::SsoErrorDetails(SsoErrorDetails::internal_deserialize(&mut map)?), - "backup_admin_invitation_sent_details" => EventDetails::BackupAdminInvitationSentDetails(BackupAdminInvitationSentDetails::internal_deserialize(&mut map)?), - "backup_invitation_opened_details" => EventDetails::BackupInvitationOpenedDetails(BackupInvitationOpenedDetails::internal_deserialize(&mut map)?), - "create_team_invite_link_details" => EventDetails::CreateTeamInviteLinkDetails(CreateTeamInviteLinkDetails::internal_deserialize(&mut map)?), - "delete_team_invite_link_details" => EventDetails::DeleteTeamInviteLinkDetails(DeleteTeamInviteLinkDetails::internal_deserialize(&mut map)?), - "member_add_external_id_details" => EventDetails::MemberAddExternalIdDetails(MemberAddExternalIdDetails::internal_deserialize(&mut map)?), - "member_add_name_details" => EventDetails::MemberAddNameDetails(MemberAddNameDetails::internal_deserialize(&mut map)?), - "member_change_admin_role_details" => EventDetails::MemberChangeAdminRoleDetails(MemberChangeAdminRoleDetails::internal_deserialize(&mut map)?), - "member_change_email_details" => EventDetails::MemberChangeEmailDetails(MemberChangeEmailDetails::internal_deserialize(&mut map)?), - "member_change_external_id_details" => EventDetails::MemberChangeExternalIdDetails(MemberChangeExternalIdDetails::internal_deserialize(&mut map)?), - "member_change_membership_type_details" => EventDetails::MemberChangeMembershipTypeDetails(MemberChangeMembershipTypeDetails::internal_deserialize(&mut map)?), - "member_change_name_details" => EventDetails::MemberChangeNameDetails(MemberChangeNameDetails::internal_deserialize(&mut map)?), - "member_change_reseller_role_details" => EventDetails::MemberChangeResellerRoleDetails(MemberChangeResellerRoleDetails::internal_deserialize(&mut map)?), - "member_change_status_details" => EventDetails::MemberChangeStatusDetails(MemberChangeStatusDetails::internal_deserialize(&mut map)?), - "member_delete_manual_contacts_details" => EventDetails::MemberDeleteManualContactsDetails(MemberDeleteManualContactsDetails::internal_deserialize(&mut map)?), - "member_delete_profile_photo_details" => EventDetails::MemberDeleteProfilePhotoDetails(MemberDeleteProfilePhotoDetails::internal_deserialize(&mut map)?), - "member_permanently_delete_account_contents_details" => EventDetails::MemberPermanentlyDeleteAccountContentsDetails(MemberPermanentlyDeleteAccountContentsDetails::internal_deserialize(&mut map)?), - "member_remove_external_id_details" => EventDetails::MemberRemoveExternalIdDetails(MemberRemoveExternalIdDetails::internal_deserialize(&mut map)?), - "member_set_profile_photo_details" => EventDetails::MemberSetProfilePhotoDetails(MemberSetProfilePhotoDetails::internal_deserialize(&mut map)?), - "member_space_limits_add_custom_quota_details" => EventDetails::MemberSpaceLimitsAddCustomQuotaDetails(MemberSpaceLimitsAddCustomQuotaDetails::internal_deserialize(&mut map)?), - "member_space_limits_change_custom_quota_details" => EventDetails::MemberSpaceLimitsChangeCustomQuotaDetails(MemberSpaceLimitsChangeCustomQuotaDetails::internal_deserialize(&mut map)?), - "member_space_limits_change_status_details" => EventDetails::MemberSpaceLimitsChangeStatusDetails(MemberSpaceLimitsChangeStatusDetails::internal_deserialize(&mut map)?), - "member_space_limits_remove_custom_quota_details" => EventDetails::MemberSpaceLimitsRemoveCustomQuotaDetails(MemberSpaceLimitsRemoveCustomQuotaDetails::internal_deserialize(&mut map)?), - "member_suggest_details" => EventDetails::MemberSuggestDetails(MemberSuggestDetails::internal_deserialize(&mut map)?), - "member_transfer_account_contents_details" => EventDetails::MemberTransferAccountContentsDetails(MemberTransferAccountContentsDetails::internal_deserialize(&mut map)?), - "pending_secondary_email_added_details" => EventDetails::PendingSecondaryEmailAddedDetails(PendingSecondaryEmailAddedDetails::internal_deserialize(&mut map)?), - "secondary_email_deleted_details" => EventDetails::SecondaryEmailDeletedDetails(SecondaryEmailDeletedDetails::internal_deserialize(&mut map)?), - "secondary_email_verified_details" => EventDetails::SecondaryEmailVerifiedDetails(SecondaryEmailVerifiedDetails::internal_deserialize(&mut map)?), - "secondary_mails_policy_changed_details" => EventDetails::SecondaryMailsPolicyChangedDetails(SecondaryMailsPolicyChangedDetails::internal_deserialize(&mut map)?), - "binder_add_page_details" => EventDetails::BinderAddPageDetails(BinderAddPageDetails::internal_deserialize(&mut map)?), - "binder_add_section_details" => EventDetails::BinderAddSectionDetails(BinderAddSectionDetails::internal_deserialize(&mut map)?), - "binder_remove_page_details" => EventDetails::BinderRemovePageDetails(BinderRemovePageDetails::internal_deserialize(&mut map)?), - "binder_remove_section_details" => EventDetails::BinderRemoveSectionDetails(BinderRemoveSectionDetails::internal_deserialize(&mut map)?), - "binder_rename_page_details" => EventDetails::BinderRenamePageDetails(BinderRenamePageDetails::internal_deserialize(&mut map)?), - "binder_rename_section_details" => EventDetails::BinderRenameSectionDetails(BinderRenameSectionDetails::internal_deserialize(&mut map)?), - "binder_reorder_page_details" => EventDetails::BinderReorderPageDetails(BinderReorderPageDetails::internal_deserialize(&mut map)?), - "binder_reorder_section_details" => EventDetails::BinderReorderSectionDetails(BinderReorderSectionDetails::internal_deserialize(&mut map)?), - "paper_content_add_member_details" => EventDetails::PaperContentAddMemberDetails(PaperContentAddMemberDetails::internal_deserialize(&mut map)?), - "paper_content_add_to_folder_details" => EventDetails::PaperContentAddToFolderDetails(PaperContentAddToFolderDetails::internal_deserialize(&mut map)?), - "paper_content_archive_details" => EventDetails::PaperContentArchiveDetails(PaperContentArchiveDetails::internal_deserialize(&mut map)?), - "paper_content_create_details" => EventDetails::PaperContentCreateDetails(PaperContentCreateDetails::internal_deserialize(&mut map)?), - "paper_content_permanently_delete_details" => EventDetails::PaperContentPermanentlyDeleteDetails(PaperContentPermanentlyDeleteDetails::internal_deserialize(&mut map)?), - "paper_content_remove_from_folder_details" => EventDetails::PaperContentRemoveFromFolderDetails(PaperContentRemoveFromFolderDetails::internal_deserialize(&mut map)?), - "paper_content_remove_member_details" => EventDetails::PaperContentRemoveMemberDetails(PaperContentRemoveMemberDetails::internal_deserialize(&mut map)?), - "paper_content_rename_details" => EventDetails::PaperContentRenameDetails(PaperContentRenameDetails::internal_deserialize(&mut map)?), - "paper_content_restore_details" => EventDetails::PaperContentRestoreDetails(PaperContentRestoreDetails::internal_deserialize(&mut map)?), - "paper_doc_add_comment_details" => EventDetails::PaperDocAddCommentDetails(PaperDocAddCommentDetails::internal_deserialize(&mut map)?), - "paper_doc_change_member_role_details" => EventDetails::PaperDocChangeMemberRoleDetails(PaperDocChangeMemberRoleDetails::internal_deserialize(&mut map)?), - "paper_doc_change_sharing_policy_details" => EventDetails::PaperDocChangeSharingPolicyDetails(PaperDocChangeSharingPolicyDetails::internal_deserialize(&mut map)?), - "paper_doc_change_subscription_details" => EventDetails::PaperDocChangeSubscriptionDetails(PaperDocChangeSubscriptionDetails::internal_deserialize(&mut map)?), - "paper_doc_deleted_details" => EventDetails::PaperDocDeletedDetails(PaperDocDeletedDetails::internal_deserialize(&mut map)?), - "paper_doc_delete_comment_details" => EventDetails::PaperDocDeleteCommentDetails(PaperDocDeleteCommentDetails::internal_deserialize(&mut map)?), - "paper_doc_download_details" => EventDetails::PaperDocDownloadDetails(PaperDocDownloadDetails::internal_deserialize(&mut map)?), - "paper_doc_edit_details" => EventDetails::PaperDocEditDetails(PaperDocEditDetails::internal_deserialize(&mut map)?), - "paper_doc_edit_comment_details" => EventDetails::PaperDocEditCommentDetails(PaperDocEditCommentDetails::internal_deserialize(&mut map)?), - "paper_doc_followed_details" => EventDetails::PaperDocFollowedDetails(PaperDocFollowedDetails::internal_deserialize(&mut map)?), - "paper_doc_mention_details" => EventDetails::PaperDocMentionDetails(PaperDocMentionDetails::internal_deserialize(&mut map)?), - "paper_doc_ownership_changed_details" => EventDetails::PaperDocOwnershipChangedDetails(PaperDocOwnershipChangedDetails::internal_deserialize(&mut map)?), - "paper_doc_request_access_details" => EventDetails::PaperDocRequestAccessDetails(PaperDocRequestAccessDetails::internal_deserialize(&mut map)?), - "paper_doc_resolve_comment_details" => EventDetails::PaperDocResolveCommentDetails(PaperDocResolveCommentDetails::internal_deserialize(&mut map)?), - "paper_doc_revert_details" => EventDetails::PaperDocRevertDetails(PaperDocRevertDetails::internal_deserialize(&mut map)?), - "paper_doc_slack_share_details" => EventDetails::PaperDocSlackShareDetails(PaperDocSlackShareDetails::internal_deserialize(&mut map)?), - "paper_doc_team_invite_details" => EventDetails::PaperDocTeamInviteDetails(PaperDocTeamInviteDetails::internal_deserialize(&mut map)?), - "paper_doc_trashed_details" => EventDetails::PaperDocTrashedDetails(PaperDocTrashedDetails::internal_deserialize(&mut map)?), - "paper_doc_unresolve_comment_details" => EventDetails::PaperDocUnresolveCommentDetails(PaperDocUnresolveCommentDetails::internal_deserialize(&mut map)?), - "paper_doc_untrashed_details" => EventDetails::PaperDocUntrashedDetails(PaperDocUntrashedDetails::internal_deserialize(&mut map)?), - "paper_doc_view_details" => EventDetails::PaperDocViewDetails(PaperDocViewDetails::internal_deserialize(&mut map)?), - "paper_external_view_allow_details" => EventDetails::PaperExternalViewAllowDetails(PaperExternalViewAllowDetails::internal_deserialize(&mut map)?), - "paper_external_view_default_team_details" => EventDetails::PaperExternalViewDefaultTeamDetails(PaperExternalViewDefaultTeamDetails::internal_deserialize(&mut map)?), - "paper_external_view_forbid_details" => EventDetails::PaperExternalViewForbidDetails(PaperExternalViewForbidDetails::internal_deserialize(&mut map)?), - "paper_folder_change_subscription_details" => EventDetails::PaperFolderChangeSubscriptionDetails(PaperFolderChangeSubscriptionDetails::internal_deserialize(&mut map)?), - "paper_folder_deleted_details" => EventDetails::PaperFolderDeletedDetails(PaperFolderDeletedDetails::internal_deserialize(&mut map)?), - "paper_folder_followed_details" => EventDetails::PaperFolderFollowedDetails(PaperFolderFollowedDetails::internal_deserialize(&mut map)?), - "paper_folder_team_invite_details" => EventDetails::PaperFolderTeamInviteDetails(PaperFolderTeamInviteDetails::internal_deserialize(&mut map)?), - "paper_published_link_change_permission_details" => EventDetails::PaperPublishedLinkChangePermissionDetails(PaperPublishedLinkChangePermissionDetails::internal_deserialize(&mut map)?), - "paper_published_link_create_details" => EventDetails::PaperPublishedLinkCreateDetails(PaperPublishedLinkCreateDetails::internal_deserialize(&mut map)?), - "paper_published_link_disabled_details" => EventDetails::PaperPublishedLinkDisabledDetails(PaperPublishedLinkDisabledDetails::internal_deserialize(&mut map)?), - "paper_published_link_view_details" => EventDetails::PaperPublishedLinkViewDetails(PaperPublishedLinkViewDetails::internal_deserialize(&mut map)?), - "password_change_details" => EventDetails::PasswordChangeDetails(PasswordChangeDetails::internal_deserialize(&mut map)?), - "password_reset_details" => EventDetails::PasswordResetDetails(PasswordResetDetails::internal_deserialize(&mut map)?), - "password_reset_all_details" => EventDetails::PasswordResetAllDetails(PasswordResetAllDetails::internal_deserialize(&mut map)?), - "classification_create_report_details" => EventDetails::ClassificationCreateReportDetails(ClassificationCreateReportDetails::internal_deserialize(&mut map)?), - "classification_create_report_fail_details" => EventDetails::ClassificationCreateReportFailDetails(ClassificationCreateReportFailDetails::internal_deserialize(&mut map)?), - "emm_create_exceptions_report_details" => EventDetails::EmmCreateExceptionsReportDetails(EmmCreateExceptionsReportDetails::internal_deserialize(&mut map)?), - "emm_create_usage_report_details" => EventDetails::EmmCreateUsageReportDetails(EmmCreateUsageReportDetails::internal_deserialize(&mut map)?), - "export_members_report_details" => EventDetails::ExportMembersReportDetails(ExportMembersReportDetails::internal_deserialize(&mut map)?), - "export_members_report_fail_details" => EventDetails::ExportMembersReportFailDetails(ExportMembersReportFailDetails::internal_deserialize(&mut map)?), - "external_sharing_create_report_details" => EventDetails::ExternalSharingCreateReportDetails(ExternalSharingCreateReportDetails::internal_deserialize(&mut map)?), - "external_sharing_report_failed_details" => EventDetails::ExternalSharingReportFailedDetails(ExternalSharingReportFailedDetails::internal_deserialize(&mut map)?), - "no_expiration_link_gen_create_report_details" => EventDetails::NoExpirationLinkGenCreateReportDetails(NoExpirationLinkGenCreateReportDetails::internal_deserialize(&mut map)?), - "no_expiration_link_gen_report_failed_details" => EventDetails::NoExpirationLinkGenReportFailedDetails(NoExpirationLinkGenReportFailedDetails::internal_deserialize(&mut map)?), - "no_password_link_gen_create_report_details" => EventDetails::NoPasswordLinkGenCreateReportDetails(NoPasswordLinkGenCreateReportDetails::internal_deserialize(&mut map)?), - "no_password_link_gen_report_failed_details" => EventDetails::NoPasswordLinkGenReportFailedDetails(NoPasswordLinkGenReportFailedDetails::internal_deserialize(&mut map)?), - "no_password_link_view_create_report_details" => EventDetails::NoPasswordLinkViewCreateReportDetails(NoPasswordLinkViewCreateReportDetails::internal_deserialize(&mut map)?), - "no_password_link_view_report_failed_details" => EventDetails::NoPasswordLinkViewReportFailedDetails(NoPasswordLinkViewReportFailedDetails::internal_deserialize(&mut map)?), - "outdated_link_view_create_report_details" => EventDetails::OutdatedLinkViewCreateReportDetails(OutdatedLinkViewCreateReportDetails::internal_deserialize(&mut map)?), - "outdated_link_view_report_failed_details" => EventDetails::OutdatedLinkViewReportFailedDetails(OutdatedLinkViewReportFailedDetails::internal_deserialize(&mut map)?), - "paper_admin_export_start_details" => EventDetails::PaperAdminExportStartDetails(PaperAdminExportStartDetails::internal_deserialize(&mut map)?), - "ransomware_alert_create_report_details" => EventDetails::RansomwareAlertCreateReportDetails(RansomwareAlertCreateReportDetails::internal_deserialize(&mut map)?), - "ransomware_alert_create_report_failed_details" => EventDetails::RansomwareAlertCreateReportFailedDetails(RansomwareAlertCreateReportFailedDetails::internal_deserialize(&mut map)?), - "smart_sync_create_admin_privilege_report_details" => EventDetails::SmartSyncCreateAdminPrivilegeReportDetails(SmartSyncCreateAdminPrivilegeReportDetails::internal_deserialize(&mut map)?), - "team_activity_create_report_details" => EventDetails::TeamActivityCreateReportDetails(TeamActivityCreateReportDetails::internal_deserialize(&mut map)?), - "team_activity_create_report_fail_details" => EventDetails::TeamActivityCreateReportFailDetails(TeamActivityCreateReportFailDetails::internal_deserialize(&mut map)?), - "collection_share_details" => EventDetails::CollectionShareDetails(CollectionShareDetails::internal_deserialize(&mut map)?), - "file_transfers_file_add_details" => EventDetails::FileTransfersFileAddDetails(FileTransfersFileAddDetails::internal_deserialize(&mut map)?), - "file_transfers_transfer_delete_details" => EventDetails::FileTransfersTransferDeleteDetails(FileTransfersTransferDeleteDetails::internal_deserialize(&mut map)?), - "file_transfers_transfer_download_details" => EventDetails::FileTransfersTransferDownloadDetails(FileTransfersTransferDownloadDetails::internal_deserialize(&mut map)?), - "file_transfers_transfer_send_details" => EventDetails::FileTransfersTransferSendDetails(FileTransfersTransferSendDetails::internal_deserialize(&mut map)?), - "file_transfers_transfer_view_details" => EventDetails::FileTransfersTransferViewDetails(FileTransfersTransferViewDetails::internal_deserialize(&mut map)?), - "note_acl_invite_only_details" => EventDetails::NoteAclInviteOnlyDetails(NoteAclInviteOnlyDetails::internal_deserialize(&mut map)?), - "note_acl_link_details" => EventDetails::NoteAclLinkDetails(NoteAclLinkDetails::internal_deserialize(&mut map)?), - "note_acl_team_link_details" => EventDetails::NoteAclTeamLinkDetails(NoteAclTeamLinkDetails::internal_deserialize(&mut map)?), - "note_shared_details" => EventDetails::NoteSharedDetails(NoteSharedDetails::internal_deserialize(&mut map)?), - "note_share_receive_details" => EventDetails::NoteShareReceiveDetails(NoteShareReceiveDetails::internal_deserialize(&mut map)?), - "open_note_shared_details" => EventDetails::OpenNoteSharedDetails(OpenNoteSharedDetails::internal_deserialize(&mut map)?), - "replay_file_shared_link_created_details" => EventDetails::ReplayFileSharedLinkCreatedDetails(ReplayFileSharedLinkCreatedDetails::internal_deserialize(&mut map)?), - "replay_file_shared_link_modified_details" => EventDetails::ReplayFileSharedLinkModifiedDetails(ReplayFileSharedLinkModifiedDetails::internal_deserialize(&mut map)?), - "replay_project_team_add_details" => EventDetails::ReplayProjectTeamAddDetails(ReplayProjectTeamAddDetails::internal_deserialize(&mut map)?), - "replay_project_team_delete_details" => EventDetails::ReplayProjectTeamDeleteDetails(ReplayProjectTeamDeleteDetails::internal_deserialize(&mut map)?), - "sf_add_group_details" => EventDetails::SfAddGroupDetails(SfAddGroupDetails::internal_deserialize(&mut map)?), - "sf_allow_non_members_to_view_shared_links_details" => EventDetails::SfAllowNonMembersToViewSharedLinksDetails(SfAllowNonMembersToViewSharedLinksDetails::internal_deserialize(&mut map)?), - "sf_external_invite_warn_details" => EventDetails::SfExternalInviteWarnDetails(SfExternalInviteWarnDetails::internal_deserialize(&mut map)?), - "sf_fb_invite_details" => EventDetails::SfFbInviteDetails(SfFbInviteDetails::internal_deserialize(&mut map)?), - "sf_fb_invite_change_role_details" => EventDetails::SfFbInviteChangeRoleDetails(SfFbInviteChangeRoleDetails::internal_deserialize(&mut map)?), - "sf_fb_uninvite_details" => EventDetails::SfFbUninviteDetails(SfFbUninviteDetails::internal_deserialize(&mut map)?), - "sf_invite_group_details" => EventDetails::SfInviteGroupDetails(SfInviteGroupDetails::internal_deserialize(&mut map)?), - "sf_team_grant_access_details" => EventDetails::SfTeamGrantAccessDetails(SfTeamGrantAccessDetails::internal_deserialize(&mut map)?), - "sf_team_invite_details" => EventDetails::SfTeamInviteDetails(SfTeamInviteDetails::internal_deserialize(&mut map)?), - "sf_team_invite_change_role_details" => EventDetails::SfTeamInviteChangeRoleDetails(SfTeamInviteChangeRoleDetails::internal_deserialize(&mut map)?), - "sf_team_join_details" => EventDetails::SfTeamJoinDetails(SfTeamJoinDetails::internal_deserialize(&mut map)?), - "sf_team_join_from_oob_link_details" => EventDetails::SfTeamJoinFromOobLinkDetails(SfTeamJoinFromOobLinkDetails::internal_deserialize(&mut map)?), - "sf_team_uninvite_details" => EventDetails::SfTeamUninviteDetails(SfTeamUninviteDetails::internal_deserialize(&mut map)?), - "shared_content_add_invitees_details" => EventDetails::SharedContentAddInviteesDetails(SharedContentAddInviteesDetails::internal_deserialize(&mut map)?), - "shared_content_add_link_expiry_details" => EventDetails::SharedContentAddLinkExpiryDetails(SharedContentAddLinkExpiryDetails::internal_deserialize(&mut map)?), - "shared_content_add_link_password_details" => EventDetails::SharedContentAddLinkPasswordDetails(SharedContentAddLinkPasswordDetails::internal_deserialize(&mut map)?), - "shared_content_add_member_details" => EventDetails::SharedContentAddMemberDetails(SharedContentAddMemberDetails::internal_deserialize(&mut map)?), - "shared_content_change_downloads_policy_details" => EventDetails::SharedContentChangeDownloadsPolicyDetails(SharedContentChangeDownloadsPolicyDetails::internal_deserialize(&mut map)?), - "shared_content_change_invitee_role_details" => EventDetails::SharedContentChangeInviteeRoleDetails(SharedContentChangeInviteeRoleDetails::internal_deserialize(&mut map)?), - "shared_content_change_link_audience_details" => EventDetails::SharedContentChangeLinkAudienceDetails(SharedContentChangeLinkAudienceDetails::internal_deserialize(&mut map)?), - "shared_content_change_link_expiry_details" => EventDetails::SharedContentChangeLinkExpiryDetails(SharedContentChangeLinkExpiryDetails::internal_deserialize(&mut map)?), - "shared_content_change_link_password_details" => EventDetails::SharedContentChangeLinkPasswordDetails(SharedContentChangeLinkPasswordDetails::internal_deserialize(&mut map)?), - "shared_content_change_member_role_details" => EventDetails::SharedContentChangeMemberRoleDetails(SharedContentChangeMemberRoleDetails::internal_deserialize(&mut map)?), - "shared_content_change_viewer_info_policy_details" => EventDetails::SharedContentChangeViewerInfoPolicyDetails(SharedContentChangeViewerInfoPolicyDetails::internal_deserialize(&mut map)?), - "shared_content_claim_invitation_details" => EventDetails::SharedContentClaimInvitationDetails(SharedContentClaimInvitationDetails::internal_deserialize(&mut map)?), - "shared_content_copy_details" => EventDetails::SharedContentCopyDetails(SharedContentCopyDetails::internal_deserialize(&mut map)?), - "shared_content_download_details" => EventDetails::SharedContentDownloadDetails(SharedContentDownloadDetails::internal_deserialize(&mut map)?), - "shared_content_relinquish_membership_details" => EventDetails::SharedContentRelinquishMembershipDetails(SharedContentRelinquishMembershipDetails::internal_deserialize(&mut map)?), - "shared_content_remove_invitees_details" => EventDetails::SharedContentRemoveInviteesDetails(SharedContentRemoveInviteesDetails::internal_deserialize(&mut map)?), - "shared_content_remove_link_expiry_details" => EventDetails::SharedContentRemoveLinkExpiryDetails(SharedContentRemoveLinkExpiryDetails::internal_deserialize(&mut map)?), - "shared_content_remove_link_password_details" => EventDetails::SharedContentRemoveLinkPasswordDetails(SharedContentRemoveLinkPasswordDetails::internal_deserialize(&mut map)?), - "shared_content_remove_member_details" => EventDetails::SharedContentRemoveMemberDetails(SharedContentRemoveMemberDetails::internal_deserialize(&mut map)?), - "shared_content_request_access_details" => EventDetails::SharedContentRequestAccessDetails(SharedContentRequestAccessDetails::internal_deserialize(&mut map)?), - "shared_content_restore_invitees_details" => EventDetails::SharedContentRestoreInviteesDetails(SharedContentRestoreInviteesDetails::internal_deserialize(&mut map)?), - "shared_content_restore_member_details" => EventDetails::SharedContentRestoreMemberDetails(SharedContentRestoreMemberDetails::internal_deserialize(&mut map)?), - "shared_content_unshare_details" => EventDetails::SharedContentUnshareDetails(SharedContentUnshareDetails::internal_deserialize(&mut map)?), - "shared_content_view_details" => EventDetails::SharedContentViewDetails(SharedContentViewDetails::internal_deserialize(&mut map)?), - "shared_folder_change_link_policy_details" => EventDetails::SharedFolderChangeLinkPolicyDetails(SharedFolderChangeLinkPolicyDetails::internal_deserialize(&mut map)?), - "shared_folder_change_members_inheritance_policy_details" => EventDetails::SharedFolderChangeMembersInheritancePolicyDetails(SharedFolderChangeMembersInheritancePolicyDetails::internal_deserialize(&mut map)?), - "shared_folder_change_members_management_policy_details" => EventDetails::SharedFolderChangeMembersManagementPolicyDetails(SharedFolderChangeMembersManagementPolicyDetails::internal_deserialize(&mut map)?), - "shared_folder_change_members_policy_details" => EventDetails::SharedFolderChangeMembersPolicyDetails(SharedFolderChangeMembersPolicyDetails::internal_deserialize(&mut map)?), - "shared_folder_create_details" => EventDetails::SharedFolderCreateDetails(SharedFolderCreateDetails::internal_deserialize(&mut map)?), - "shared_folder_decline_invitation_details" => EventDetails::SharedFolderDeclineInvitationDetails(SharedFolderDeclineInvitationDetails::internal_deserialize(&mut map)?), - "shared_folder_mount_details" => EventDetails::SharedFolderMountDetails(SharedFolderMountDetails::internal_deserialize(&mut map)?), - "shared_folder_nest_details" => EventDetails::SharedFolderNestDetails(SharedFolderNestDetails::internal_deserialize(&mut map)?), - "shared_folder_transfer_ownership_details" => EventDetails::SharedFolderTransferOwnershipDetails(SharedFolderTransferOwnershipDetails::internal_deserialize(&mut map)?), - "shared_folder_unmount_details" => EventDetails::SharedFolderUnmountDetails(SharedFolderUnmountDetails::internal_deserialize(&mut map)?), - "shared_link_add_expiry_details" => EventDetails::SharedLinkAddExpiryDetails(SharedLinkAddExpiryDetails::internal_deserialize(&mut map)?), - "shared_link_change_expiry_details" => EventDetails::SharedLinkChangeExpiryDetails(SharedLinkChangeExpiryDetails::internal_deserialize(&mut map)?), - "shared_link_change_visibility_details" => EventDetails::SharedLinkChangeVisibilityDetails(SharedLinkChangeVisibilityDetails::internal_deserialize(&mut map)?), - "shared_link_copy_details" => EventDetails::SharedLinkCopyDetails(SharedLinkCopyDetails::internal_deserialize(&mut map)?), - "shared_link_create_details" => EventDetails::SharedLinkCreateDetails(SharedLinkCreateDetails::internal_deserialize(&mut map)?), - "shared_link_disable_details" => EventDetails::SharedLinkDisableDetails(SharedLinkDisableDetails::internal_deserialize(&mut map)?), - "shared_link_download_details" => EventDetails::SharedLinkDownloadDetails(SharedLinkDownloadDetails::internal_deserialize(&mut map)?), - "shared_link_remove_expiry_details" => EventDetails::SharedLinkRemoveExpiryDetails(SharedLinkRemoveExpiryDetails::internal_deserialize(&mut map)?), - "shared_link_settings_add_expiration_details" => EventDetails::SharedLinkSettingsAddExpirationDetails(SharedLinkSettingsAddExpirationDetails::internal_deserialize(&mut map)?), - "shared_link_settings_add_password_details" => EventDetails::SharedLinkSettingsAddPasswordDetails(SharedLinkSettingsAddPasswordDetails::internal_deserialize(&mut map)?), - "shared_link_settings_allow_download_disabled_details" => EventDetails::SharedLinkSettingsAllowDownloadDisabledDetails(SharedLinkSettingsAllowDownloadDisabledDetails::internal_deserialize(&mut map)?), - "shared_link_settings_allow_download_enabled_details" => EventDetails::SharedLinkSettingsAllowDownloadEnabledDetails(SharedLinkSettingsAllowDownloadEnabledDetails::internal_deserialize(&mut map)?), - "shared_link_settings_change_audience_details" => EventDetails::SharedLinkSettingsChangeAudienceDetails(SharedLinkSettingsChangeAudienceDetails::internal_deserialize(&mut map)?), - "shared_link_settings_change_expiration_details" => EventDetails::SharedLinkSettingsChangeExpirationDetails(SharedLinkSettingsChangeExpirationDetails::internal_deserialize(&mut map)?), - "shared_link_settings_change_password_details" => EventDetails::SharedLinkSettingsChangePasswordDetails(SharedLinkSettingsChangePasswordDetails::internal_deserialize(&mut map)?), - "shared_link_settings_remove_expiration_details" => EventDetails::SharedLinkSettingsRemoveExpirationDetails(SharedLinkSettingsRemoveExpirationDetails::internal_deserialize(&mut map)?), - "shared_link_settings_remove_password_details" => EventDetails::SharedLinkSettingsRemovePasswordDetails(SharedLinkSettingsRemovePasswordDetails::internal_deserialize(&mut map)?), - "shared_link_share_details" => EventDetails::SharedLinkShareDetails(SharedLinkShareDetails::internal_deserialize(&mut map)?), - "shared_link_view_details" => EventDetails::SharedLinkViewDetails(SharedLinkViewDetails::internal_deserialize(&mut map)?), - "shared_note_opened_details" => EventDetails::SharedNoteOpenedDetails(SharedNoteOpenedDetails::internal_deserialize(&mut map)?), - "shmodel_disable_downloads_details" => EventDetails::ShmodelDisableDownloadsDetails(ShmodelDisableDownloadsDetails::internal_deserialize(&mut map)?), - "shmodel_enable_downloads_details" => EventDetails::ShmodelEnableDownloadsDetails(ShmodelEnableDownloadsDetails::internal_deserialize(&mut map)?), - "shmodel_group_share_details" => EventDetails::ShmodelGroupShareDetails(ShmodelGroupShareDetails::internal_deserialize(&mut map)?), - "showcase_access_granted_details" => EventDetails::ShowcaseAccessGrantedDetails(ShowcaseAccessGrantedDetails::internal_deserialize(&mut map)?), - "showcase_add_member_details" => EventDetails::ShowcaseAddMemberDetails(ShowcaseAddMemberDetails::internal_deserialize(&mut map)?), - "showcase_archived_details" => EventDetails::ShowcaseArchivedDetails(ShowcaseArchivedDetails::internal_deserialize(&mut map)?), - "showcase_created_details" => EventDetails::ShowcaseCreatedDetails(ShowcaseCreatedDetails::internal_deserialize(&mut map)?), - "showcase_delete_comment_details" => EventDetails::ShowcaseDeleteCommentDetails(ShowcaseDeleteCommentDetails::internal_deserialize(&mut map)?), - "showcase_edited_details" => EventDetails::ShowcaseEditedDetails(ShowcaseEditedDetails::internal_deserialize(&mut map)?), - "showcase_edit_comment_details" => EventDetails::ShowcaseEditCommentDetails(ShowcaseEditCommentDetails::internal_deserialize(&mut map)?), - "showcase_file_added_details" => EventDetails::ShowcaseFileAddedDetails(ShowcaseFileAddedDetails::internal_deserialize(&mut map)?), - "showcase_file_download_details" => EventDetails::ShowcaseFileDownloadDetails(ShowcaseFileDownloadDetails::internal_deserialize(&mut map)?), - "showcase_file_removed_details" => EventDetails::ShowcaseFileRemovedDetails(ShowcaseFileRemovedDetails::internal_deserialize(&mut map)?), - "showcase_file_view_details" => EventDetails::ShowcaseFileViewDetails(ShowcaseFileViewDetails::internal_deserialize(&mut map)?), - "showcase_permanently_deleted_details" => EventDetails::ShowcasePermanentlyDeletedDetails(ShowcasePermanentlyDeletedDetails::internal_deserialize(&mut map)?), - "showcase_post_comment_details" => EventDetails::ShowcasePostCommentDetails(ShowcasePostCommentDetails::internal_deserialize(&mut map)?), - "showcase_remove_member_details" => EventDetails::ShowcaseRemoveMemberDetails(ShowcaseRemoveMemberDetails::internal_deserialize(&mut map)?), - "showcase_renamed_details" => EventDetails::ShowcaseRenamedDetails(ShowcaseRenamedDetails::internal_deserialize(&mut map)?), - "showcase_request_access_details" => EventDetails::ShowcaseRequestAccessDetails(ShowcaseRequestAccessDetails::internal_deserialize(&mut map)?), - "showcase_resolve_comment_details" => EventDetails::ShowcaseResolveCommentDetails(ShowcaseResolveCommentDetails::internal_deserialize(&mut map)?), - "showcase_restored_details" => EventDetails::ShowcaseRestoredDetails(ShowcaseRestoredDetails::internal_deserialize(&mut map)?), - "showcase_trashed_details" => EventDetails::ShowcaseTrashedDetails(ShowcaseTrashedDetails::internal_deserialize(&mut map)?), - "showcase_trashed_deprecated_details" => EventDetails::ShowcaseTrashedDeprecatedDetails(ShowcaseTrashedDeprecatedDetails::internal_deserialize(&mut map)?), - "showcase_unresolve_comment_details" => EventDetails::ShowcaseUnresolveCommentDetails(ShowcaseUnresolveCommentDetails::internal_deserialize(&mut map)?), - "showcase_untrashed_details" => EventDetails::ShowcaseUntrashedDetails(ShowcaseUntrashedDetails::internal_deserialize(&mut map)?), - "showcase_untrashed_deprecated_details" => EventDetails::ShowcaseUntrashedDeprecatedDetails(ShowcaseUntrashedDeprecatedDetails::internal_deserialize(&mut map)?), - "showcase_view_details" => EventDetails::ShowcaseViewDetails(ShowcaseViewDetails::internal_deserialize(&mut map)?), - "sso_add_cert_details" => EventDetails::SsoAddCertDetails(SsoAddCertDetails::internal_deserialize(&mut map)?), - "sso_add_login_url_details" => EventDetails::SsoAddLoginUrlDetails(SsoAddLoginUrlDetails::internal_deserialize(&mut map)?), - "sso_add_logout_url_details" => EventDetails::SsoAddLogoutUrlDetails(SsoAddLogoutUrlDetails::internal_deserialize(&mut map)?), - "sso_change_cert_details" => EventDetails::SsoChangeCertDetails(SsoChangeCertDetails::internal_deserialize(&mut map)?), - "sso_change_login_url_details" => EventDetails::SsoChangeLoginUrlDetails(SsoChangeLoginUrlDetails::internal_deserialize(&mut map)?), - "sso_change_logout_url_details" => EventDetails::SsoChangeLogoutUrlDetails(SsoChangeLogoutUrlDetails::internal_deserialize(&mut map)?), - "sso_change_saml_identity_mode_details" => EventDetails::SsoChangeSamlIdentityModeDetails(SsoChangeSamlIdentityModeDetails::internal_deserialize(&mut map)?), - "sso_remove_cert_details" => EventDetails::SsoRemoveCertDetails(SsoRemoveCertDetails::internal_deserialize(&mut map)?), - "sso_remove_login_url_details" => EventDetails::SsoRemoveLoginUrlDetails(SsoRemoveLoginUrlDetails::internal_deserialize(&mut map)?), - "sso_remove_logout_url_details" => EventDetails::SsoRemoveLogoutUrlDetails(SsoRemoveLogoutUrlDetails::internal_deserialize(&mut map)?), - "team_folder_change_status_details" => EventDetails::TeamFolderChangeStatusDetails(TeamFolderChangeStatusDetails::internal_deserialize(&mut map)?), - "team_folder_create_details" => EventDetails::TeamFolderCreateDetails(TeamFolderCreateDetails::internal_deserialize(&mut map)?), - "team_folder_downgrade_details" => EventDetails::TeamFolderDowngradeDetails(TeamFolderDowngradeDetails::internal_deserialize(&mut map)?), - "team_folder_permanently_delete_details" => EventDetails::TeamFolderPermanentlyDeleteDetails(TeamFolderPermanentlyDeleteDetails::internal_deserialize(&mut map)?), - "team_folder_rename_details" => EventDetails::TeamFolderRenameDetails(TeamFolderRenameDetails::internal_deserialize(&mut map)?), - "team_selective_sync_settings_changed_details" => EventDetails::TeamSelectiveSyncSettingsChangedDetails(TeamSelectiveSyncSettingsChangedDetails::internal_deserialize(&mut map)?), - "account_capture_change_policy_details" => EventDetails::AccountCaptureChangePolicyDetails(AccountCaptureChangePolicyDetails::internal_deserialize(&mut map)?), - "admin_email_reminders_changed_details" => EventDetails::AdminEmailRemindersChangedDetails(AdminEmailRemindersChangedDetails::internal_deserialize(&mut map)?), - "allow_download_disabled_details" => EventDetails::AllowDownloadDisabledDetails(AllowDownloadDisabledDetails::internal_deserialize(&mut map)?), - "allow_download_enabled_details" => EventDetails::AllowDownloadEnabledDetails(AllowDownloadEnabledDetails::internal_deserialize(&mut map)?), - "app_permissions_changed_details" => EventDetails::AppPermissionsChangedDetails(AppPermissionsChangedDetails::internal_deserialize(&mut map)?), - "camera_uploads_policy_changed_details" => EventDetails::CameraUploadsPolicyChangedDetails(CameraUploadsPolicyChangedDetails::internal_deserialize(&mut map)?), - "capture_transcript_policy_changed_details" => EventDetails::CaptureTranscriptPolicyChangedDetails(CaptureTranscriptPolicyChangedDetails::internal_deserialize(&mut map)?), - "classification_change_policy_details" => EventDetails::ClassificationChangePolicyDetails(ClassificationChangePolicyDetails::internal_deserialize(&mut map)?), - "computer_backup_policy_changed_details" => EventDetails::ComputerBackupPolicyChangedDetails(ComputerBackupPolicyChangedDetails::internal_deserialize(&mut map)?), - "content_administration_policy_changed_details" => EventDetails::ContentAdministrationPolicyChangedDetails(ContentAdministrationPolicyChangedDetails::internal_deserialize(&mut map)?), - "data_placement_restriction_change_policy_details" => EventDetails::DataPlacementRestrictionChangePolicyDetails(DataPlacementRestrictionChangePolicyDetails::internal_deserialize(&mut map)?), - "data_placement_restriction_satisfy_policy_details" => EventDetails::DataPlacementRestrictionSatisfyPolicyDetails(DataPlacementRestrictionSatisfyPolicyDetails::internal_deserialize(&mut map)?), - "device_approvals_add_exception_details" => EventDetails::DeviceApprovalsAddExceptionDetails(DeviceApprovalsAddExceptionDetails::internal_deserialize(&mut map)?), - "device_approvals_change_desktop_policy_details" => EventDetails::DeviceApprovalsChangeDesktopPolicyDetails(DeviceApprovalsChangeDesktopPolicyDetails::internal_deserialize(&mut map)?), - "device_approvals_change_mobile_policy_details" => EventDetails::DeviceApprovalsChangeMobilePolicyDetails(DeviceApprovalsChangeMobilePolicyDetails::internal_deserialize(&mut map)?), - "device_approvals_change_overage_action_details" => EventDetails::DeviceApprovalsChangeOverageActionDetails(DeviceApprovalsChangeOverageActionDetails::internal_deserialize(&mut map)?), - "device_approvals_change_unlink_action_details" => EventDetails::DeviceApprovalsChangeUnlinkActionDetails(DeviceApprovalsChangeUnlinkActionDetails::internal_deserialize(&mut map)?), - "device_approvals_remove_exception_details" => EventDetails::DeviceApprovalsRemoveExceptionDetails(DeviceApprovalsRemoveExceptionDetails::internal_deserialize(&mut map)?), - "directory_restrictions_add_members_details" => EventDetails::DirectoryRestrictionsAddMembersDetails(DirectoryRestrictionsAddMembersDetails::internal_deserialize(&mut map)?), - "directory_restrictions_remove_members_details" => EventDetails::DirectoryRestrictionsRemoveMembersDetails(DirectoryRestrictionsRemoveMembersDetails::internal_deserialize(&mut map)?), - "dropbox_passwords_policy_changed_details" => EventDetails::DropboxPasswordsPolicyChangedDetails(DropboxPasswordsPolicyChangedDetails::internal_deserialize(&mut map)?), - "email_ingest_policy_changed_details" => EventDetails::EmailIngestPolicyChangedDetails(EmailIngestPolicyChangedDetails::internal_deserialize(&mut map)?), - "emm_add_exception_details" => EventDetails::EmmAddExceptionDetails(EmmAddExceptionDetails::internal_deserialize(&mut map)?), - "emm_change_policy_details" => EventDetails::EmmChangePolicyDetails(EmmChangePolicyDetails::internal_deserialize(&mut map)?), - "emm_remove_exception_details" => EventDetails::EmmRemoveExceptionDetails(EmmRemoveExceptionDetails::internal_deserialize(&mut map)?), - "extended_version_history_change_policy_details" => EventDetails::ExtendedVersionHistoryChangePolicyDetails(ExtendedVersionHistoryChangePolicyDetails::internal_deserialize(&mut map)?), - "external_drive_backup_policy_changed_details" => EventDetails::ExternalDriveBackupPolicyChangedDetails(ExternalDriveBackupPolicyChangedDetails::internal_deserialize(&mut map)?), - "file_comments_change_policy_details" => EventDetails::FileCommentsChangePolicyDetails(FileCommentsChangePolicyDetails::internal_deserialize(&mut map)?), - "file_locking_policy_changed_details" => EventDetails::FileLockingPolicyChangedDetails(FileLockingPolicyChangedDetails::internal_deserialize(&mut map)?), - "file_provider_migration_policy_changed_details" => EventDetails::FileProviderMigrationPolicyChangedDetails(FileProviderMigrationPolicyChangedDetails::internal_deserialize(&mut map)?), - "file_requests_change_policy_details" => EventDetails::FileRequestsChangePolicyDetails(FileRequestsChangePolicyDetails::internal_deserialize(&mut map)?), - "file_requests_emails_enabled_details" => EventDetails::FileRequestsEmailsEnabledDetails(FileRequestsEmailsEnabledDetails::internal_deserialize(&mut map)?), - "file_requests_emails_restricted_to_team_only_details" => EventDetails::FileRequestsEmailsRestrictedToTeamOnlyDetails(FileRequestsEmailsRestrictedToTeamOnlyDetails::internal_deserialize(&mut map)?), - "file_transfers_policy_changed_details" => EventDetails::FileTransfersPolicyChangedDetails(FileTransfersPolicyChangedDetails::internal_deserialize(&mut map)?), - "folder_link_restriction_policy_changed_details" => EventDetails::FolderLinkRestrictionPolicyChangedDetails(FolderLinkRestrictionPolicyChangedDetails::internal_deserialize(&mut map)?), - "google_sso_change_policy_details" => EventDetails::GoogleSsoChangePolicyDetails(GoogleSsoChangePolicyDetails::internal_deserialize(&mut map)?), - "group_user_management_change_policy_details" => EventDetails::GroupUserManagementChangePolicyDetails(GroupUserManagementChangePolicyDetails::internal_deserialize(&mut map)?), - "integration_policy_changed_details" => EventDetails::IntegrationPolicyChangedDetails(IntegrationPolicyChangedDetails::internal_deserialize(&mut map)?), - "invite_acceptance_email_policy_changed_details" => EventDetails::InviteAcceptanceEmailPolicyChangedDetails(InviteAcceptanceEmailPolicyChangedDetails::internal_deserialize(&mut map)?), - "member_requests_change_policy_details" => EventDetails::MemberRequestsChangePolicyDetails(MemberRequestsChangePolicyDetails::internal_deserialize(&mut map)?), - "member_send_invite_policy_changed_details" => EventDetails::MemberSendInvitePolicyChangedDetails(MemberSendInvitePolicyChangedDetails::internal_deserialize(&mut map)?), - "member_space_limits_add_exception_details" => EventDetails::MemberSpaceLimitsAddExceptionDetails(MemberSpaceLimitsAddExceptionDetails::internal_deserialize(&mut map)?), - "member_space_limits_change_caps_type_policy_details" => EventDetails::MemberSpaceLimitsChangeCapsTypePolicyDetails(MemberSpaceLimitsChangeCapsTypePolicyDetails::internal_deserialize(&mut map)?), - "member_space_limits_change_policy_details" => EventDetails::MemberSpaceLimitsChangePolicyDetails(MemberSpaceLimitsChangePolicyDetails::internal_deserialize(&mut map)?), - "member_space_limits_remove_exception_details" => EventDetails::MemberSpaceLimitsRemoveExceptionDetails(MemberSpaceLimitsRemoveExceptionDetails::internal_deserialize(&mut map)?), - "member_suggestions_change_policy_details" => EventDetails::MemberSuggestionsChangePolicyDetails(MemberSuggestionsChangePolicyDetails::internal_deserialize(&mut map)?), - "microsoft_office_addin_change_policy_details" => EventDetails::MicrosoftOfficeAddinChangePolicyDetails(MicrosoftOfficeAddinChangePolicyDetails::internal_deserialize(&mut map)?), - "network_control_change_policy_details" => EventDetails::NetworkControlChangePolicyDetails(NetworkControlChangePolicyDetails::internal_deserialize(&mut map)?), - "paper_change_deployment_policy_details" => EventDetails::PaperChangeDeploymentPolicyDetails(PaperChangeDeploymentPolicyDetails::internal_deserialize(&mut map)?), - "paper_change_member_link_policy_details" => EventDetails::PaperChangeMemberLinkPolicyDetails(PaperChangeMemberLinkPolicyDetails::internal_deserialize(&mut map)?), - "paper_change_member_policy_details" => EventDetails::PaperChangeMemberPolicyDetails(PaperChangeMemberPolicyDetails::internal_deserialize(&mut map)?), - "paper_change_policy_details" => EventDetails::PaperChangePolicyDetails(PaperChangePolicyDetails::internal_deserialize(&mut map)?), - "paper_default_folder_policy_changed_details" => EventDetails::PaperDefaultFolderPolicyChangedDetails(PaperDefaultFolderPolicyChangedDetails::internal_deserialize(&mut map)?), - "paper_desktop_policy_changed_details" => EventDetails::PaperDesktopPolicyChangedDetails(PaperDesktopPolicyChangedDetails::internal_deserialize(&mut map)?), - "paper_enabled_users_group_addition_details" => EventDetails::PaperEnabledUsersGroupAdditionDetails(PaperEnabledUsersGroupAdditionDetails::internal_deserialize(&mut map)?), - "paper_enabled_users_group_removal_details" => EventDetails::PaperEnabledUsersGroupRemovalDetails(PaperEnabledUsersGroupRemovalDetails::internal_deserialize(&mut map)?), - "password_strength_requirements_change_policy_details" => EventDetails::PasswordStrengthRequirementsChangePolicyDetails(PasswordStrengthRequirementsChangePolicyDetails::internal_deserialize(&mut map)?), - "permanent_delete_change_policy_details" => EventDetails::PermanentDeleteChangePolicyDetails(PermanentDeleteChangePolicyDetails::internal_deserialize(&mut map)?), - "reseller_support_change_policy_details" => EventDetails::ResellerSupportChangePolicyDetails(ResellerSupportChangePolicyDetails::internal_deserialize(&mut map)?), - "rewind_policy_changed_details" => EventDetails::RewindPolicyChangedDetails(RewindPolicyChangedDetails::internal_deserialize(&mut map)?), - "send_for_signature_policy_changed_details" => EventDetails::SendForSignaturePolicyChangedDetails(SendForSignaturePolicyChangedDetails::internal_deserialize(&mut map)?), - "sharing_change_folder_join_policy_details" => EventDetails::SharingChangeFolderJoinPolicyDetails(SharingChangeFolderJoinPolicyDetails::internal_deserialize(&mut map)?), - "sharing_change_link_allow_change_expiration_policy_details" => EventDetails::SharingChangeLinkAllowChangeExpirationPolicyDetails(SharingChangeLinkAllowChangeExpirationPolicyDetails::internal_deserialize(&mut map)?), - "sharing_change_link_default_expiration_policy_details" => EventDetails::SharingChangeLinkDefaultExpirationPolicyDetails(SharingChangeLinkDefaultExpirationPolicyDetails::internal_deserialize(&mut map)?), - "sharing_change_link_enforce_password_policy_details" => EventDetails::SharingChangeLinkEnforcePasswordPolicyDetails(SharingChangeLinkEnforcePasswordPolicyDetails::internal_deserialize(&mut map)?), - "sharing_change_link_policy_details" => EventDetails::SharingChangeLinkPolicyDetails(SharingChangeLinkPolicyDetails::internal_deserialize(&mut map)?), - "sharing_change_member_policy_details" => EventDetails::SharingChangeMemberPolicyDetails(SharingChangeMemberPolicyDetails::internal_deserialize(&mut map)?), - "showcase_change_download_policy_details" => EventDetails::ShowcaseChangeDownloadPolicyDetails(ShowcaseChangeDownloadPolicyDetails::internal_deserialize(&mut map)?), - "showcase_change_enabled_policy_details" => EventDetails::ShowcaseChangeEnabledPolicyDetails(ShowcaseChangeEnabledPolicyDetails::internal_deserialize(&mut map)?), - "showcase_change_external_sharing_policy_details" => EventDetails::ShowcaseChangeExternalSharingPolicyDetails(ShowcaseChangeExternalSharingPolicyDetails::internal_deserialize(&mut map)?), - "smarter_smart_sync_policy_changed_details" => EventDetails::SmarterSmartSyncPolicyChangedDetails(SmarterSmartSyncPolicyChangedDetails::internal_deserialize(&mut map)?), - "smart_sync_change_policy_details" => EventDetails::SmartSyncChangePolicyDetails(SmartSyncChangePolicyDetails::internal_deserialize(&mut map)?), - "smart_sync_not_opt_out_details" => EventDetails::SmartSyncNotOptOutDetails(SmartSyncNotOptOutDetails::internal_deserialize(&mut map)?), - "smart_sync_opt_out_details" => EventDetails::SmartSyncOptOutDetails(SmartSyncOptOutDetails::internal_deserialize(&mut map)?), - "sso_change_policy_details" => EventDetails::SsoChangePolicyDetails(SsoChangePolicyDetails::internal_deserialize(&mut map)?), - "team_branding_policy_changed_details" => EventDetails::TeamBrandingPolicyChangedDetails(TeamBrandingPolicyChangedDetails::internal_deserialize(&mut map)?), - "team_extensions_policy_changed_details" => EventDetails::TeamExtensionsPolicyChangedDetails(TeamExtensionsPolicyChangedDetails::internal_deserialize(&mut map)?), - "team_selective_sync_policy_changed_details" => EventDetails::TeamSelectiveSyncPolicyChangedDetails(TeamSelectiveSyncPolicyChangedDetails::internal_deserialize(&mut map)?), - "team_sharing_whitelist_subjects_changed_details" => EventDetails::TeamSharingWhitelistSubjectsChangedDetails(TeamSharingWhitelistSubjectsChangedDetails::internal_deserialize(&mut map)?), - "tfa_add_exception_details" => EventDetails::TfaAddExceptionDetails(TfaAddExceptionDetails::internal_deserialize(&mut map)?), - "tfa_change_policy_details" => EventDetails::TfaChangePolicyDetails(TfaChangePolicyDetails::internal_deserialize(&mut map)?), - "tfa_remove_exception_details" => EventDetails::TfaRemoveExceptionDetails(TfaRemoveExceptionDetails::internal_deserialize(&mut map)?), - "two_account_change_policy_details" => EventDetails::TwoAccountChangePolicyDetails(TwoAccountChangePolicyDetails::internal_deserialize(&mut map)?), - "viewer_info_policy_changed_details" => EventDetails::ViewerInfoPolicyChangedDetails(ViewerInfoPolicyChangedDetails::internal_deserialize(&mut map)?), - "watermarking_policy_changed_details" => EventDetails::WatermarkingPolicyChangedDetails(WatermarkingPolicyChangedDetails::internal_deserialize(&mut map)?), - "web_sessions_change_active_session_limit_details" => EventDetails::WebSessionsChangeActiveSessionLimitDetails(WebSessionsChangeActiveSessionLimitDetails::internal_deserialize(&mut map)?), - "web_sessions_change_fixed_length_policy_details" => EventDetails::WebSessionsChangeFixedLengthPolicyDetails(WebSessionsChangeFixedLengthPolicyDetails::internal_deserialize(&mut map)?), - "web_sessions_change_idle_length_policy_details" => EventDetails::WebSessionsChangeIdleLengthPolicyDetails(WebSessionsChangeIdleLengthPolicyDetails::internal_deserialize(&mut map)?), - "data_residency_migration_request_successful_details" => EventDetails::DataResidencyMigrationRequestSuccessfulDetails(DataResidencyMigrationRequestSuccessfulDetails::internal_deserialize(&mut map)?), - "data_residency_migration_request_unsuccessful_details" => EventDetails::DataResidencyMigrationRequestUnsuccessfulDetails(DataResidencyMigrationRequestUnsuccessfulDetails::internal_deserialize(&mut map)?), - "team_merge_from_details" => EventDetails::TeamMergeFromDetails(TeamMergeFromDetails::internal_deserialize(&mut map)?), - "team_merge_to_details" => EventDetails::TeamMergeToDetails(TeamMergeToDetails::internal_deserialize(&mut map)?), - "team_profile_add_background_details" => EventDetails::TeamProfileAddBackgroundDetails(TeamProfileAddBackgroundDetails::internal_deserialize(&mut map)?), - "team_profile_add_logo_details" => EventDetails::TeamProfileAddLogoDetails(TeamProfileAddLogoDetails::internal_deserialize(&mut map)?), - "team_profile_change_background_details" => EventDetails::TeamProfileChangeBackgroundDetails(TeamProfileChangeBackgroundDetails::internal_deserialize(&mut map)?), - "team_profile_change_default_language_details" => EventDetails::TeamProfileChangeDefaultLanguageDetails(TeamProfileChangeDefaultLanguageDetails::internal_deserialize(&mut map)?), - "team_profile_change_logo_details" => EventDetails::TeamProfileChangeLogoDetails(TeamProfileChangeLogoDetails::internal_deserialize(&mut map)?), - "team_profile_change_name_details" => EventDetails::TeamProfileChangeNameDetails(TeamProfileChangeNameDetails::internal_deserialize(&mut map)?), - "team_profile_remove_background_details" => EventDetails::TeamProfileRemoveBackgroundDetails(TeamProfileRemoveBackgroundDetails::internal_deserialize(&mut map)?), - "team_profile_remove_logo_details" => EventDetails::TeamProfileRemoveLogoDetails(TeamProfileRemoveLogoDetails::internal_deserialize(&mut map)?), - "tfa_add_backup_phone_details" => EventDetails::TfaAddBackupPhoneDetails(TfaAddBackupPhoneDetails::internal_deserialize(&mut map)?), - "tfa_add_security_key_details" => EventDetails::TfaAddSecurityKeyDetails(TfaAddSecurityKeyDetails::internal_deserialize(&mut map)?), - "tfa_change_backup_phone_details" => EventDetails::TfaChangeBackupPhoneDetails(TfaChangeBackupPhoneDetails::internal_deserialize(&mut map)?), - "tfa_change_status_details" => EventDetails::TfaChangeStatusDetails(TfaChangeStatusDetails::internal_deserialize(&mut map)?), - "tfa_remove_backup_phone_details" => EventDetails::TfaRemoveBackupPhoneDetails(TfaRemoveBackupPhoneDetails::internal_deserialize(&mut map)?), - "tfa_remove_security_key_details" => EventDetails::TfaRemoveSecurityKeyDetails(TfaRemoveSecurityKeyDetails::internal_deserialize(&mut map)?), - "tfa_reset_details" => EventDetails::TfaResetDetails(TfaResetDetails::internal_deserialize(&mut map)?), - "changed_enterprise_admin_role_details" => EventDetails::ChangedEnterpriseAdminRoleDetails(ChangedEnterpriseAdminRoleDetails::internal_deserialize(&mut map)?), - "changed_enterprise_connected_team_status_details" => EventDetails::ChangedEnterpriseConnectedTeamStatusDetails(ChangedEnterpriseConnectedTeamStatusDetails::internal_deserialize(&mut map)?), - "ended_enterprise_admin_session_details" => EventDetails::EndedEnterpriseAdminSessionDetails(EndedEnterpriseAdminSessionDetails::internal_deserialize(&mut map)?), - "ended_enterprise_admin_session_deprecated_details" => EventDetails::EndedEnterpriseAdminSessionDeprecatedDetails(EndedEnterpriseAdminSessionDeprecatedDetails::internal_deserialize(&mut map)?), - "enterprise_settings_locking_details" => EventDetails::EnterpriseSettingsLockingDetails(EnterpriseSettingsLockingDetails::internal_deserialize(&mut map)?), - "guest_admin_change_status_details" => EventDetails::GuestAdminChangeStatusDetails(GuestAdminChangeStatusDetails::internal_deserialize(&mut map)?), - "started_enterprise_admin_session_details" => EventDetails::StartedEnterpriseAdminSessionDetails(StartedEnterpriseAdminSessionDetails::internal_deserialize(&mut map)?), - "team_merge_request_accepted_details" => EventDetails::TeamMergeRequestAcceptedDetails(TeamMergeRequestAcceptedDetails::internal_deserialize(&mut map)?), - "team_merge_request_accepted_shown_to_primary_team_details" => EventDetails::TeamMergeRequestAcceptedShownToPrimaryTeamDetails(TeamMergeRequestAcceptedShownToPrimaryTeamDetails::internal_deserialize(&mut map)?), - "team_merge_request_accepted_shown_to_secondary_team_details" => EventDetails::TeamMergeRequestAcceptedShownToSecondaryTeamDetails(TeamMergeRequestAcceptedShownToSecondaryTeamDetails::internal_deserialize(&mut map)?), - "team_merge_request_auto_canceled_details" => EventDetails::TeamMergeRequestAutoCanceledDetails(TeamMergeRequestAutoCanceledDetails::internal_deserialize(&mut map)?), - "team_merge_request_canceled_details" => EventDetails::TeamMergeRequestCanceledDetails(TeamMergeRequestCanceledDetails::internal_deserialize(&mut map)?), - "team_merge_request_canceled_shown_to_primary_team_details" => EventDetails::TeamMergeRequestCanceledShownToPrimaryTeamDetails(TeamMergeRequestCanceledShownToPrimaryTeamDetails::internal_deserialize(&mut map)?), - "team_merge_request_canceled_shown_to_secondary_team_details" => EventDetails::TeamMergeRequestCanceledShownToSecondaryTeamDetails(TeamMergeRequestCanceledShownToSecondaryTeamDetails::internal_deserialize(&mut map)?), - "team_merge_request_expired_details" => EventDetails::TeamMergeRequestExpiredDetails(TeamMergeRequestExpiredDetails::internal_deserialize(&mut map)?), - "team_merge_request_expired_shown_to_primary_team_details" => EventDetails::TeamMergeRequestExpiredShownToPrimaryTeamDetails(TeamMergeRequestExpiredShownToPrimaryTeamDetails::internal_deserialize(&mut map)?), - "team_merge_request_expired_shown_to_secondary_team_details" => EventDetails::TeamMergeRequestExpiredShownToSecondaryTeamDetails(TeamMergeRequestExpiredShownToSecondaryTeamDetails::internal_deserialize(&mut map)?), - "team_merge_request_rejected_shown_to_primary_team_details" => EventDetails::TeamMergeRequestRejectedShownToPrimaryTeamDetails(TeamMergeRequestRejectedShownToPrimaryTeamDetails::internal_deserialize(&mut map)?), - "team_merge_request_rejected_shown_to_secondary_team_details" => EventDetails::TeamMergeRequestRejectedShownToSecondaryTeamDetails(TeamMergeRequestRejectedShownToSecondaryTeamDetails::internal_deserialize(&mut map)?), - "team_merge_request_reminder_details" => EventDetails::TeamMergeRequestReminderDetails(TeamMergeRequestReminderDetails::internal_deserialize(&mut map)?), - "team_merge_request_reminder_shown_to_primary_team_details" => EventDetails::TeamMergeRequestReminderShownToPrimaryTeamDetails(TeamMergeRequestReminderShownToPrimaryTeamDetails::internal_deserialize(&mut map)?), - "team_merge_request_reminder_shown_to_secondary_team_details" => EventDetails::TeamMergeRequestReminderShownToSecondaryTeamDetails(TeamMergeRequestReminderShownToSecondaryTeamDetails::internal_deserialize(&mut map)?), - "team_merge_request_revoked_details" => EventDetails::TeamMergeRequestRevokedDetails(TeamMergeRequestRevokedDetails::internal_deserialize(&mut map)?), - "team_merge_request_sent_shown_to_primary_team_details" => EventDetails::TeamMergeRequestSentShownToPrimaryTeamDetails(TeamMergeRequestSentShownToPrimaryTeamDetails::internal_deserialize(&mut map)?), - "team_merge_request_sent_shown_to_secondary_team_details" => EventDetails::TeamMergeRequestSentShownToSecondaryTeamDetails(TeamMergeRequestSentShownToSecondaryTeamDetails::internal_deserialize(&mut map)?), - "missing_details" => EventDetails::MissingDetails(MissingDetails::internal_deserialize(&mut map)?), - _ => EventDetails::Other, - }; - crate::eat_json_fields(&mut map)?; - Ok(value) - } +impl DeviceManagementDisabledType { + pub fn new(description: String) -> Self { + DeviceManagementDisabledType { + description, } - const VARIANTS: &[&str] = &["admin_alerting_alert_state_changed_details", - "admin_alerting_changed_alert_config_details", - "admin_alerting_triggered_alert_details", - "ransomware_restore_process_completed_details", - "ransomware_restore_process_started_details", - "app_blocked_by_permissions_details", - "app_link_team_details", - "app_link_user_details", - "app_unlink_team_details", - "app_unlink_user_details", - "integration_connected_details", - "integration_disconnected_details", - "file_add_comment_details", - "file_change_comment_subscription_details", - "file_delete_comment_details", - "file_edit_comment_details", - "file_like_comment_details", - "file_resolve_comment_details", - "file_unlike_comment_details", - "file_unresolve_comment_details", - "governance_policy_add_folders_details", - "governance_policy_add_folder_failed_details", - "governance_policy_content_disposed_details", - "governance_policy_create_details", - "governance_policy_delete_details", - "governance_policy_edit_details_details", - "governance_policy_edit_duration_details", - "governance_policy_export_created_details", - "governance_policy_export_removed_details", - "governance_policy_remove_folders_details", - "governance_policy_report_created_details", - "governance_policy_zip_part_downloaded_details", - "legal_holds_activate_a_hold_details", - "legal_holds_add_members_details", - "legal_holds_change_hold_details_details", - "legal_holds_change_hold_name_details", - "legal_holds_export_a_hold_details", - "legal_holds_export_cancelled_details", - "legal_holds_export_downloaded_details", - "legal_holds_export_removed_details", - "legal_holds_release_a_hold_details", - "legal_holds_remove_members_details", - "legal_holds_report_a_hold_details", - "device_change_ip_desktop_details", - "device_change_ip_mobile_details", - "device_change_ip_web_details", - "device_delete_on_unlink_fail_details", - "device_delete_on_unlink_success_details", - "device_link_fail_details", - "device_link_success_details", - "device_management_disabled_details", - "device_management_enabled_details", - "device_sync_backup_status_changed_details", - "device_unlink_details", - "dropbox_passwords_exported_details", - "dropbox_passwords_new_device_enrolled_details", - "emm_refresh_auth_token_details", - "external_drive_backup_eligibility_status_checked_details", - "external_drive_backup_status_changed_details", - "account_capture_change_availability_details", - "account_capture_migrate_account_details", - "account_capture_notification_emails_sent_details", - "account_capture_relinquish_account_details", - "disabled_domain_invites_details", - "domain_invites_approve_request_to_join_team_details", - "domain_invites_decline_request_to_join_team_details", - "domain_invites_email_existing_users_details", - "domain_invites_request_to_join_team_details", - "domain_invites_set_invite_new_user_pref_to_no_details", - "domain_invites_set_invite_new_user_pref_to_yes_details", - "domain_verification_add_domain_fail_details", - "domain_verification_add_domain_success_details", - "domain_verification_remove_domain_details", - "enabled_domain_invites_details", - "team_encryption_key_cancel_key_deletion_details", - "team_encryption_key_create_key_details", - "team_encryption_key_delete_key_details", - "team_encryption_key_disable_key_details", - "team_encryption_key_enable_key_details", - "team_encryption_key_rotate_key_details", - "team_encryption_key_schedule_key_deletion_details", - "apply_naming_convention_details", - "create_folder_details", - "file_add_details", - "file_add_from_automation_details", - "file_copy_details", - "file_delete_details", - "file_download_details", - "file_edit_details", - "file_get_copy_reference_details", - "file_locking_lock_status_changed_details", - "file_move_details", - "file_permanently_delete_details", - "file_preview_details", - "file_rename_details", - "file_restore_details", - "file_revert_details", - "file_rollback_changes_details", - "file_save_copy_reference_details", - "folder_overview_description_changed_details", - "folder_overview_item_pinned_details", - "folder_overview_item_unpinned_details", - "object_label_added_details", - "object_label_removed_details", - "object_label_updated_value_details", - "organize_folder_with_tidy_details", - "replay_file_delete_details", - "rewind_folder_details", - "undo_naming_convention_details", - "undo_organize_folder_with_tidy_details", - "user_tags_added_details", - "user_tags_removed_details", - "email_ingest_receive_file_details", - "file_request_change_details", - "file_request_close_details", - "file_request_create_details", - "file_request_delete_details", - "file_request_receive_file_details", - "group_add_external_id_details", - "group_add_member_details", - "group_change_external_id_details", - "group_change_management_type_details", - "group_change_member_role_details", - "group_create_details", - "group_delete_details", - "group_description_updated_details", - "group_join_policy_updated_details", - "group_moved_details", - "group_remove_external_id_details", - "group_remove_member_details", - "group_rename_details", - "account_lock_or_unlocked_details", - "emm_error_details", - "guest_admin_signed_in_via_trusted_teams_details", - "guest_admin_signed_out_via_trusted_teams_details", - "login_fail_details", - "login_success_details", - "logout_details", - "reseller_support_session_end_details", - "reseller_support_session_start_details", - "sign_in_as_session_end_details", - "sign_in_as_session_start_details", - "sso_error_details", - "backup_admin_invitation_sent_details", - "backup_invitation_opened_details", - "create_team_invite_link_details", - "delete_team_invite_link_details", - "member_add_external_id_details", - "member_add_name_details", - "member_change_admin_role_details", - "member_change_email_details", - "member_change_external_id_details", - "member_change_membership_type_details", - "member_change_name_details", - "member_change_reseller_role_details", - "member_change_status_details", - "member_delete_manual_contacts_details", - "member_delete_profile_photo_details", - "member_permanently_delete_account_contents_details", - "member_remove_external_id_details", - "member_set_profile_photo_details", - "member_space_limits_add_custom_quota_details", - "member_space_limits_change_custom_quota_details", - "member_space_limits_change_status_details", - "member_space_limits_remove_custom_quota_details", - "member_suggest_details", - "member_transfer_account_contents_details", - "pending_secondary_email_added_details", - "secondary_email_deleted_details", - "secondary_email_verified_details", - "secondary_mails_policy_changed_details", - "binder_add_page_details", - "binder_add_section_details", - "binder_remove_page_details", - "binder_remove_section_details", - "binder_rename_page_details", - "binder_rename_section_details", - "binder_reorder_page_details", - "binder_reorder_section_details", - "paper_content_add_member_details", - "paper_content_add_to_folder_details", - "paper_content_archive_details", - "paper_content_create_details", - "paper_content_permanently_delete_details", - "paper_content_remove_from_folder_details", - "paper_content_remove_member_details", - "paper_content_rename_details", - "paper_content_restore_details", - "paper_doc_add_comment_details", - "paper_doc_change_member_role_details", - "paper_doc_change_sharing_policy_details", - "paper_doc_change_subscription_details", - "paper_doc_deleted_details", - "paper_doc_delete_comment_details", - "paper_doc_download_details", - "paper_doc_edit_details", - "paper_doc_edit_comment_details", - "paper_doc_followed_details", - "paper_doc_mention_details", - "paper_doc_ownership_changed_details", - "paper_doc_request_access_details", - "paper_doc_resolve_comment_details", - "paper_doc_revert_details", - "paper_doc_slack_share_details", - "paper_doc_team_invite_details", - "paper_doc_trashed_details", - "paper_doc_unresolve_comment_details", - "paper_doc_untrashed_details", - "paper_doc_view_details", - "paper_external_view_allow_details", - "paper_external_view_default_team_details", - "paper_external_view_forbid_details", - "paper_folder_change_subscription_details", - "paper_folder_deleted_details", - "paper_folder_followed_details", - "paper_folder_team_invite_details", - "paper_published_link_change_permission_details", - "paper_published_link_create_details", - "paper_published_link_disabled_details", - "paper_published_link_view_details", - "password_change_details", - "password_reset_details", - "password_reset_all_details", - "classification_create_report_details", - "classification_create_report_fail_details", - "emm_create_exceptions_report_details", - "emm_create_usage_report_details", - "export_members_report_details", - "export_members_report_fail_details", - "external_sharing_create_report_details", - "external_sharing_report_failed_details", - "no_expiration_link_gen_create_report_details", - "no_expiration_link_gen_report_failed_details", - "no_password_link_gen_create_report_details", - "no_password_link_gen_report_failed_details", - "no_password_link_view_create_report_details", - "no_password_link_view_report_failed_details", - "outdated_link_view_create_report_details", - "outdated_link_view_report_failed_details", - "paper_admin_export_start_details", - "ransomware_alert_create_report_details", - "ransomware_alert_create_report_failed_details", - "smart_sync_create_admin_privilege_report_details", - "team_activity_create_report_details", - "team_activity_create_report_fail_details", - "collection_share_details", - "file_transfers_file_add_details", - "file_transfers_transfer_delete_details", - "file_transfers_transfer_download_details", - "file_transfers_transfer_send_details", - "file_transfers_transfer_view_details", - "note_acl_invite_only_details", - "note_acl_link_details", - "note_acl_team_link_details", - "note_shared_details", - "note_share_receive_details", - "open_note_shared_details", - "replay_file_shared_link_created_details", - "replay_file_shared_link_modified_details", - "replay_project_team_add_details", - "replay_project_team_delete_details", - "sf_add_group_details", - "sf_allow_non_members_to_view_shared_links_details", - "sf_external_invite_warn_details", - "sf_fb_invite_details", - "sf_fb_invite_change_role_details", - "sf_fb_uninvite_details", - "sf_invite_group_details", - "sf_team_grant_access_details", - "sf_team_invite_details", - "sf_team_invite_change_role_details", - "sf_team_join_details", - "sf_team_join_from_oob_link_details", - "sf_team_uninvite_details", - "shared_content_add_invitees_details", - "shared_content_add_link_expiry_details", - "shared_content_add_link_password_details", - "shared_content_add_member_details", - "shared_content_change_downloads_policy_details", - "shared_content_change_invitee_role_details", - "shared_content_change_link_audience_details", - "shared_content_change_link_expiry_details", - "shared_content_change_link_password_details", - "shared_content_change_member_role_details", - "shared_content_change_viewer_info_policy_details", - "shared_content_claim_invitation_details", - "shared_content_copy_details", - "shared_content_download_details", - "shared_content_relinquish_membership_details", - "shared_content_remove_invitees_details", - "shared_content_remove_link_expiry_details", - "shared_content_remove_link_password_details", - "shared_content_remove_member_details", - "shared_content_request_access_details", - "shared_content_restore_invitees_details", - "shared_content_restore_member_details", - "shared_content_unshare_details", - "shared_content_view_details", - "shared_folder_change_link_policy_details", - "shared_folder_change_members_inheritance_policy_details", - "shared_folder_change_members_management_policy_details", - "shared_folder_change_members_policy_details", - "shared_folder_create_details", - "shared_folder_decline_invitation_details", - "shared_folder_mount_details", - "shared_folder_nest_details", - "shared_folder_transfer_ownership_details", - "shared_folder_unmount_details", - "shared_link_add_expiry_details", - "shared_link_change_expiry_details", - "shared_link_change_visibility_details", - "shared_link_copy_details", - "shared_link_create_details", - "shared_link_disable_details", - "shared_link_download_details", - "shared_link_remove_expiry_details", - "shared_link_settings_add_expiration_details", - "shared_link_settings_add_password_details", - "shared_link_settings_allow_download_disabled_details", - "shared_link_settings_allow_download_enabled_details", - "shared_link_settings_change_audience_details", - "shared_link_settings_change_expiration_details", - "shared_link_settings_change_password_details", - "shared_link_settings_remove_expiration_details", - "shared_link_settings_remove_password_details", - "shared_link_share_details", - "shared_link_view_details", - "shared_note_opened_details", - "shmodel_disable_downloads_details", - "shmodel_enable_downloads_details", - "shmodel_group_share_details", - "showcase_access_granted_details", - "showcase_add_member_details", - "showcase_archived_details", - "showcase_created_details", - "showcase_delete_comment_details", - "showcase_edited_details", - "showcase_edit_comment_details", - "showcase_file_added_details", - "showcase_file_download_details", - "showcase_file_removed_details", - "showcase_file_view_details", - "showcase_permanently_deleted_details", - "showcase_post_comment_details", - "showcase_remove_member_details", - "showcase_renamed_details", - "showcase_request_access_details", - "showcase_resolve_comment_details", - "showcase_restored_details", - "showcase_trashed_details", - "showcase_trashed_deprecated_details", - "showcase_unresolve_comment_details", - "showcase_untrashed_details", - "showcase_untrashed_deprecated_details", - "showcase_view_details", - "sso_add_cert_details", - "sso_add_login_url_details", - "sso_add_logout_url_details", - "sso_change_cert_details", - "sso_change_login_url_details", - "sso_change_logout_url_details", - "sso_change_saml_identity_mode_details", - "sso_remove_cert_details", - "sso_remove_login_url_details", - "sso_remove_logout_url_details", - "team_folder_change_status_details", - "team_folder_create_details", - "team_folder_downgrade_details", - "team_folder_permanently_delete_details", - "team_folder_rename_details", - "team_selective_sync_settings_changed_details", - "account_capture_change_policy_details", - "admin_email_reminders_changed_details", - "allow_download_disabled_details", - "allow_download_enabled_details", - "app_permissions_changed_details", - "camera_uploads_policy_changed_details", - "capture_transcript_policy_changed_details", - "classification_change_policy_details", - "computer_backup_policy_changed_details", - "content_administration_policy_changed_details", - "data_placement_restriction_change_policy_details", - "data_placement_restriction_satisfy_policy_details", - "device_approvals_add_exception_details", - "device_approvals_change_desktop_policy_details", - "device_approvals_change_mobile_policy_details", - "device_approvals_change_overage_action_details", - "device_approvals_change_unlink_action_details", - "device_approvals_remove_exception_details", - "directory_restrictions_add_members_details", - "directory_restrictions_remove_members_details", - "dropbox_passwords_policy_changed_details", - "email_ingest_policy_changed_details", - "emm_add_exception_details", - "emm_change_policy_details", - "emm_remove_exception_details", - "extended_version_history_change_policy_details", - "external_drive_backup_policy_changed_details", - "file_comments_change_policy_details", - "file_locking_policy_changed_details", - "file_provider_migration_policy_changed_details", - "file_requests_change_policy_details", - "file_requests_emails_enabled_details", - "file_requests_emails_restricted_to_team_only_details", - "file_transfers_policy_changed_details", - "folder_link_restriction_policy_changed_details", - "google_sso_change_policy_details", - "group_user_management_change_policy_details", - "integration_policy_changed_details", - "invite_acceptance_email_policy_changed_details", - "member_requests_change_policy_details", - "member_send_invite_policy_changed_details", - "member_space_limits_add_exception_details", - "member_space_limits_change_caps_type_policy_details", - "member_space_limits_change_policy_details", - "member_space_limits_remove_exception_details", - "member_suggestions_change_policy_details", - "microsoft_office_addin_change_policy_details", - "network_control_change_policy_details", - "paper_change_deployment_policy_details", - "paper_change_member_link_policy_details", - "paper_change_member_policy_details", - "paper_change_policy_details", - "paper_default_folder_policy_changed_details", - "paper_desktop_policy_changed_details", - "paper_enabled_users_group_addition_details", - "paper_enabled_users_group_removal_details", - "password_strength_requirements_change_policy_details", - "permanent_delete_change_policy_details", - "reseller_support_change_policy_details", - "rewind_policy_changed_details", - "send_for_signature_policy_changed_details", - "sharing_change_folder_join_policy_details", - "sharing_change_link_allow_change_expiration_policy_details", - "sharing_change_link_default_expiration_policy_details", - "sharing_change_link_enforce_password_policy_details", - "sharing_change_link_policy_details", - "sharing_change_member_policy_details", - "showcase_change_download_policy_details", - "showcase_change_enabled_policy_details", - "showcase_change_external_sharing_policy_details", - "smarter_smart_sync_policy_changed_details", - "smart_sync_change_policy_details", - "smart_sync_not_opt_out_details", - "smart_sync_opt_out_details", - "sso_change_policy_details", - "team_branding_policy_changed_details", - "team_extensions_policy_changed_details", - "team_selective_sync_policy_changed_details", - "team_sharing_whitelist_subjects_changed_details", - "tfa_add_exception_details", - "tfa_change_policy_details", - "tfa_remove_exception_details", - "two_account_change_policy_details", - "viewer_info_policy_changed_details", - "watermarking_policy_changed_details", - "web_sessions_change_active_session_limit_details", - "web_sessions_change_fixed_length_policy_details", - "web_sessions_change_idle_length_policy_details", - "data_residency_migration_request_successful_details", - "data_residency_migration_request_unsuccessful_details", - "team_merge_from_details", - "team_merge_to_details", - "team_profile_add_background_details", - "team_profile_add_logo_details", - "team_profile_change_background_details", - "team_profile_change_default_language_details", - "team_profile_change_logo_details", - "team_profile_change_name_details", - "team_profile_remove_background_details", - "team_profile_remove_logo_details", - "tfa_add_backup_phone_details", - "tfa_add_security_key_details", - "tfa_change_backup_phone_details", - "tfa_change_status_details", - "tfa_remove_backup_phone_details", - "tfa_remove_security_key_details", - "tfa_reset_details", - "changed_enterprise_admin_role_details", - "changed_enterprise_connected_team_status_details", - "ended_enterprise_admin_session_details", - "ended_enterprise_admin_session_deprecated_details", - "enterprise_settings_locking_details", - "guest_admin_change_status_details", - "started_enterprise_admin_session_details", - "team_merge_request_accepted_details", - "team_merge_request_accepted_shown_to_primary_team_details", - "team_merge_request_accepted_shown_to_secondary_team_details", - "team_merge_request_auto_canceled_details", - "team_merge_request_canceled_details", - "team_merge_request_canceled_shown_to_primary_team_details", - "team_merge_request_canceled_shown_to_secondary_team_details", - "team_merge_request_expired_details", - "team_merge_request_expired_shown_to_primary_team_details", - "team_merge_request_expired_shown_to_secondary_team_details", - "team_merge_request_rejected_shown_to_primary_team_details", - "team_merge_request_rejected_shown_to_secondary_team_details", - "team_merge_request_reminder_details", - "team_merge_request_reminder_shown_to_primary_team_details", - "team_merge_request_reminder_shown_to_secondary_team_details", - "team_merge_request_revoked_details", - "team_merge_request_sent_shown_to_primary_team_details", - "team_merge_request_sent_shown_to_secondary_team_details", - "missing_details", - "other"]; - deserializer.deserialize_struct("EventDetails", VARIANTS, EnumVisitor) } } -impl ::serde::ser::Serialize for EventDetails { - fn serialize(&self, serializer: S) -> Result { - // union serializer - use serde::ser::SerializeStruct; - match self { - EventDetails::AdminAlertingAlertStateChangedDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 7)?; - s.serialize_field(".tag", "admin_alerting_alert_state_changed_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::AdminAlertingChangedAlertConfigDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 4)?; - s.serialize_field(".tag", "admin_alerting_changed_alert_config_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::AdminAlertingTriggeredAlertDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 5)?; - s.serialize_field(".tag", "admin_alerting_triggered_alert_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::RansomwareRestoreProcessCompletedDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 4)?; - s.serialize_field(".tag", "ransomware_restore_process_completed_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::RansomwareRestoreProcessStartedDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "ransomware_restore_process_started_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::AppBlockedByPermissionsDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "app_blocked_by_permissions_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::AppLinkTeamDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "app_link_team_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::AppLinkUserDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "app_link_user_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::AppUnlinkTeamDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "app_unlink_team_details")?; - x.internal_serialize::(&mut s)?; - s.end() +const DEVICE_MANAGEMENT_DISABLED_TYPE_FIELDS: &[&str] = &["description"]; +impl DeviceManagementDisabledType { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_description = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); + } + field_description = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } } - EventDetails::AppUnlinkUserDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "app_unlink_user_details")?; - x.internal_serialize::(&mut s)?; - s.end() + } + if optional && nothing { + return Ok(None); + } + let result = DeviceManagementDisabledType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("description", &self.description)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for DeviceManagementDisabledType { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = DeviceManagementDisabledType; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a DeviceManagementDisabledType struct") } - EventDetails::IntegrationConnectedDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "integration_connected_details")?; - x.internal_serialize::(&mut s)?; - s.end() + fn visit_map>(self, map: V) -> Result { + DeviceManagementDisabledType::internal_deserialize(map) } - EventDetails::IntegrationDisconnectedDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "integration_disconnected_details")?; - x.internal_serialize::(&mut s)?; - s.end() + } + deserializer.deserialize_struct("DeviceManagementDisabledType", DEVICE_MANAGEMENT_DISABLED_TYPE_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for DeviceManagementDisabledType { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("DeviceManagementDisabledType", 1)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +/// Enabled device management. +#[derive(Debug, Clone, PartialEq, Eq, Default)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct DeviceManagementEnabledDetails { +} + +const DEVICE_MANAGEMENT_ENABLED_DETAILS_FIELDS: &[&str] = &[]; +impl DeviceManagementEnabledDetails { + // no _opt deserializer + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + ) -> Result { + // ignore any fields found; none are presently recognized + crate::eat_json_fields(&mut map)?; + Ok(DeviceManagementEnabledDetails {}) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for DeviceManagementEnabledDetails { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = DeviceManagementEnabledDetails; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a DeviceManagementEnabledDetails struct") } - EventDetails::FileAddCommentDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "file_add_comment_details")?; - x.internal_serialize::(&mut s)?; - s.end() + fn visit_map>(self, map: V) -> Result { + DeviceManagementEnabledDetails::internal_deserialize(map) } - EventDetails::FileChangeCommentSubscriptionDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "file_change_comment_subscription_details")?; - x.internal_serialize::(&mut s)?; - s.end() + } + deserializer.deserialize_struct("DeviceManagementEnabledDetails", DEVICE_MANAGEMENT_ENABLED_DETAILS_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for DeviceManagementEnabledDetails { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + serializer.serialize_struct("DeviceManagementEnabledDetails", 0)?.end() + } +} + +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct DeviceManagementEnabledType { + pub description: String, +} + +impl DeviceManagementEnabledType { + pub fn new(description: String) -> Self { + DeviceManagementEnabledType { + description, + } + } +} + +const DEVICE_MANAGEMENT_ENABLED_TYPE_FIELDS: &[&str] = &["description"]; +impl DeviceManagementEnabledType { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_description = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); + } + field_description = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } } - EventDetails::FileDeleteCommentDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "file_delete_comment_details")?; - x.internal_serialize::(&mut s)?; - s.end() + } + if optional && nothing { + return Ok(None); + } + let result = DeviceManagementEnabledType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("description", &self.description)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for DeviceManagementEnabledType { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = DeviceManagementEnabledType; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a DeviceManagementEnabledType struct") } - EventDetails::FileEditCommentDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "file_edit_comment_details")?; - x.internal_serialize::(&mut s)?; - s.end() + fn visit_map>(self, map: V) -> Result { + DeviceManagementEnabledType::internal_deserialize(map) } - EventDetails::FileLikeCommentDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "file_like_comment_details")?; - x.internal_serialize::(&mut s)?; - s.end() + } + deserializer.deserialize_struct("DeviceManagementEnabledType", DEVICE_MANAGEMENT_ENABLED_TYPE_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for DeviceManagementEnabledType { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("DeviceManagementEnabledType", 1)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +/// Device's session logged information. +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // variants may be added in the future +pub enum DeviceSessionLogInfo { + DesktopDeviceSession(DesktopDeviceSessionLogInfo), + LegacyDeviceSession(LegacyDeviceSessionLogInfo), + MobileDeviceSession(MobileDeviceSessionLogInfo), + WebDeviceSession(WebDeviceSessionLogInfo), + /// Catch-all used for unrecognized values returned from the server. Encountering this value + /// typically indicates that this SDK version is out of date. + Other, +} + +impl<'de> ::serde::de::Deserialize<'de> for DeviceSessionLogInfo { + fn deserialize>(deserializer: D) -> Result { + // polymorphic struct deserializer + use serde::de::{self, MapAccess, Visitor}; + struct EnumVisitor; + impl<'de> Visitor<'de> for EnumVisitor { + type Value = DeviceSessionLogInfo; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a DeviceSessionLogInfo structure") } - EventDetails::FileResolveCommentDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "file_resolve_comment_details")?; - x.internal_serialize::(&mut s)?; - s.end() + fn visit_map>(self, mut map: V) -> Result { + let tag = match map.next_key()? { + Some(".tag") => map.next_value()?, + _ => return Err(de::Error::missing_field(".tag")) + }; + match tag { + "desktop_device_session" => Ok(DeviceSessionLogInfo::DesktopDeviceSession(DesktopDeviceSessionLogInfo::internal_deserialize(map)?)), + "legacy_device_session" => Ok(DeviceSessionLogInfo::LegacyDeviceSession(LegacyDeviceSessionLogInfo::internal_deserialize(map)?)), + "mobile_device_session" => Ok(DeviceSessionLogInfo::MobileDeviceSession(MobileDeviceSessionLogInfo::internal_deserialize(map)?)), + "web_device_session" => Ok(DeviceSessionLogInfo::WebDeviceSession(WebDeviceSessionLogInfo::internal_deserialize(map)?)), + _ => { + crate::eat_json_fields(&mut map)?; + Ok(DeviceSessionLogInfo::Other) + } + } } - EventDetails::FileUnlikeCommentDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "file_unlike_comment_details")?; + } + const VARIANTS: &[&str] = &["desktop_device_session", + "legacy_device_session", + "mobile_device_session", + "web_device_session"]; + deserializer.deserialize_struct("DeviceSessionLogInfo", VARIANTS, EnumVisitor) + } +} + +impl ::serde::ser::Serialize for DeviceSessionLogInfo { + fn serialize(&self, serializer: S) -> Result { + // polymorphic struct serializer + use serde::ser::SerializeStruct; + match self { + DeviceSessionLogInfo::DesktopDeviceSession(x) => { + let mut s = serializer.serialize_struct("DeviceSessionLogInfo", 10)?; + s.serialize_field(".tag", "desktop_device_session")?; x.internal_serialize::(&mut s)?; s.end() } - EventDetails::FileUnresolveCommentDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "file_unresolve_comment_details")?; + DeviceSessionLogInfo::LegacyDeviceSession(x) => { + let mut s = serializer.serialize_struct("DeviceSessionLogInfo", 13)?; + s.serialize_field(".tag", "legacy_device_session")?; x.internal_serialize::(&mut s)?; s.end() } - EventDetails::GovernancePolicyAddFoldersDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 5)?; - s.serialize_field(".tag", "governance_policy_add_folders_details")?; + DeviceSessionLogInfo::MobileDeviceSession(x) => { + let mut s = serializer.serialize_struct("DeviceSessionLogInfo", 10)?; + s.serialize_field(".tag", "mobile_device_session")?; x.internal_serialize::(&mut s)?; s.end() } - EventDetails::GovernancePolicyAddFolderFailedDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 6)?; - s.serialize_field(".tag", "governance_policy_add_folder_failed_details")?; + DeviceSessionLogInfo::WebDeviceSession(x) => { + let mut s = serializer.serialize_struct("DeviceSessionLogInfo", 8)?; + s.serialize_field(".tag", "web_device_session")?; x.internal_serialize::(&mut s)?; s.end() } - EventDetails::GovernancePolicyContentDisposedDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 5)?; - s.serialize_field(".tag", "governance_policy_content_disposed_details")?; - x.internal_serialize::(&mut s)?; - s.end() + DeviceSessionLogInfo::Other => Err(::serde::ser::Error::custom("cannot serialize unknown variant")) + } + } +} + +/// Enabled/disabled backup for computer. +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct DeviceSyncBackupStatusChangedDetails { + /// Device's session logged information. + pub desktop_device_session_info: DesktopDeviceSessionLogInfo, + /// Previous status of computer backup on the device. + pub previous_value: BackupStatus, + /// Next status of computer backup on the device. + pub new_value: BackupStatus, +} + +impl DeviceSyncBackupStatusChangedDetails { + pub fn new( + desktop_device_session_info: DesktopDeviceSessionLogInfo, + previous_value: BackupStatus, + new_value: BackupStatus, + ) -> Self { + DeviceSyncBackupStatusChangedDetails { + desktop_device_session_info, + previous_value, + new_value, + } + } +} + +const DEVICE_SYNC_BACKUP_STATUS_CHANGED_DETAILS_FIELDS: &[&str] = &["desktop_device_session_info", + "previous_value", + "new_value"]; +impl DeviceSyncBackupStatusChangedDetails { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_desktop_device_session_info = None; + let mut field_previous_value = None; + let mut field_new_value = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "desktop_device_session_info" => { + if field_desktop_device_session_info.is_some() { + return Err(::serde::de::Error::duplicate_field("desktop_device_session_info")); + } + field_desktop_device_session_info = Some(map.next_value()?); + } + "previous_value" => { + if field_previous_value.is_some() { + return Err(::serde::de::Error::duplicate_field("previous_value")); + } + field_previous_value = Some(map.next_value()?); + } + "new_value" => { + if field_new_value.is_some() { + return Err(::serde::de::Error::duplicate_field("new_value")); + } + field_new_value = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } } - EventDetails::GovernancePolicyCreateDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 6)?; - s.serialize_field(".tag", "governance_policy_create_details")?; - x.internal_serialize::(&mut s)?; - s.end() + } + if optional && nothing { + return Ok(None); + } + let result = DeviceSyncBackupStatusChangedDetails { + desktop_device_session_info: field_desktop_device_session_info.ok_or_else(|| ::serde::de::Error::missing_field("desktop_device_session_info"))?, + previous_value: field_previous_value.ok_or_else(|| ::serde::de::Error::missing_field("previous_value"))?, + new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("desktop_device_session_info", &self.desktop_device_session_info)?; + s.serialize_field("previous_value", &self.previous_value)?; + s.serialize_field("new_value", &self.new_value)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for DeviceSyncBackupStatusChangedDetails { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = DeviceSyncBackupStatusChangedDetails; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a DeviceSyncBackupStatusChangedDetails struct") } - EventDetails::GovernancePolicyDeleteDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 4)?; - s.serialize_field(".tag", "governance_policy_delete_details")?; - x.internal_serialize::(&mut s)?; - s.end() + fn visit_map>(self, map: V) -> Result { + DeviceSyncBackupStatusChangedDetails::internal_deserialize(map) } - EventDetails::GovernancePolicyEditDetailsDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 7)?; - s.serialize_field(".tag", "governance_policy_edit_details_details")?; - x.internal_serialize::(&mut s)?; - s.end() + } + deserializer.deserialize_struct("DeviceSyncBackupStatusChangedDetails", DEVICE_SYNC_BACKUP_STATUS_CHANGED_DETAILS_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for DeviceSyncBackupStatusChangedDetails { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("DeviceSyncBackupStatusChangedDetails", 3)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct DeviceSyncBackupStatusChangedType { + pub description: String, +} + +impl DeviceSyncBackupStatusChangedType { + pub fn new(description: String) -> Self { + DeviceSyncBackupStatusChangedType { + description, + } + } +} + +const DEVICE_SYNC_BACKUP_STATUS_CHANGED_TYPE_FIELDS: &[&str] = &["description"]; +impl DeviceSyncBackupStatusChangedType { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_description = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); + } + field_description = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } } - EventDetails::GovernancePolicyEditDurationDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 6)?; - s.serialize_field(".tag", "governance_policy_edit_duration_details")?; - x.internal_serialize::(&mut s)?; - s.end() + } + if optional && nothing { + return Ok(None); + } + let result = DeviceSyncBackupStatusChangedType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("description", &self.description)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for DeviceSyncBackupStatusChangedType { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = DeviceSyncBackupStatusChangedType; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a DeviceSyncBackupStatusChangedType struct") } - EventDetails::GovernancePolicyExportCreatedDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 5)?; - s.serialize_field(".tag", "governance_policy_export_created_details")?; - x.internal_serialize::(&mut s)?; - s.end() + fn visit_map>(self, map: V) -> Result { + DeviceSyncBackupStatusChangedType::internal_deserialize(map) } - EventDetails::GovernancePolicyExportRemovedDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 5)?; - s.serialize_field(".tag", "governance_policy_export_removed_details")?; - x.internal_serialize::(&mut s)?; - s.end() + } + deserializer.deserialize_struct("DeviceSyncBackupStatusChangedType", DEVICE_SYNC_BACKUP_STATUS_CHANGED_TYPE_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for DeviceSyncBackupStatusChangedType { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("DeviceSyncBackupStatusChangedType", 1)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // variants may be added in the future +pub enum DeviceType { + Desktop, + Mobile, + /// Catch-all used for unrecognized values returned from the server. Encountering this value + /// typically indicates that this SDK version is out of date. + Other, +} + +impl<'de> ::serde::de::Deserialize<'de> for DeviceType { + fn deserialize>(deserializer: D) -> Result { + // union deserializer + use serde::de::{self, MapAccess, Visitor}; + struct EnumVisitor; + impl<'de> Visitor<'de> for EnumVisitor { + type Value = DeviceType; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a DeviceType structure") } - EventDetails::GovernancePolicyRemoveFoldersDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 6)?; - s.serialize_field(".tag", "governance_policy_remove_folders_details")?; - x.internal_serialize::(&mut s)?; - s.end() + fn visit_map>(self, mut map: V) -> Result { + let tag: &str = match map.next_key()? { + Some(".tag") => map.next_value()?, + _ => return Err(de::Error::missing_field(".tag")) + }; + let value = match tag { + "desktop" => DeviceType::Desktop, + "mobile" => DeviceType::Mobile, + _ => DeviceType::Other, + }; + crate::eat_json_fields(&mut map)?; + Ok(value) } - EventDetails::GovernancePolicyReportCreatedDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 4)?; - s.serialize_field(".tag", "governance_policy_report_created_details")?; - x.internal_serialize::(&mut s)?; + } + const VARIANTS: &[&str] = &["desktop", + "mobile", + "other"]; + deserializer.deserialize_struct("DeviceType", VARIANTS, EnumVisitor) + } +} + +impl ::serde::ser::Serialize for DeviceType { + fn serialize(&self, serializer: S) -> Result { + // union serializer + use serde::ser::SerializeStruct; + match self { + DeviceType::Desktop => { + // unit + let mut s = serializer.serialize_struct("DeviceType", 1)?; + s.serialize_field(".tag", "desktop")?; s.end() } - EventDetails::GovernancePolicyZipPartDownloadedDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 6)?; - s.serialize_field(".tag", "governance_policy_zip_part_downloaded_details")?; - x.internal_serialize::(&mut s)?; + DeviceType::Mobile => { + // unit + let mut s = serializer.serialize_struct("DeviceType", 1)?; + s.serialize_field(".tag", "mobile")?; s.end() } - EventDetails::LegalHoldsActivateAHoldDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 5)?; - s.serialize_field(".tag", "legal_holds_activate_a_hold_details")?; - x.internal_serialize::(&mut s)?; - s.end() + DeviceType::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) + } + } +} + +/// Disconnected device. +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct DeviceUnlinkDetails { + /// True if the user requested to delete data after device unlink, false otherwise. + pub delete_data: bool, + /// Session unique id. + pub session_info: Option, + /// The device name. Might be missing due to historical data gap. + pub display_name: Option, +} + +impl DeviceUnlinkDetails { + pub fn new(delete_data: bool) -> Self { + DeviceUnlinkDetails { + delete_data, + session_info: None, + display_name: None, + } + } + + pub fn with_session_info(mut self, value: SessionLogInfo) -> Self { + self.session_info = Some(value); + self + } + + pub fn with_display_name(mut self, value: String) -> Self { + self.display_name = Some(value); + self + } +} + +const DEVICE_UNLINK_DETAILS_FIELDS: &[&str] = &["delete_data", + "session_info", + "display_name"]; +impl DeviceUnlinkDetails { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_delete_data = None; + let mut field_session_info = None; + let mut field_display_name = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "delete_data" => { + if field_delete_data.is_some() { + return Err(::serde::de::Error::duplicate_field("delete_data")); + } + field_delete_data = Some(map.next_value()?); + } + "session_info" => { + if field_session_info.is_some() { + return Err(::serde::de::Error::duplicate_field("session_info")); + } + field_session_info = Some(map.next_value()?); + } + "display_name" => { + if field_display_name.is_some() { + return Err(::serde::de::Error::duplicate_field("display_name")); + } + field_display_name = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } } - EventDetails::LegalHoldsAddMembersDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "legal_holds_add_members_details")?; - x.internal_serialize::(&mut s)?; - s.end() + } + if optional && nothing { + return Ok(None); + } + let result = DeviceUnlinkDetails { + delete_data: field_delete_data.ok_or_else(|| ::serde::de::Error::missing_field("delete_data"))?, + session_info: field_session_info.and_then(Option::flatten), + display_name: field_display_name.and_then(Option::flatten), + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("delete_data", &self.delete_data)?; + if let Some(val) = &self.session_info { + s.serialize_field("session_info", val)?; + } + if let Some(val) = &self.display_name { + s.serialize_field("display_name", val)?; + } + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for DeviceUnlinkDetails { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = DeviceUnlinkDetails; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a DeviceUnlinkDetails struct") } - EventDetails::LegalHoldsChangeHoldDetailsDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 5)?; - s.serialize_field(".tag", "legal_holds_change_hold_details_details")?; - x.internal_serialize::(&mut s)?; - s.end() + fn visit_map>(self, map: V) -> Result { + DeviceUnlinkDetails::internal_deserialize(map) } - EventDetails::LegalHoldsChangeHoldNameDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 4)?; - s.serialize_field(".tag", "legal_holds_change_hold_name_details")?; - x.internal_serialize::(&mut s)?; - s.end() + } + deserializer.deserialize_struct("DeviceUnlinkDetails", DEVICE_UNLINK_DETAILS_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for DeviceUnlinkDetails { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("DeviceUnlinkDetails", 3)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // variants may be added in the future +pub enum DeviceUnlinkPolicy { + Keep, + Remove, + /// Catch-all used for unrecognized values returned from the server. Encountering this value + /// typically indicates that this SDK version is out of date. + Other, +} + +impl<'de> ::serde::de::Deserialize<'de> for DeviceUnlinkPolicy { + fn deserialize>(deserializer: D) -> Result { + // union deserializer + use serde::de::{self, MapAccess, Visitor}; + struct EnumVisitor; + impl<'de> Visitor<'de> for EnumVisitor { + type Value = DeviceUnlinkPolicy; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a DeviceUnlinkPolicy structure") } - EventDetails::LegalHoldsExportAHoldDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 4)?; - s.serialize_field(".tag", "legal_holds_export_a_hold_details")?; - x.internal_serialize::(&mut s)?; - s.end() + fn visit_map>(self, mut map: V) -> Result { + let tag: &str = match map.next_key()? { + Some(".tag") => map.next_value()?, + _ => return Err(de::Error::missing_field(".tag")) + }; + let value = match tag { + "keep" => DeviceUnlinkPolicy::Keep, + "remove" => DeviceUnlinkPolicy::Remove, + _ => DeviceUnlinkPolicy::Other, + }; + crate::eat_json_fields(&mut map)?; + Ok(value) } - EventDetails::LegalHoldsExportCancelledDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 4)?; - s.serialize_field(".tag", "legal_holds_export_cancelled_details")?; - x.internal_serialize::(&mut s)?; + } + const VARIANTS: &[&str] = &["keep", + "remove", + "other"]; + deserializer.deserialize_struct("DeviceUnlinkPolicy", VARIANTS, EnumVisitor) + } +} + +impl ::serde::ser::Serialize for DeviceUnlinkPolicy { + fn serialize(&self, serializer: S) -> Result { + // union serializer + use serde::ser::SerializeStruct; + match self { + DeviceUnlinkPolicy::Keep => { + // unit + let mut s = serializer.serialize_struct("DeviceUnlinkPolicy", 1)?; + s.serialize_field(".tag", "keep")?; s.end() } - EventDetails::LegalHoldsExportDownloadedDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 6)?; - s.serialize_field(".tag", "legal_holds_export_downloaded_details")?; - x.internal_serialize::(&mut s)?; + DeviceUnlinkPolicy::Remove => { + // unit + let mut s = serializer.serialize_struct("DeviceUnlinkPolicy", 1)?; + s.serialize_field(".tag", "remove")?; s.end() } - EventDetails::LegalHoldsExportRemovedDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 4)?; - s.serialize_field(".tag", "legal_holds_export_removed_details")?; - x.internal_serialize::(&mut s)?; - s.end() + DeviceUnlinkPolicy::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) + } + } +} + +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct DeviceUnlinkType { + pub description: String, +} + +impl DeviceUnlinkType { + pub fn new(description: String) -> Self { + DeviceUnlinkType { + description, + } + } +} + +const DEVICE_UNLINK_TYPE_FIELDS: &[&str] = &["description"]; +impl DeviceUnlinkType { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_description = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); + } + field_description = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } } - EventDetails::LegalHoldsReleaseAHoldDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "legal_holds_release_a_hold_details")?; - x.internal_serialize::(&mut s)?; - s.end() + } + if optional && nothing { + return Ok(None); + } + let result = DeviceUnlinkType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("description", &self.description)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for DeviceUnlinkType { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = DeviceUnlinkType; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a DeviceUnlinkType struct") } - EventDetails::LegalHoldsRemoveMembersDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "legal_holds_remove_members_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::LegalHoldsReportAHoldDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "legal_holds_report_a_hold_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::DeviceChangeIpDesktopDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "device_change_ip_desktop_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::DeviceChangeIpMobileDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "device_change_ip_mobile_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::DeviceChangeIpWebDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "device_change_ip_web_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::DeviceDeleteOnUnlinkFailDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 4)?; - s.serialize_field(".tag", "device_delete_on_unlink_fail_details")?; - x.internal_serialize::(&mut s)?; - s.end() + fn visit_map>(self, map: V) -> Result { + DeviceUnlinkType::internal_deserialize(map) } - EventDetails::DeviceDeleteOnUnlinkSuccessDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "device_delete_on_unlink_success_details")?; - x.internal_serialize::(&mut s)?; - s.end() + } + deserializer.deserialize_struct("DeviceUnlinkType", DEVICE_UNLINK_TYPE_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for DeviceUnlinkType { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("DeviceUnlinkType", 1)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +/// Added members to directory restrictions list. +#[derive(Debug, Clone, PartialEq, Eq, Default)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct DirectoryRestrictionsAddMembersDetails { +} + +const DIRECTORY_RESTRICTIONS_ADD_MEMBERS_DETAILS_FIELDS: &[&str] = &[]; +impl DirectoryRestrictionsAddMembersDetails { + // no _opt deserializer + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + ) -> Result { + // ignore any fields found; none are presently recognized + crate::eat_json_fields(&mut map)?; + Ok(DirectoryRestrictionsAddMembersDetails {}) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for DirectoryRestrictionsAddMembersDetails { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = DirectoryRestrictionsAddMembersDetails; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a DirectoryRestrictionsAddMembersDetails struct") } - EventDetails::DeviceLinkFailDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "device_link_fail_details")?; - x.internal_serialize::(&mut s)?; - s.end() + fn visit_map>(self, map: V) -> Result { + DirectoryRestrictionsAddMembersDetails::internal_deserialize(map) } - EventDetails::DeviceLinkSuccessDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "device_link_success_details")?; - x.internal_serialize::(&mut s)?; - s.end() + } + deserializer.deserialize_struct("DirectoryRestrictionsAddMembersDetails", DIRECTORY_RESTRICTIONS_ADD_MEMBERS_DETAILS_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for DirectoryRestrictionsAddMembersDetails { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + serializer.serialize_struct("DirectoryRestrictionsAddMembersDetails", 0)?.end() + } +} + +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct DirectoryRestrictionsAddMembersType { + pub description: String, +} + +impl DirectoryRestrictionsAddMembersType { + pub fn new(description: String) -> Self { + DirectoryRestrictionsAddMembersType { + description, + } + } +} + +const DIRECTORY_RESTRICTIONS_ADD_MEMBERS_TYPE_FIELDS: &[&str] = &["description"]; +impl DirectoryRestrictionsAddMembersType { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_description = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); + } + field_description = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } } - EventDetails::DeviceManagementDisabledDetails(_) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 1)?; - s.serialize_field(".tag", "device_management_disabled_details")?; - s.end() + } + if optional && nothing { + return Ok(None); + } + let result = DirectoryRestrictionsAddMembersType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("description", &self.description)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for DirectoryRestrictionsAddMembersType { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = DirectoryRestrictionsAddMembersType; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a DirectoryRestrictionsAddMembersType struct") } - EventDetails::DeviceManagementEnabledDetails(_) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 1)?; - s.serialize_field(".tag", "device_management_enabled_details")?; - s.end() + fn visit_map>(self, map: V) -> Result { + DirectoryRestrictionsAddMembersType::internal_deserialize(map) } - EventDetails::DeviceSyncBackupStatusChangedDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 4)?; - s.serialize_field(".tag", "device_sync_backup_status_changed_details")?; - x.internal_serialize::(&mut s)?; - s.end() + } + deserializer.deserialize_struct("DirectoryRestrictionsAddMembersType", DIRECTORY_RESTRICTIONS_ADD_MEMBERS_TYPE_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for DirectoryRestrictionsAddMembersType { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("DirectoryRestrictionsAddMembersType", 1)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +/// Removed members from directory restrictions list. +#[derive(Debug, Clone, PartialEq, Eq, Default)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct DirectoryRestrictionsRemoveMembersDetails { +} + +const DIRECTORY_RESTRICTIONS_REMOVE_MEMBERS_DETAILS_FIELDS: &[&str] = &[]; +impl DirectoryRestrictionsRemoveMembersDetails { + // no _opt deserializer + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + ) -> Result { + // ignore any fields found; none are presently recognized + crate::eat_json_fields(&mut map)?; + Ok(DirectoryRestrictionsRemoveMembersDetails {}) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for DirectoryRestrictionsRemoveMembersDetails { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = DirectoryRestrictionsRemoveMembersDetails; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a DirectoryRestrictionsRemoveMembersDetails struct") } - EventDetails::DeviceUnlinkDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 4)?; - s.serialize_field(".tag", "device_unlink_details")?; - x.internal_serialize::(&mut s)?; - s.end() + fn visit_map>(self, map: V) -> Result { + DirectoryRestrictionsRemoveMembersDetails::internal_deserialize(map) } - EventDetails::DropboxPasswordsExportedDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "dropbox_passwords_exported_details")?; - x.internal_serialize::(&mut s)?; - s.end() + } + deserializer.deserialize_struct("DirectoryRestrictionsRemoveMembersDetails", DIRECTORY_RESTRICTIONS_REMOVE_MEMBERS_DETAILS_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for DirectoryRestrictionsRemoveMembersDetails { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + serializer.serialize_struct("DirectoryRestrictionsRemoveMembersDetails", 0)?.end() + } +} + +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct DirectoryRestrictionsRemoveMembersType { + pub description: String, +} + +impl DirectoryRestrictionsRemoveMembersType { + pub fn new(description: String) -> Self { + DirectoryRestrictionsRemoveMembersType { + description, + } + } +} + +const DIRECTORY_RESTRICTIONS_REMOVE_MEMBERS_TYPE_FIELDS: &[&str] = &["description"]; +impl DirectoryRestrictionsRemoveMembersType { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_description = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); + } + field_description = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } } - EventDetails::DropboxPasswordsNewDeviceEnrolledDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "dropbox_passwords_new_device_enrolled_details")?; - x.internal_serialize::(&mut s)?; - s.end() + } + if optional && nothing { + return Ok(None); + } + let result = DirectoryRestrictionsRemoveMembersType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("description", &self.description)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for DirectoryRestrictionsRemoveMembersType { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = DirectoryRestrictionsRemoveMembersType; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a DirectoryRestrictionsRemoveMembersType struct") } - EventDetails::EmmRefreshAuthTokenDetails(_) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 1)?; - s.serialize_field(".tag", "emm_refresh_auth_token_details")?; - s.end() + fn visit_map>(self, map: V) -> Result { + DirectoryRestrictionsRemoveMembersType::internal_deserialize(map) } - EventDetails::ExternalDriveBackupEligibilityStatusCheckedDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 4)?; - s.serialize_field(".tag", "external_drive_backup_eligibility_status_checked_details")?; - x.internal_serialize::(&mut s)?; - s.end() + } + deserializer.deserialize_struct("DirectoryRestrictionsRemoveMembersType", DIRECTORY_RESTRICTIONS_REMOVE_MEMBERS_TYPE_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for DirectoryRestrictionsRemoveMembersType { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("DirectoryRestrictionsRemoveMembersType", 1)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +/// Disabled domain invites. +#[derive(Debug, Clone, PartialEq, Eq, Default)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct DisabledDomainInvitesDetails { +} + +const DISABLED_DOMAIN_INVITES_DETAILS_FIELDS: &[&str] = &[]; +impl DisabledDomainInvitesDetails { + // no _opt deserializer + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + ) -> Result { + // ignore any fields found; none are presently recognized + crate::eat_json_fields(&mut map)?; + Ok(DisabledDomainInvitesDetails {}) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for DisabledDomainInvitesDetails { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = DisabledDomainInvitesDetails; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a DisabledDomainInvitesDetails struct") } - EventDetails::ExternalDriveBackupStatusChangedDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 4)?; - s.serialize_field(".tag", "external_drive_backup_status_changed_details")?; - x.internal_serialize::(&mut s)?; - s.end() + fn visit_map>(self, map: V) -> Result { + DisabledDomainInvitesDetails::internal_deserialize(map) } - EventDetails::AccountCaptureChangeAvailabilityDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "account_capture_change_availability_details")?; - x.internal_serialize::(&mut s)?; - s.end() + } + deserializer.deserialize_struct("DisabledDomainInvitesDetails", DISABLED_DOMAIN_INVITES_DETAILS_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for DisabledDomainInvitesDetails { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + serializer.serialize_struct("DisabledDomainInvitesDetails", 0)?.end() + } +} + +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct DisabledDomainInvitesType { + pub description: String, +} + +impl DisabledDomainInvitesType { + pub fn new(description: String) -> Self { + DisabledDomainInvitesType { + description, + } + } +} + +const DISABLED_DOMAIN_INVITES_TYPE_FIELDS: &[&str] = &["description"]; +impl DisabledDomainInvitesType { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_description = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); + } + field_description = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } } - EventDetails::AccountCaptureMigrateAccountDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "account_capture_migrate_account_details")?; - x.internal_serialize::(&mut s)?; - s.end() + } + if optional && nothing { + return Ok(None); + } + let result = DisabledDomainInvitesType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("description", &self.description)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for DisabledDomainInvitesType { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = DisabledDomainInvitesType; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a DisabledDomainInvitesType struct") } - EventDetails::AccountCaptureNotificationEmailsSentDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "account_capture_notification_emails_sent_details")?; - x.internal_serialize::(&mut s)?; - s.end() + fn visit_map>(self, map: V) -> Result { + DisabledDomainInvitesType::internal_deserialize(map) } - EventDetails::AccountCaptureRelinquishAccountDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "account_capture_relinquish_account_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::DisabledDomainInvitesDetails(_) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 1)?; - s.serialize_field(".tag", "disabled_domain_invites_details")?; - s.end() + } + deserializer.deserialize_struct("DisabledDomainInvitesType", DISABLED_DOMAIN_INVITES_TYPE_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for DisabledDomainInvitesType { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("DisabledDomainInvitesType", 1)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // variants may be added in the future +pub enum DispositionActionType { + AutomaticDelete, + AutomaticPermanentlyDelete, + /// Catch-all used for unrecognized values returned from the server. Encountering this value + /// typically indicates that this SDK version is out of date. + Other, +} + +impl<'de> ::serde::de::Deserialize<'de> for DispositionActionType { + fn deserialize>(deserializer: D) -> Result { + // union deserializer + use serde::de::{self, MapAccess, Visitor}; + struct EnumVisitor; + impl<'de> Visitor<'de> for EnumVisitor { + type Value = DispositionActionType; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a DispositionActionType structure") } - EventDetails::DomainInvitesApproveRequestToJoinTeamDetails(_) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 1)?; - s.serialize_field(".tag", "domain_invites_approve_request_to_join_team_details")?; - s.end() + fn visit_map>(self, mut map: V) -> Result { + let tag: &str = match map.next_key()? { + Some(".tag") => map.next_value()?, + _ => return Err(de::Error::missing_field(".tag")) + }; + let value = match tag { + "automatic_delete" => DispositionActionType::AutomaticDelete, + "automatic_permanently_delete" => DispositionActionType::AutomaticPermanentlyDelete, + _ => DispositionActionType::Other, + }; + crate::eat_json_fields(&mut map)?; + Ok(value) } - EventDetails::DomainInvitesDeclineRequestToJoinTeamDetails(_) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 1)?; - s.serialize_field(".tag", "domain_invites_decline_request_to_join_team_details")?; + } + const VARIANTS: &[&str] = &["automatic_delete", + "automatic_permanently_delete", + "other"]; + deserializer.deserialize_struct("DispositionActionType", VARIANTS, EnumVisitor) + } +} + +impl ::serde::ser::Serialize for DispositionActionType { + fn serialize(&self, serializer: S) -> Result { + // union serializer + use serde::ser::SerializeStruct; + match self { + DispositionActionType::AutomaticDelete => { + // unit + let mut s = serializer.serialize_struct("DispositionActionType", 1)?; + s.serialize_field(".tag", "automatic_delete")?; s.end() } - EventDetails::DomainInvitesEmailExistingUsersDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "domain_invites_email_existing_users_details")?; - x.internal_serialize::(&mut s)?; + DispositionActionType::AutomaticPermanentlyDelete => { + // unit + let mut s = serializer.serialize_struct("DispositionActionType", 1)?; + s.serialize_field(".tag", "automatic_permanently_delete")?; s.end() } - EventDetails::DomainInvitesRequestToJoinTeamDetails(_) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 1)?; - s.serialize_field(".tag", "domain_invites_request_to_join_team_details")?; - s.end() + DispositionActionType::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) + } + } +} + +/// Approved user's request to join team. +#[derive(Debug, Clone, PartialEq, Eq, Default)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct DomainInvitesApproveRequestToJoinTeamDetails { +} + +const DOMAIN_INVITES_APPROVE_REQUEST_TO_JOIN_TEAM_DETAILS_FIELDS: &[&str] = &[]; +impl DomainInvitesApproveRequestToJoinTeamDetails { + // no _opt deserializer + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + ) -> Result { + // ignore any fields found; none are presently recognized + crate::eat_json_fields(&mut map)?; + Ok(DomainInvitesApproveRequestToJoinTeamDetails {}) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for DomainInvitesApproveRequestToJoinTeamDetails { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = DomainInvitesApproveRequestToJoinTeamDetails; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a DomainInvitesApproveRequestToJoinTeamDetails struct") } - EventDetails::DomainInvitesSetInviteNewUserPrefToNoDetails(_) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 1)?; - s.serialize_field(".tag", "domain_invites_set_invite_new_user_pref_to_no_details")?; - s.end() + fn visit_map>(self, map: V) -> Result { + DomainInvitesApproveRequestToJoinTeamDetails::internal_deserialize(map) } - EventDetails::DomainInvitesSetInviteNewUserPrefToYesDetails(_) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 1)?; - s.serialize_field(".tag", "domain_invites_set_invite_new_user_pref_to_yes_details")?; - s.end() + } + deserializer.deserialize_struct("DomainInvitesApproveRequestToJoinTeamDetails", DOMAIN_INVITES_APPROVE_REQUEST_TO_JOIN_TEAM_DETAILS_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for DomainInvitesApproveRequestToJoinTeamDetails { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + serializer.serialize_struct("DomainInvitesApproveRequestToJoinTeamDetails", 0)?.end() + } +} + +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct DomainInvitesApproveRequestToJoinTeamType { + pub description: String, +} + +impl DomainInvitesApproveRequestToJoinTeamType { + pub fn new(description: String) -> Self { + DomainInvitesApproveRequestToJoinTeamType { + description, + } + } +} + +const DOMAIN_INVITES_APPROVE_REQUEST_TO_JOIN_TEAM_TYPE_FIELDS: &[&str] = &["description"]; +impl DomainInvitesApproveRequestToJoinTeamType { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_description = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); + } + field_description = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } } - EventDetails::DomainVerificationAddDomainFailDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "domain_verification_add_domain_fail_details")?; - x.internal_serialize::(&mut s)?; - s.end() + } + if optional && nothing { + return Ok(None); + } + let result = DomainInvitesApproveRequestToJoinTeamType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("description", &self.description)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for DomainInvitesApproveRequestToJoinTeamType { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = DomainInvitesApproveRequestToJoinTeamType; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a DomainInvitesApproveRequestToJoinTeamType struct") } - EventDetails::DomainVerificationAddDomainSuccessDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "domain_verification_add_domain_success_details")?; - x.internal_serialize::(&mut s)?; - s.end() + fn visit_map>(self, map: V) -> Result { + DomainInvitesApproveRequestToJoinTeamType::internal_deserialize(map) } - EventDetails::DomainVerificationRemoveDomainDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "domain_verification_remove_domain_details")?; - x.internal_serialize::(&mut s)?; - s.end() + } + deserializer.deserialize_struct("DomainInvitesApproveRequestToJoinTeamType", DOMAIN_INVITES_APPROVE_REQUEST_TO_JOIN_TEAM_TYPE_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for DomainInvitesApproveRequestToJoinTeamType { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("DomainInvitesApproveRequestToJoinTeamType", 1)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +/// Declined user's request to join team. +#[derive(Debug, Clone, PartialEq, Eq, Default)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct DomainInvitesDeclineRequestToJoinTeamDetails { +} + +const DOMAIN_INVITES_DECLINE_REQUEST_TO_JOIN_TEAM_DETAILS_FIELDS: &[&str] = &[]; +impl DomainInvitesDeclineRequestToJoinTeamDetails { + // no _opt deserializer + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + ) -> Result { + // ignore any fields found; none are presently recognized + crate::eat_json_fields(&mut map)?; + Ok(DomainInvitesDeclineRequestToJoinTeamDetails {}) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for DomainInvitesDeclineRequestToJoinTeamDetails { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = DomainInvitesDeclineRequestToJoinTeamDetails; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a DomainInvitesDeclineRequestToJoinTeamDetails struct") } - EventDetails::EnabledDomainInvitesDetails(_) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 1)?; - s.serialize_field(".tag", "enabled_domain_invites_details")?; - s.end() + fn visit_map>(self, map: V) -> Result { + DomainInvitesDeclineRequestToJoinTeamDetails::internal_deserialize(map) } - EventDetails::TeamEncryptionKeyCancelKeyDeletionDetails(_) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 1)?; - s.serialize_field(".tag", "team_encryption_key_cancel_key_deletion_details")?; - s.end() + } + deserializer.deserialize_struct("DomainInvitesDeclineRequestToJoinTeamDetails", DOMAIN_INVITES_DECLINE_REQUEST_TO_JOIN_TEAM_DETAILS_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for DomainInvitesDeclineRequestToJoinTeamDetails { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + serializer.serialize_struct("DomainInvitesDeclineRequestToJoinTeamDetails", 0)?.end() + } +} + +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct DomainInvitesDeclineRequestToJoinTeamType { + pub description: String, +} + +impl DomainInvitesDeclineRequestToJoinTeamType { + pub fn new(description: String) -> Self { + DomainInvitesDeclineRequestToJoinTeamType { + description, + } + } +} + +const DOMAIN_INVITES_DECLINE_REQUEST_TO_JOIN_TEAM_TYPE_FIELDS: &[&str] = &["description"]; +impl DomainInvitesDeclineRequestToJoinTeamType { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_description = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); + } + field_description = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } } - EventDetails::TeamEncryptionKeyCreateKeyDetails(_) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 1)?; - s.serialize_field(".tag", "team_encryption_key_create_key_details")?; - s.end() + } + if optional && nothing { + return Ok(None); + } + let result = DomainInvitesDeclineRequestToJoinTeamType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("description", &self.description)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for DomainInvitesDeclineRequestToJoinTeamType { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = DomainInvitesDeclineRequestToJoinTeamType; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a DomainInvitesDeclineRequestToJoinTeamType struct") } - EventDetails::TeamEncryptionKeyDeleteKeyDetails(_) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 1)?; - s.serialize_field(".tag", "team_encryption_key_delete_key_details")?; - s.end() + fn visit_map>(self, map: V) -> Result { + DomainInvitesDeclineRequestToJoinTeamType::internal_deserialize(map) } - EventDetails::TeamEncryptionKeyDisableKeyDetails(_) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 1)?; - s.serialize_field(".tag", "team_encryption_key_disable_key_details")?; - s.end() + } + deserializer.deserialize_struct("DomainInvitesDeclineRequestToJoinTeamType", DOMAIN_INVITES_DECLINE_REQUEST_TO_JOIN_TEAM_TYPE_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for DomainInvitesDeclineRequestToJoinTeamType { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("DomainInvitesDeclineRequestToJoinTeamType", 1)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +/// Sent domain invites to existing domain accounts. +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct DomainInvitesEmailExistingUsersDetails { + /// Domain names. + pub domain_name: String, + /// Number of recipients. + pub num_recipients: u64, +} + +impl DomainInvitesEmailExistingUsersDetails { + pub fn new(domain_name: String, num_recipients: u64) -> Self { + DomainInvitesEmailExistingUsersDetails { + domain_name, + num_recipients, + } + } +} + +const DOMAIN_INVITES_EMAIL_EXISTING_USERS_DETAILS_FIELDS: &[&str] = &["domain_name", + "num_recipients"]; +impl DomainInvitesEmailExistingUsersDetails { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_domain_name = None; + let mut field_num_recipients = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "domain_name" => { + if field_domain_name.is_some() { + return Err(::serde::de::Error::duplicate_field("domain_name")); + } + field_domain_name = Some(map.next_value()?); + } + "num_recipients" => { + if field_num_recipients.is_some() { + return Err(::serde::de::Error::duplicate_field("num_recipients")); + } + field_num_recipients = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } } - EventDetails::TeamEncryptionKeyEnableKeyDetails(_) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 1)?; - s.serialize_field(".tag", "team_encryption_key_enable_key_details")?; - s.end() + } + if optional && nothing { + return Ok(None); + } + let result = DomainInvitesEmailExistingUsersDetails { + domain_name: field_domain_name.ok_or_else(|| ::serde::de::Error::missing_field("domain_name"))?, + num_recipients: field_num_recipients.ok_or_else(|| ::serde::de::Error::missing_field("num_recipients"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("domain_name", &self.domain_name)?; + s.serialize_field("num_recipients", &self.num_recipients)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for DomainInvitesEmailExistingUsersDetails { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = DomainInvitesEmailExistingUsersDetails; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a DomainInvitesEmailExistingUsersDetails struct") } - EventDetails::TeamEncryptionKeyRotateKeyDetails(_) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 1)?; - s.serialize_field(".tag", "team_encryption_key_rotate_key_details")?; - s.end() + fn visit_map>(self, map: V) -> Result { + DomainInvitesEmailExistingUsersDetails::internal_deserialize(map) } - EventDetails::TeamEncryptionKeyScheduleKeyDeletionDetails(_) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 1)?; - s.serialize_field(".tag", "team_encryption_key_schedule_key_deletion_details")?; - s.end() - } - EventDetails::ApplyNamingConventionDetails(_) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 1)?; - s.serialize_field(".tag", "apply_naming_convention_details")?; - s.end() - } - EventDetails::CreateFolderDetails(_) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 1)?; - s.serialize_field(".tag", "create_folder_details")?; - s.end() - } - EventDetails::FileAddDetails(_) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 1)?; - s.serialize_field(".tag", "file_add_details")?; - s.end() - } - EventDetails::FileAddFromAutomationDetails(_) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 1)?; - s.serialize_field(".tag", "file_add_from_automation_details")?; - s.end() - } - EventDetails::FileCopyDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "file_copy_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::FileDeleteDetails(_) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 1)?; - s.serialize_field(".tag", "file_delete_details")?; - s.end() + } + deserializer.deserialize_struct("DomainInvitesEmailExistingUsersDetails", DOMAIN_INVITES_EMAIL_EXISTING_USERS_DETAILS_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for DomainInvitesEmailExistingUsersDetails { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("DomainInvitesEmailExistingUsersDetails", 2)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct DomainInvitesEmailExistingUsersType { + pub description: String, +} + +impl DomainInvitesEmailExistingUsersType { + pub fn new(description: String) -> Self { + DomainInvitesEmailExistingUsersType { + description, + } + } +} + +const DOMAIN_INVITES_EMAIL_EXISTING_USERS_TYPE_FIELDS: &[&str] = &["description"]; +impl DomainInvitesEmailExistingUsersType { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_description = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); + } + field_description = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } } - EventDetails::FileDownloadDetails(_) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 1)?; - s.serialize_field(".tag", "file_download_details")?; - s.end() + } + if optional && nothing { + return Ok(None); + } + let result = DomainInvitesEmailExistingUsersType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("description", &self.description)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for DomainInvitesEmailExistingUsersType { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = DomainInvitesEmailExistingUsersType; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a DomainInvitesEmailExistingUsersType struct") } - EventDetails::FileEditDetails(_) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 1)?; - s.serialize_field(".tag", "file_edit_details")?; - s.end() + fn visit_map>(self, map: V) -> Result { + DomainInvitesEmailExistingUsersType::internal_deserialize(map) } - EventDetails::FileGetCopyReferenceDetails(_) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 1)?; - s.serialize_field(".tag", "file_get_copy_reference_details")?; - s.end() + } + deserializer.deserialize_struct("DomainInvitesEmailExistingUsersType", DOMAIN_INVITES_EMAIL_EXISTING_USERS_TYPE_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for DomainInvitesEmailExistingUsersType { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("DomainInvitesEmailExistingUsersType", 1)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +/// Requested to join team. +#[derive(Debug, Clone, PartialEq, Eq, Default)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct DomainInvitesRequestToJoinTeamDetails { +} + +const DOMAIN_INVITES_REQUEST_TO_JOIN_TEAM_DETAILS_FIELDS: &[&str] = &[]; +impl DomainInvitesRequestToJoinTeamDetails { + // no _opt deserializer + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + ) -> Result { + // ignore any fields found; none are presently recognized + crate::eat_json_fields(&mut map)?; + Ok(DomainInvitesRequestToJoinTeamDetails {}) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for DomainInvitesRequestToJoinTeamDetails { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = DomainInvitesRequestToJoinTeamDetails; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a DomainInvitesRequestToJoinTeamDetails struct") } - EventDetails::FileLockingLockStatusChangedDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "file_locking_lock_status_changed_details")?; - x.internal_serialize::(&mut s)?; - s.end() + fn visit_map>(self, map: V) -> Result { + DomainInvitesRequestToJoinTeamDetails::internal_deserialize(map) } - EventDetails::FileMoveDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "file_move_details")?; - x.internal_serialize::(&mut s)?; - s.end() + } + deserializer.deserialize_struct("DomainInvitesRequestToJoinTeamDetails", DOMAIN_INVITES_REQUEST_TO_JOIN_TEAM_DETAILS_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for DomainInvitesRequestToJoinTeamDetails { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + serializer.serialize_struct("DomainInvitesRequestToJoinTeamDetails", 0)?.end() + } +} + +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct DomainInvitesRequestToJoinTeamType { + pub description: String, +} + +impl DomainInvitesRequestToJoinTeamType { + pub fn new(description: String) -> Self { + DomainInvitesRequestToJoinTeamType { + description, + } + } +} + +const DOMAIN_INVITES_REQUEST_TO_JOIN_TEAM_TYPE_FIELDS: &[&str] = &["description"]; +impl DomainInvitesRequestToJoinTeamType { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_description = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); + } + field_description = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } } - EventDetails::FilePermanentlyDeleteDetails(_) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 1)?; - s.serialize_field(".tag", "file_permanently_delete_details")?; - s.end() + } + if optional && nothing { + return Ok(None); + } + let result = DomainInvitesRequestToJoinTeamType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("description", &self.description)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for DomainInvitesRequestToJoinTeamType { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = DomainInvitesRequestToJoinTeamType; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a DomainInvitesRequestToJoinTeamType struct") } - EventDetails::FilePreviewDetails(_) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 1)?; - s.serialize_field(".tag", "file_preview_details")?; - s.end() + fn visit_map>(self, map: V) -> Result { + DomainInvitesRequestToJoinTeamType::internal_deserialize(map) } - EventDetails::FileRenameDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "file_rename_details")?; - x.internal_serialize::(&mut s)?; - s.end() + } + deserializer.deserialize_struct("DomainInvitesRequestToJoinTeamType", DOMAIN_INVITES_REQUEST_TO_JOIN_TEAM_TYPE_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for DomainInvitesRequestToJoinTeamType { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("DomainInvitesRequestToJoinTeamType", 1)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +/// Disabled "Automatically invite new users". +#[derive(Debug, Clone, PartialEq, Eq, Default)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct DomainInvitesSetInviteNewUserPrefToNoDetails { +} + +const DOMAIN_INVITES_SET_INVITE_NEW_USER_PREF_TO_NO_DETAILS_FIELDS: &[&str] = &[]; +impl DomainInvitesSetInviteNewUserPrefToNoDetails { + // no _opt deserializer + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + ) -> Result { + // ignore any fields found; none are presently recognized + crate::eat_json_fields(&mut map)?; + Ok(DomainInvitesSetInviteNewUserPrefToNoDetails {}) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for DomainInvitesSetInviteNewUserPrefToNoDetails { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = DomainInvitesSetInviteNewUserPrefToNoDetails; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a DomainInvitesSetInviteNewUserPrefToNoDetails struct") } - EventDetails::FileRestoreDetails(_) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 1)?; - s.serialize_field(".tag", "file_restore_details")?; - s.end() + fn visit_map>(self, map: V) -> Result { + DomainInvitesSetInviteNewUserPrefToNoDetails::internal_deserialize(map) } - EventDetails::FileRevertDetails(_) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 1)?; - s.serialize_field(".tag", "file_revert_details")?; - s.end() + } + deserializer.deserialize_struct("DomainInvitesSetInviteNewUserPrefToNoDetails", DOMAIN_INVITES_SET_INVITE_NEW_USER_PREF_TO_NO_DETAILS_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for DomainInvitesSetInviteNewUserPrefToNoDetails { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + serializer.serialize_struct("DomainInvitesSetInviteNewUserPrefToNoDetails", 0)?.end() + } +} + +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct DomainInvitesSetInviteNewUserPrefToNoType { + pub description: String, +} + +impl DomainInvitesSetInviteNewUserPrefToNoType { + pub fn new(description: String) -> Self { + DomainInvitesSetInviteNewUserPrefToNoType { + description, + } + } +} + +const DOMAIN_INVITES_SET_INVITE_NEW_USER_PREF_TO_NO_TYPE_FIELDS: &[&str] = &["description"]; +impl DomainInvitesSetInviteNewUserPrefToNoType { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_description = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); + } + field_description = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } } - EventDetails::FileRollbackChangesDetails(_) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 1)?; - s.serialize_field(".tag", "file_rollback_changes_details")?; - s.end() + } + if optional && nothing { + return Ok(None); + } + let result = DomainInvitesSetInviteNewUserPrefToNoType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("description", &self.description)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for DomainInvitesSetInviteNewUserPrefToNoType { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = DomainInvitesSetInviteNewUserPrefToNoType; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a DomainInvitesSetInviteNewUserPrefToNoType struct") } - EventDetails::FileSaveCopyReferenceDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "file_save_copy_reference_details")?; - x.internal_serialize::(&mut s)?; - s.end() + fn visit_map>(self, map: V) -> Result { + DomainInvitesSetInviteNewUserPrefToNoType::internal_deserialize(map) } - EventDetails::FolderOverviewDescriptionChangedDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "folder_overview_description_changed_details")?; - x.internal_serialize::(&mut s)?; - s.end() + } + deserializer.deserialize_struct("DomainInvitesSetInviteNewUserPrefToNoType", DOMAIN_INVITES_SET_INVITE_NEW_USER_PREF_TO_NO_TYPE_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for DomainInvitesSetInviteNewUserPrefToNoType { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("DomainInvitesSetInviteNewUserPrefToNoType", 1)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +/// Enabled "Automatically invite new users". +#[derive(Debug, Clone, PartialEq, Eq, Default)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct DomainInvitesSetInviteNewUserPrefToYesDetails { +} + +const DOMAIN_INVITES_SET_INVITE_NEW_USER_PREF_TO_YES_DETAILS_FIELDS: &[&str] = &[]; +impl DomainInvitesSetInviteNewUserPrefToYesDetails { + // no _opt deserializer + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + ) -> Result { + // ignore any fields found; none are presently recognized + crate::eat_json_fields(&mut map)?; + Ok(DomainInvitesSetInviteNewUserPrefToYesDetails {}) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for DomainInvitesSetInviteNewUserPrefToYesDetails { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = DomainInvitesSetInviteNewUserPrefToYesDetails; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a DomainInvitesSetInviteNewUserPrefToYesDetails struct") } - EventDetails::FolderOverviewItemPinnedDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "folder_overview_item_pinned_details")?; - x.internal_serialize::(&mut s)?; - s.end() + fn visit_map>(self, map: V) -> Result { + DomainInvitesSetInviteNewUserPrefToYesDetails::internal_deserialize(map) } - EventDetails::FolderOverviewItemUnpinnedDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "folder_overview_item_unpinned_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::ObjectLabelAddedDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "object_label_added_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::ObjectLabelRemovedDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "object_label_removed_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::ObjectLabelUpdatedValueDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "object_label_updated_value_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::OrganizeFolderWithTidyDetails(_) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 1)?; - s.serialize_field(".tag", "organize_folder_with_tidy_details")?; - s.end() - } - EventDetails::ReplayFileDeleteDetails(_) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 1)?; - s.serialize_field(".tag", "replay_file_delete_details")?; - s.end() - } - EventDetails::RewindFolderDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "rewind_folder_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::UndoNamingConventionDetails(_) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 1)?; - s.serialize_field(".tag", "undo_naming_convention_details")?; - s.end() - } - EventDetails::UndoOrganizeFolderWithTidyDetails(_) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 1)?; - s.serialize_field(".tag", "undo_organize_folder_with_tidy_details")?; - s.end() + } + deserializer.deserialize_struct("DomainInvitesSetInviteNewUserPrefToYesDetails", DOMAIN_INVITES_SET_INVITE_NEW_USER_PREF_TO_YES_DETAILS_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for DomainInvitesSetInviteNewUserPrefToYesDetails { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + serializer.serialize_struct("DomainInvitesSetInviteNewUserPrefToYesDetails", 0)?.end() + } +} + +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct DomainInvitesSetInviteNewUserPrefToYesType { + pub description: String, +} + +impl DomainInvitesSetInviteNewUserPrefToYesType { + pub fn new(description: String) -> Self { + DomainInvitesSetInviteNewUserPrefToYesType { + description, + } + } +} + +const DOMAIN_INVITES_SET_INVITE_NEW_USER_PREF_TO_YES_TYPE_FIELDS: &[&str] = &["description"]; +impl DomainInvitesSetInviteNewUserPrefToYesType { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_description = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); + } + field_description = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } } - EventDetails::UserTagsAddedDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "user_tags_added_details")?; - x.internal_serialize::(&mut s)?; - s.end() + } + if optional && nothing { + return Ok(None); + } + let result = DomainInvitesSetInviteNewUserPrefToYesType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("description", &self.description)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for DomainInvitesSetInviteNewUserPrefToYesType { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = DomainInvitesSetInviteNewUserPrefToYesType; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a DomainInvitesSetInviteNewUserPrefToYesType struct") } - EventDetails::UserTagsRemovedDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "user_tags_removed_details")?; - x.internal_serialize::(&mut s)?; - s.end() + fn visit_map>(self, map: V) -> Result { + DomainInvitesSetInviteNewUserPrefToYesType::internal_deserialize(map) } - EventDetails::EmailIngestReceiveFileDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 6)?; - s.serialize_field(".tag", "email_ingest_receive_file_details")?; - x.internal_serialize::(&mut s)?; - s.end() + } + deserializer.deserialize_struct("DomainInvitesSetInviteNewUserPrefToYesType", DOMAIN_INVITES_SET_INVITE_NEW_USER_PREF_TO_YES_TYPE_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for DomainInvitesSetInviteNewUserPrefToYesType { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("DomainInvitesSetInviteNewUserPrefToYesType", 1)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +/// Failed to verify team domain. +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct DomainVerificationAddDomainFailDetails { + /// Domain name. + pub domain_name: String, + /// Domain name verification method. Might be missing due to historical data gap. + pub verification_method: Option, +} + +impl DomainVerificationAddDomainFailDetails { + pub fn new(domain_name: String) -> Self { + DomainVerificationAddDomainFailDetails { + domain_name, + verification_method: None, + } + } + + pub fn with_verification_method(mut self, value: String) -> Self { + self.verification_method = Some(value); + self + } +} + +const DOMAIN_VERIFICATION_ADD_DOMAIN_FAIL_DETAILS_FIELDS: &[&str] = &["domain_name", + "verification_method"]; +impl DomainVerificationAddDomainFailDetails { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_domain_name = None; + let mut field_verification_method = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "domain_name" => { + if field_domain_name.is_some() { + return Err(::serde::de::Error::duplicate_field("domain_name")); + } + field_domain_name = Some(map.next_value()?); + } + "verification_method" => { + if field_verification_method.is_some() { + return Err(::serde::de::Error::duplicate_field("verification_method")); + } + field_verification_method = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } } - EventDetails::FileRequestChangeDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 4)?; - s.serialize_field(".tag", "file_request_change_details")?; - x.internal_serialize::(&mut s)?; - s.end() + } + if optional && nothing { + return Ok(None); + } + let result = DomainVerificationAddDomainFailDetails { + domain_name: field_domain_name.ok_or_else(|| ::serde::de::Error::missing_field("domain_name"))?, + verification_method: field_verification_method.and_then(Option::flatten), + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("domain_name", &self.domain_name)?; + if let Some(val) = &self.verification_method { + s.serialize_field("verification_method", val)?; + } + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for DomainVerificationAddDomainFailDetails { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = DomainVerificationAddDomainFailDetails; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a DomainVerificationAddDomainFailDetails struct") } - EventDetails::FileRequestCloseDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "file_request_close_details")?; - x.internal_serialize::(&mut s)?; - s.end() + fn visit_map>(self, map: V) -> Result { + DomainVerificationAddDomainFailDetails::internal_deserialize(map) } - EventDetails::FileRequestCreateDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "file_request_create_details")?; - x.internal_serialize::(&mut s)?; - s.end() + } + deserializer.deserialize_struct("DomainVerificationAddDomainFailDetails", DOMAIN_VERIFICATION_ADD_DOMAIN_FAIL_DETAILS_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for DomainVerificationAddDomainFailDetails { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("DomainVerificationAddDomainFailDetails", 2)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct DomainVerificationAddDomainFailType { + pub description: String, +} + +impl DomainVerificationAddDomainFailType { + pub fn new(description: String) -> Self { + DomainVerificationAddDomainFailType { + description, + } + } +} + +const DOMAIN_VERIFICATION_ADD_DOMAIN_FAIL_TYPE_FIELDS: &[&str] = &["description"]; +impl DomainVerificationAddDomainFailType { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_description = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); + } + field_description = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } } - EventDetails::FileRequestDeleteDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "file_request_delete_details")?; - x.internal_serialize::(&mut s)?; - s.end() + } + if optional && nothing { + return Ok(None); + } + let result = DomainVerificationAddDomainFailType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("description", &self.description)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for DomainVerificationAddDomainFailType { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = DomainVerificationAddDomainFailType; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a DomainVerificationAddDomainFailType struct") } - EventDetails::FileRequestReceiveFileDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 6)?; - s.serialize_field(".tag", "file_request_receive_file_details")?; - x.internal_serialize::(&mut s)?; - s.end() + fn visit_map>(self, map: V) -> Result { + DomainVerificationAddDomainFailType::internal_deserialize(map) } - EventDetails::GroupAddExternalIdDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "group_add_external_id_details")?; - x.internal_serialize::(&mut s)?; - s.end() + } + deserializer.deserialize_struct("DomainVerificationAddDomainFailType", DOMAIN_VERIFICATION_ADD_DOMAIN_FAIL_TYPE_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for DomainVerificationAddDomainFailType { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("DomainVerificationAddDomainFailType", 1)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +/// Verified team domain. +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct DomainVerificationAddDomainSuccessDetails { + /// Domain names. + pub domain_names: Vec, + /// Domain name verification method. Might be missing due to historical data gap. + pub verification_method: Option, +} + +impl DomainVerificationAddDomainSuccessDetails { + pub fn new(domain_names: Vec) -> Self { + DomainVerificationAddDomainSuccessDetails { + domain_names, + verification_method: None, + } + } + + pub fn with_verification_method(mut self, value: String) -> Self { + self.verification_method = Some(value); + self + } +} + +const DOMAIN_VERIFICATION_ADD_DOMAIN_SUCCESS_DETAILS_FIELDS: &[&str] = &["domain_names", + "verification_method"]; +impl DomainVerificationAddDomainSuccessDetails { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_domain_names = None; + let mut field_verification_method = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "domain_names" => { + if field_domain_names.is_some() { + return Err(::serde::de::Error::duplicate_field("domain_names")); + } + field_domain_names = Some(map.next_value()?); + } + "verification_method" => { + if field_verification_method.is_some() { + return Err(::serde::de::Error::duplicate_field("verification_method")); + } + field_verification_method = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } } - EventDetails::GroupAddMemberDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "group_add_member_details")?; - x.internal_serialize::(&mut s)?; - s.end() + } + if optional && nothing { + return Ok(None); + } + let result = DomainVerificationAddDomainSuccessDetails { + domain_names: field_domain_names.ok_or_else(|| ::serde::de::Error::missing_field("domain_names"))?, + verification_method: field_verification_method.and_then(Option::flatten), + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("domain_names", &self.domain_names)?; + if let Some(val) = &self.verification_method { + s.serialize_field("verification_method", val)?; + } + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for DomainVerificationAddDomainSuccessDetails { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = DomainVerificationAddDomainSuccessDetails; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a DomainVerificationAddDomainSuccessDetails struct") } - EventDetails::GroupChangeExternalIdDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "group_change_external_id_details")?; - x.internal_serialize::(&mut s)?; - s.end() + fn visit_map>(self, map: V) -> Result { + DomainVerificationAddDomainSuccessDetails::internal_deserialize(map) } - EventDetails::GroupChangeManagementTypeDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "group_change_management_type_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::GroupChangeMemberRoleDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "group_change_member_role_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::GroupCreateDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "group_create_details")?; - x.internal_serialize::(&mut s)?; - s.end() + } + deserializer.deserialize_struct("DomainVerificationAddDomainSuccessDetails", DOMAIN_VERIFICATION_ADD_DOMAIN_SUCCESS_DETAILS_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for DomainVerificationAddDomainSuccessDetails { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("DomainVerificationAddDomainSuccessDetails", 2)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct DomainVerificationAddDomainSuccessType { + pub description: String, +} + +impl DomainVerificationAddDomainSuccessType { + pub fn new(description: String) -> Self { + DomainVerificationAddDomainSuccessType { + description, + } + } +} + +const DOMAIN_VERIFICATION_ADD_DOMAIN_SUCCESS_TYPE_FIELDS: &[&str] = &["description"]; +impl DomainVerificationAddDomainSuccessType { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_description = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); + } + field_description = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } } - EventDetails::GroupDeleteDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "group_delete_details")?; - x.internal_serialize::(&mut s)?; - s.end() + } + if optional && nothing { + return Ok(None); + } + let result = DomainVerificationAddDomainSuccessType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("description", &self.description)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for DomainVerificationAddDomainSuccessType { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = DomainVerificationAddDomainSuccessType; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a DomainVerificationAddDomainSuccessType struct") } - EventDetails::GroupDescriptionUpdatedDetails(_) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 1)?; - s.serialize_field(".tag", "group_description_updated_details")?; - s.end() + fn visit_map>(self, map: V) -> Result { + DomainVerificationAddDomainSuccessType::internal_deserialize(map) } - EventDetails::GroupJoinPolicyUpdatedDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "group_join_policy_updated_details")?; - x.internal_serialize::(&mut s)?; - s.end() + } + deserializer.deserialize_struct("DomainVerificationAddDomainSuccessType", DOMAIN_VERIFICATION_ADD_DOMAIN_SUCCESS_TYPE_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for DomainVerificationAddDomainSuccessType { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("DomainVerificationAddDomainSuccessType", 1)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +/// Removed domain from list of verified team domains. +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct DomainVerificationRemoveDomainDetails { + /// Domain names. + pub domain_names: Vec, +} + +impl DomainVerificationRemoveDomainDetails { + pub fn new(domain_names: Vec) -> Self { + DomainVerificationRemoveDomainDetails { + domain_names, + } + } +} + +const DOMAIN_VERIFICATION_REMOVE_DOMAIN_DETAILS_FIELDS: &[&str] = &["domain_names"]; +impl DomainVerificationRemoveDomainDetails { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_domain_names = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "domain_names" => { + if field_domain_names.is_some() { + return Err(::serde::de::Error::duplicate_field("domain_names")); + } + field_domain_names = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } } - EventDetails::GroupMovedDetails(_) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 1)?; - s.serialize_field(".tag", "group_moved_details")?; - s.end() + } + if optional && nothing { + return Ok(None); + } + let result = DomainVerificationRemoveDomainDetails { + domain_names: field_domain_names.ok_or_else(|| ::serde::de::Error::missing_field("domain_names"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("domain_names", &self.domain_names)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for DomainVerificationRemoveDomainDetails { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = DomainVerificationRemoveDomainDetails; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a DomainVerificationRemoveDomainDetails struct") } - EventDetails::GroupRemoveExternalIdDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "group_remove_external_id_details")?; - x.internal_serialize::(&mut s)?; - s.end() + fn visit_map>(self, map: V) -> Result { + DomainVerificationRemoveDomainDetails::internal_deserialize(map) } - EventDetails::GroupRemoveMemberDetails(_) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 1)?; - s.serialize_field(".tag", "group_remove_member_details")?; - s.end() + } + deserializer.deserialize_struct("DomainVerificationRemoveDomainDetails", DOMAIN_VERIFICATION_REMOVE_DOMAIN_DETAILS_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for DomainVerificationRemoveDomainDetails { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("DomainVerificationRemoveDomainDetails", 1)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct DomainVerificationRemoveDomainType { + pub description: String, +} + +impl DomainVerificationRemoveDomainType { + pub fn new(description: String) -> Self { + DomainVerificationRemoveDomainType { + description, + } + } +} + +const DOMAIN_VERIFICATION_REMOVE_DOMAIN_TYPE_FIELDS: &[&str] = &["description"]; +impl DomainVerificationRemoveDomainType { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_description = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); + } + field_description = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } } - EventDetails::GroupRenameDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "group_rename_details")?; - x.internal_serialize::(&mut s)?; - s.end() + } + if optional && nothing { + return Ok(None); + } + let result = DomainVerificationRemoveDomainType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("description", &self.description)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for DomainVerificationRemoveDomainType { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = DomainVerificationRemoveDomainType; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a DomainVerificationRemoveDomainType struct") } - EventDetails::AccountLockOrUnlockedDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "account_lock_or_unlocked_details")?; - x.internal_serialize::(&mut s)?; - s.end() + fn visit_map>(self, map: V) -> Result { + DomainVerificationRemoveDomainType::internal_deserialize(map) } - EventDetails::EmmErrorDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "emm_error_details")?; - x.internal_serialize::(&mut s)?; - s.end() + } + deserializer.deserialize_struct("DomainVerificationRemoveDomainType", DOMAIN_VERIFICATION_REMOVE_DOMAIN_TYPE_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for DomainVerificationRemoveDomainType { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("DomainVerificationRemoveDomainType", 1)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +/// Shared content downloads policy +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // variants may be added in the future +pub enum DownloadPolicyType { + Allow, + Disallow, + /// Catch-all used for unrecognized values returned from the server. Encountering this value + /// typically indicates that this SDK version is out of date. + Other, +} + +impl<'de> ::serde::de::Deserialize<'de> for DownloadPolicyType { + fn deserialize>(deserializer: D) -> Result { + // union deserializer + use serde::de::{self, MapAccess, Visitor}; + struct EnumVisitor; + impl<'de> Visitor<'de> for EnumVisitor { + type Value = DownloadPolicyType; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a DownloadPolicyType structure") } - EventDetails::GuestAdminSignedInViaTrustedTeamsDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "guest_admin_signed_in_via_trusted_teams_details")?; - x.internal_serialize::(&mut s)?; - s.end() + fn visit_map>(self, mut map: V) -> Result { + let tag: &str = match map.next_key()? { + Some(".tag") => map.next_value()?, + _ => return Err(de::Error::missing_field(".tag")) + }; + let value = match tag { + "allow" => DownloadPolicyType::Allow, + "disallow" => DownloadPolicyType::Disallow, + _ => DownloadPolicyType::Other, + }; + crate::eat_json_fields(&mut map)?; + Ok(value) } - EventDetails::GuestAdminSignedOutViaTrustedTeamsDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "guest_admin_signed_out_via_trusted_teams_details")?; - x.internal_serialize::(&mut s)?; + } + const VARIANTS: &[&str] = &["allow", + "disallow", + "other"]; + deserializer.deserialize_struct("DownloadPolicyType", VARIANTS, EnumVisitor) + } +} + +impl ::serde::ser::Serialize for DownloadPolicyType { + fn serialize(&self, serializer: S) -> Result { + // union serializer + use serde::ser::SerializeStruct; + match self { + DownloadPolicyType::Allow => { + // unit + let mut s = serializer.serialize_struct("DownloadPolicyType", 1)?; + s.serialize_field(".tag", "allow")?; s.end() } - EventDetails::LoginFailDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 4)?; - s.serialize_field(".tag", "login_fail_details")?; - x.internal_serialize::(&mut s)?; + DownloadPolicyType::Disallow => { + // unit + let mut s = serializer.serialize_struct("DownloadPolicyType", 1)?; + s.serialize_field(".tag", "disallow")?; s.end() } - EventDetails::LoginSuccessDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "login_success_details")?; - x.internal_serialize::(&mut s)?; - s.end() + DownloadPolicyType::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) + } + } +} + +/// Exported passwords. +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct DropboxPasswordsExportedDetails { + /// The platform the device runs export. + pub platform: String, +} + +impl DropboxPasswordsExportedDetails { + pub fn new(platform: String) -> Self { + DropboxPasswordsExportedDetails { + platform, + } + } +} + +const DROPBOX_PASSWORDS_EXPORTED_DETAILS_FIELDS: &[&str] = &["platform"]; +impl DropboxPasswordsExportedDetails { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_platform = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "platform" => { + if field_platform.is_some() { + return Err(::serde::de::Error::duplicate_field("platform")); + } + field_platform = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } } - EventDetails::LogoutDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "logout_details")?; - x.internal_serialize::(&mut s)?; - s.end() + } + if optional && nothing { + return Ok(None); + } + let result = DropboxPasswordsExportedDetails { + platform: field_platform.ok_or_else(|| ::serde::de::Error::missing_field("platform"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("platform", &self.platform)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for DropboxPasswordsExportedDetails { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = DropboxPasswordsExportedDetails; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a DropboxPasswordsExportedDetails struct") } - EventDetails::ResellerSupportSessionEndDetails(_) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 1)?; - s.serialize_field(".tag", "reseller_support_session_end_details")?; - s.end() + fn visit_map>(self, map: V) -> Result { + DropboxPasswordsExportedDetails::internal_deserialize(map) } - EventDetails::ResellerSupportSessionStartDetails(_) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 1)?; - s.serialize_field(".tag", "reseller_support_session_start_details")?; - s.end() - } - EventDetails::SignInAsSessionEndDetails(_) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 1)?; - s.serialize_field(".tag", "sign_in_as_session_end_details")?; - s.end() - } - EventDetails::SignInAsSessionStartDetails(_) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 1)?; - s.serialize_field(".tag", "sign_in_as_session_start_details")?; - s.end() - } - EventDetails::SsoErrorDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "sso_error_details")?; - x.internal_serialize::(&mut s)?; - s.end() + } + deserializer.deserialize_struct("DropboxPasswordsExportedDetails", DROPBOX_PASSWORDS_EXPORTED_DETAILS_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for DropboxPasswordsExportedDetails { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("DropboxPasswordsExportedDetails", 1)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct DropboxPasswordsExportedType { + pub description: String, +} + +impl DropboxPasswordsExportedType { + pub fn new(description: String) -> Self { + DropboxPasswordsExportedType { + description, + } + } +} + +const DROPBOX_PASSWORDS_EXPORTED_TYPE_FIELDS: &[&str] = &["description"]; +impl DropboxPasswordsExportedType { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_description = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); + } + field_description = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } } - EventDetails::BackupAdminInvitationSentDetails(_) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 1)?; - s.serialize_field(".tag", "backup_admin_invitation_sent_details")?; - s.end() + } + if optional && nothing { + return Ok(None); + } + let result = DropboxPasswordsExportedType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("description", &self.description)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for DropboxPasswordsExportedType { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = DropboxPasswordsExportedType; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a DropboxPasswordsExportedType struct") } - EventDetails::BackupInvitationOpenedDetails(_) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 1)?; - s.serialize_field(".tag", "backup_invitation_opened_details")?; - s.end() + fn visit_map>(self, map: V) -> Result { + DropboxPasswordsExportedType::internal_deserialize(map) } - EventDetails::CreateTeamInviteLinkDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "create_team_invite_link_details")?; - x.internal_serialize::(&mut s)?; - s.end() + } + deserializer.deserialize_struct("DropboxPasswordsExportedType", DROPBOX_PASSWORDS_EXPORTED_TYPE_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for DropboxPasswordsExportedType { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("DropboxPasswordsExportedType", 1)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +/// Enrolled new Dropbox Passwords device. +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct DropboxPasswordsNewDeviceEnrolledDetails { + /// Whether it's a first device enrolled. + pub is_first_device: bool, + /// The platform the device is enrolled. + pub platform: String, +} + +impl DropboxPasswordsNewDeviceEnrolledDetails { + pub fn new(is_first_device: bool, platform: String) -> Self { + DropboxPasswordsNewDeviceEnrolledDetails { + is_first_device, + platform, + } + } +} + +const DROPBOX_PASSWORDS_NEW_DEVICE_ENROLLED_DETAILS_FIELDS: &[&str] = &["is_first_device", + "platform"]; +impl DropboxPasswordsNewDeviceEnrolledDetails { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_is_first_device = None; + let mut field_platform = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "is_first_device" => { + if field_is_first_device.is_some() { + return Err(::serde::de::Error::duplicate_field("is_first_device")); + } + field_is_first_device = Some(map.next_value()?); + } + "platform" => { + if field_platform.is_some() { + return Err(::serde::de::Error::duplicate_field("platform")); + } + field_platform = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } } - EventDetails::DeleteTeamInviteLinkDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "delete_team_invite_link_details")?; - x.internal_serialize::(&mut s)?; - s.end() + } + if optional && nothing { + return Ok(None); + } + let result = DropboxPasswordsNewDeviceEnrolledDetails { + is_first_device: field_is_first_device.ok_or_else(|| ::serde::de::Error::missing_field("is_first_device"))?, + platform: field_platform.ok_or_else(|| ::serde::de::Error::missing_field("platform"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("is_first_device", &self.is_first_device)?; + s.serialize_field("platform", &self.platform)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for DropboxPasswordsNewDeviceEnrolledDetails { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = DropboxPasswordsNewDeviceEnrolledDetails; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a DropboxPasswordsNewDeviceEnrolledDetails struct") } - EventDetails::MemberAddExternalIdDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "member_add_external_id_details")?; - x.internal_serialize::(&mut s)?; - s.end() + fn visit_map>(self, map: V) -> Result { + DropboxPasswordsNewDeviceEnrolledDetails::internal_deserialize(map) } - EventDetails::MemberAddNameDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "member_add_name_details")?; - x.internal_serialize::(&mut s)?; - s.end() + } + deserializer.deserialize_struct("DropboxPasswordsNewDeviceEnrolledDetails", DROPBOX_PASSWORDS_NEW_DEVICE_ENROLLED_DETAILS_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for DropboxPasswordsNewDeviceEnrolledDetails { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("DropboxPasswordsNewDeviceEnrolledDetails", 2)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct DropboxPasswordsNewDeviceEnrolledType { + pub description: String, +} + +impl DropboxPasswordsNewDeviceEnrolledType { + pub fn new(description: String) -> Self { + DropboxPasswordsNewDeviceEnrolledType { + description, + } + } +} + +const DROPBOX_PASSWORDS_NEW_DEVICE_ENROLLED_TYPE_FIELDS: &[&str] = &["description"]; +impl DropboxPasswordsNewDeviceEnrolledType { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_description = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); + } + field_description = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } } - EventDetails::MemberChangeAdminRoleDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "member_change_admin_role_details")?; - x.internal_serialize::(&mut s)?; - s.end() + } + if optional && nothing { + return Ok(None); + } + let result = DropboxPasswordsNewDeviceEnrolledType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("description", &self.description)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for DropboxPasswordsNewDeviceEnrolledType { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = DropboxPasswordsNewDeviceEnrolledType; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a DropboxPasswordsNewDeviceEnrolledType struct") } - EventDetails::MemberChangeEmailDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "member_change_email_details")?; - x.internal_serialize::(&mut s)?; - s.end() + fn visit_map>(self, map: V) -> Result { + DropboxPasswordsNewDeviceEnrolledType::internal_deserialize(map) } - EventDetails::MemberChangeExternalIdDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "member_change_external_id_details")?; - x.internal_serialize::(&mut s)?; - s.end() + } + deserializer.deserialize_struct("DropboxPasswordsNewDeviceEnrolledType", DROPBOX_PASSWORDS_NEW_DEVICE_ENROLLED_TYPE_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for DropboxPasswordsNewDeviceEnrolledType { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("DropboxPasswordsNewDeviceEnrolledType", 1)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +/// Policy for deciding whether team users can use Dropbox Passwords +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // variants may be added in the future +pub enum DropboxPasswordsPolicy { + Default, + Disabled, + Enabled, + /// Catch-all used for unrecognized values returned from the server. Encountering this value + /// typically indicates that this SDK version is out of date. + Other, +} + +impl<'de> ::serde::de::Deserialize<'de> for DropboxPasswordsPolicy { + fn deserialize>(deserializer: D) -> Result { + // union deserializer + use serde::de::{self, MapAccess, Visitor}; + struct EnumVisitor; + impl<'de> Visitor<'de> for EnumVisitor { + type Value = DropboxPasswordsPolicy; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a DropboxPasswordsPolicy structure") } - EventDetails::MemberChangeMembershipTypeDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "member_change_membership_type_details")?; - x.internal_serialize::(&mut s)?; - s.end() + fn visit_map>(self, mut map: V) -> Result { + let tag: &str = match map.next_key()? { + Some(".tag") => map.next_value()?, + _ => return Err(de::Error::missing_field(".tag")) + }; + let value = match tag { + "default" => DropboxPasswordsPolicy::Default, + "disabled" => DropboxPasswordsPolicy::Disabled, + "enabled" => DropboxPasswordsPolicy::Enabled, + _ => DropboxPasswordsPolicy::Other, + }; + crate::eat_json_fields(&mut map)?; + Ok(value) } - EventDetails::MemberChangeNameDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "member_change_name_details")?; - x.internal_serialize::(&mut s)?; + } + const VARIANTS: &[&str] = &["default", + "disabled", + "enabled", + "other"]; + deserializer.deserialize_struct("DropboxPasswordsPolicy", VARIANTS, EnumVisitor) + } +} + +impl ::serde::ser::Serialize for DropboxPasswordsPolicy { + fn serialize(&self, serializer: S) -> Result { + // union serializer + use serde::ser::SerializeStruct; + match self { + DropboxPasswordsPolicy::Default => { + // unit + let mut s = serializer.serialize_struct("DropboxPasswordsPolicy", 1)?; + s.serialize_field(".tag", "default")?; s.end() } - EventDetails::MemberChangeResellerRoleDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "member_change_reseller_role_details")?; - x.internal_serialize::(&mut s)?; + DropboxPasswordsPolicy::Disabled => { + // unit + let mut s = serializer.serialize_struct("DropboxPasswordsPolicy", 1)?; + s.serialize_field(".tag", "disabled")?; s.end() } - EventDetails::MemberChangeStatusDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 6)?; - s.serialize_field(".tag", "member_change_status_details")?; - x.internal_serialize::(&mut s)?; + DropboxPasswordsPolicy::Enabled => { + // unit + let mut s = serializer.serialize_struct("DropboxPasswordsPolicy", 1)?; + s.serialize_field(".tag", "enabled")?; s.end() } - EventDetails::MemberDeleteManualContactsDetails(_) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 1)?; - s.serialize_field(".tag", "member_delete_manual_contacts_details")?; - s.end() + DropboxPasswordsPolicy::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) + } + } +} + +/// Changed Dropbox Passwords policy for team. +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct DropboxPasswordsPolicyChangedDetails { + /// To. + pub new_value: DropboxPasswordsPolicy, + /// From. + pub previous_value: DropboxPasswordsPolicy, +} + +impl DropboxPasswordsPolicyChangedDetails { + pub fn new(new_value: DropboxPasswordsPolicy, previous_value: DropboxPasswordsPolicy) -> Self { + DropboxPasswordsPolicyChangedDetails { + new_value, + previous_value, + } + } +} + +const DROPBOX_PASSWORDS_POLICY_CHANGED_DETAILS_FIELDS: &[&str] = &["new_value", + "previous_value"]; +impl DropboxPasswordsPolicyChangedDetails { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_new_value = None; + let mut field_previous_value = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "new_value" => { + if field_new_value.is_some() { + return Err(::serde::de::Error::duplicate_field("new_value")); + } + field_new_value = Some(map.next_value()?); + } + "previous_value" => { + if field_previous_value.is_some() { + return Err(::serde::de::Error::duplicate_field("previous_value")); + } + field_previous_value = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } } - EventDetails::MemberDeleteProfilePhotoDetails(_) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 1)?; - s.serialize_field(".tag", "member_delete_profile_photo_details")?; - s.end() - } - EventDetails::MemberPermanentlyDeleteAccountContentsDetails(_) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 1)?; - s.serialize_field(".tag", "member_permanently_delete_account_contents_details")?; - s.end() - } - EventDetails::MemberRemoveExternalIdDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "member_remove_external_id_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::MemberSetProfilePhotoDetails(_) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 1)?; - s.serialize_field(".tag", "member_set_profile_photo_details")?; - s.end() - } - EventDetails::MemberSpaceLimitsAddCustomQuotaDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "member_space_limits_add_custom_quota_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::MemberSpaceLimitsChangeCustomQuotaDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "member_space_limits_change_custom_quota_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::MemberSpaceLimitsChangeStatusDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "member_space_limits_change_status_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::MemberSpaceLimitsRemoveCustomQuotaDetails(_) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 1)?; - s.serialize_field(".tag", "member_space_limits_remove_custom_quota_details")?; - s.end() + } + if optional && nothing { + return Ok(None); + } + let result = DropboxPasswordsPolicyChangedDetails { + new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, + previous_value: field_previous_value.ok_or_else(|| ::serde::de::Error::missing_field("previous_value"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("new_value", &self.new_value)?; + s.serialize_field("previous_value", &self.previous_value)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for DropboxPasswordsPolicyChangedDetails { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = DropboxPasswordsPolicyChangedDetails; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a DropboxPasswordsPolicyChangedDetails struct") } - EventDetails::MemberSuggestDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "member_suggest_details")?; - x.internal_serialize::(&mut s)?; - s.end() + fn visit_map>(self, map: V) -> Result { + DropboxPasswordsPolicyChangedDetails::internal_deserialize(map) } - EventDetails::MemberTransferAccountContentsDetails(_) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 1)?; - s.serialize_field(".tag", "member_transfer_account_contents_details")?; - s.end() + } + deserializer.deserialize_struct("DropboxPasswordsPolicyChangedDetails", DROPBOX_PASSWORDS_POLICY_CHANGED_DETAILS_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for DropboxPasswordsPolicyChangedDetails { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("DropboxPasswordsPolicyChangedDetails", 2)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct DropboxPasswordsPolicyChangedType { + pub description: String, +} + +impl DropboxPasswordsPolicyChangedType { + pub fn new(description: String) -> Self { + DropboxPasswordsPolicyChangedType { + description, + } + } +} + +const DROPBOX_PASSWORDS_POLICY_CHANGED_TYPE_FIELDS: &[&str] = &["description"]; +impl DropboxPasswordsPolicyChangedType { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_description = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); + } + field_description = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } } - EventDetails::PendingSecondaryEmailAddedDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "pending_secondary_email_added_details")?; - x.internal_serialize::(&mut s)?; - s.end() + } + if optional && nothing { + return Ok(None); + } + let result = DropboxPasswordsPolicyChangedType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("description", &self.description)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for DropboxPasswordsPolicyChangedType { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = DropboxPasswordsPolicyChangedType; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a DropboxPasswordsPolicyChangedType struct") } - EventDetails::SecondaryEmailDeletedDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "secondary_email_deleted_details")?; - x.internal_serialize::(&mut s)?; - s.end() + fn visit_map>(self, map: V) -> Result { + DropboxPasswordsPolicyChangedType::internal_deserialize(map) } - EventDetails::SecondaryEmailVerifiedDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "secondary_email_verified_details")?; - x.internal_serialize::(&mut s)?; - s.end() + } + deserializer.deserialize_struct("DropboxPasswordsPolicyChangedType", DROPBOX_PASSWORDS_POLICY_CHANGED_TYPE_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for DropboxPasswordsPolicyChangedType { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("DropboxPasswordsPolicyChangedType", 1)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +/// Represents a time duration: unit and amount +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct DurationLogInfo { + /// Time unit. + pub unit: TimeUnit, + /// Amount of time. + pub amount: u64, +} + +impl DurationLogInfo { + pub fn new(unit: TimeUnit, amount: u64) -> Self { + DurationLogInfo { + unit, + amount, + } + } +} + +const DURATION_LOG_INFO_FIELDS: &[&str] = &["unit", + "amount"]; +impl DurationLogInfo { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_unit = None; + let mut field_amount = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "unit" => { + if field_unit.is_some() { + return Err(::serde::de::Error::duplicate_field("unit")); + } + field_unit = Some(map.next_value()?); + } + "amount" => { + if field_amount.is_some() { + return Err(::serde::de::Error::duplicate_field("amount")); + } + field_amount = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } } - EventDetails::SecondaryMailsPolicyChangedDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "secondary_mails_policy_changed_details")?; - x.internal_serialize::(&mut s)?; - s.end() + } + if optional && nothing { + return Ok(None); + } + let result = DurationLogInfo { + unit: field_unit.ok_or_else(|| ::serde::de::Error::missing_field("unit"))?, + amount: field_amount.ok_or_else(|| ::serde::de::Error::missing_field("amount"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("unit", &self.unit)?; + s.serialize_field("amount", &self.amount)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for DurationLogInfo { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = DurationLogInfo; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a DurationLogInfo struct") } - EventDetails::BinderAddPageDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 4)?; - s.serialize_field(".tag", "binder_add_page_details")?; - x.internal_serialize::(&mut s)?; - s.end() + fn visit_map>(self, map: V) -> Result { + DurationLogInfo::internal_deserialize(map) } - EventDetails::BinderAddSectionDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 4)?; - s.serialize_field(".tag", "binder_add_section_details")?; - x.internal_serialize::(&mut s)?; - s.end() + } + deserializer.deserialize_struct("DurationLogInfo", DURATION_LOG_INFO_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for DurationLogInfo { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("DurationLogInfo", 2)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +/// Policy for deciding whether a team can use Email to Dropbox feature +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // variants may be added in the future +pub enum EmailIngestPolicy { + Disabled, + Enabled, + /// Catch-all used for unrecognized values returned from the server. Encountering this value + /// typically indicates that this SDK version is out of date. + Other, +} + +impl<'de> ::serde::de::Deserialize<'de> for EmailIngestPolicy { + fn deserialize>(deserializer: D) -> Result { + // union deserializer + use serde::de::{self, MapAccess, Visitor}; + struct EnumVisitor; + impl<'de> Visitor<'de> for EnumVisitor { + type Value = EmailIngestPolicy; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a EmailIngestPolicy structure") } - EventDetails::BinderRemovePageDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 4)?; - s.serialize_field(".tag", "binder_remove_page_details")?; - x.internal_serialize::(&mut s)?; - s.end() + fn visit_map>(self, mut map: V) -> Result { + let tag: &str = match map.next_key()? { + Some(".tag") => map.next_value()?, + _ => return Err(de::Error::missing_field(".tag")) + }; + let value = match tag { + "disabled" => EmailIngestPolicy::Disabled, + "enabled" => EmailIngestPolicy::Enabled, + _ => EmailIngestPolicy::Other, + }; + crate::eat_json_fields(&mut map)?; + Ok(value) } - EventDetails::BinderRemoveSectionDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 4)?; - s.serialize_field(".tag", "binder_remove_section_details")?; - x.internal_serialize::(&mut s)?; + } + const VARIANTS: &[&str] = &["disabled", + "enabled", + "other"]; + deserializer.deserialize_struct("EmailIngestPolicy", VARIANTS, EnumVisitor) + } +} + +impl ::serde::ser::Serialize for EmailIngestPolicy { + fn serialize(&self, serializer: S) -> Result { + // union serializer + use serde::ser::SerializeStruct; + match self { + EmailIngestPolicy::Disabled => { + // unit + let mut s = serializer.serialize_struct("EmailIngestPolicy", 1)?; + s.serialize_field(".tag", "disabled")?; s.end() } - EventDetails::BinderRenamePageDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 5)?; - s.serialize_field(".tag", "binder_rename_page_details")?; - x.internal_serialize::(&mut s)?; + EmailIngestPolicy::Enabled => { + // unit + let mut s = serializer.serialize_struct("EmailIngestPolicy", 1)?; + s.serialize_field(".tag", "enabled")?; s.end() } - EventDetails::BinderRenameSectionDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 5)?; - s.serialize_field(".tag", "binder_rename_section_details")?; - x.internal_serialize::(&mut s)?; - s.end() + EmailIngestPolicy::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) + } + } +} + +/// Changed email to Dropbox policy for team. +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct EmailIngestPolicyChangedDetails { + /// To. + pub new_value: EmailIngestPolicy, + /// From. + pub previous_value: EmailIngestPolicy, +} + +impl EmailIngestPolicyChangedDetails { + pub fn new(new_value: EmailIngestPolicy, previous_value: EmailIngestPolicy) -> Self { + EmailIngestPolicyChangedDetails { + new_value, + previous_value, + } + } +} + +const EMAIL_INGEST_POLICY_CHANGED_DETAILS_FIELDS: &[&str] = &["new_value", + "previous_value"]; +impl EmailIngestPolicyChangedDetails { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_new_value = None; + let mut field_previous_value = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "new_value" => { + if field_new_value.is_some() { + return Err(::serde::de::Error::duplicate_field("new_value")); + } + field_new_value = Some(map.next_value()?); + } + "previous_value" => { + if field_previous_value.is_some() { + return Err(::serde::de::Error::duplicate_field("previous_value")); + } + field_previous_value = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } } - EventDetails::BinderReorderPageDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 4)?; - s.serialize_field(".tag", "binder_reorder_page_details")?; - x.internal_serialize::(&mut s)?; - s.end() + } + if optional && nothing { + return Ok(None); + } + let result = EmailIngestPolicyChangedDetails { + new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, + previous_value: field_previous_value.ok_or_else(|| ::serde::de::Error::missing_field("previous_value"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("new_value", &self.new_value)?; + s.serialize_field("previous_value", &self.previous_value)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for EmailIngestPolicyChangedDetails { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = EmailIngestPolicyChangedDetails; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a EmailIngestPolicyChangedDetails struct") } - EventDetails::BinderReorderSectionDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 4)?; - s.serialize_field(".tag", "binder_reorder_section_details")?; - x.internal_serialize::(&mut s)?; - s.end() + fn visit_map>(self, map: V) -> Result { + EmailIngestPolicyChangedDetails::internal_deserialize(map) } - EventDetails::PaperContentAddMemberDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "paper_content_add_member_details")?; - x.internal_serialize::(&mut s)?; - s.end() + } + deserializer.deserialize_struct("EmailIngestPolicyChangedDetails", EMAIL_INGEST_POLICY_CHANGED_DETAILS_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for EmailIngestPolicyChangedDetails { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("EmailIngestPolicyChangedDetails", 2)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct EmailIngestPolicyChangedType { + pub description: String, +} + +impl EmailIngestPolicyChangedType { + pub fn new(description: String) -> Self { + EmailIngestPolicyChangedType { + description, + } + } +} + +const EMAIL_INGEST_POLICY_CHANGED_TYPE_FIELDS: &[&str] = &["description"]; +impl EmailIngestPolicyChangedType { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_description = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); + } + field_description = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } } - EventDetails::PaperContentAddToFolderDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 4)?; - s.serialize_field(".tag", "paper_content_add_to_folder_details")?; - x.internal_serialize::(&mut s)?; - s.end() + } + if optional && nothing { + return Ok(None); + } + let result = EmailIngestPolicyChangedType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("description", &self.description)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for EmailIngestPolicyChangedType { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = EmailIngestPolicyChangedType; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a EmailIngestPolicyChangedType struct") } - EventDetails::PaperContentArchiveDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "paper_content_archive_details")?; - x.internal_serialize::(&mut s)?; - s.end() + fn visit_map>(self, map: V) -> Result { + EmailIngestPolicyChangedType::internal_deserialize(map) } - EventDetails::PaperContentCreateDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "paper_content_create_details")?; - x.internal_serialize::(&mut s)?; - s.end() + } + deserializer.deserialize_struct("EmailIngestPolicyChangedType", EMAIL_INGEST_POLICY_CHANGED_TYPE_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for EmailIngestPolicyChangedType { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("EmailIngestPolicyChangedType", 1)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +/// Received files via Email to Dropbox. +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct EmailIngestReceiveFileDetails { + /// Inbox name. + pub inbox_name: String, + /// Submitted file names. + pub attachment_names: Vec, + /// Subject of the email. + pub subject: Option, + /// The name as provided by the submitter. + pub from_name: Option, + /// The email as provided by the submitter. + pub from_email: Option, +} + +impl EmailIngestReceiveFileDetails { + pub fn new(inbox_name: String, attachment_names: Vec) -> Self { + EmailIngestReceiveFileDetails { + inbox_name, + attachment_names, + subject: None, + from_name: None, + from_email: None, + } + } + + pub fn with_subject(mut self, value: String) -> Self { + self.subject = Some(value); + self + } + + pub fn with_from_name(mut self, value: crate::types::common::DisplayNameLegacy) -> Self { + self.from_name = Some(value); + self + } + + pub fn with_from_email(mut self, value: EmailAddress) -> Self { + self.from_email = Some(value); + self + } +} + +const EMAIL_INGEST_RECEIVE_FILE_DETAILS_FIELDS: &[&str] = &["inbox_name", + "attachment_names", + "subject", + "from_name", + "from_email"]; +impl EmailIngestReceiveFileDetails { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_inbox_name = None; + let mut field_attachment_names = None; + let mut field_subject = None; + let mut field_from_name = None; + let mut field_from_email = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "inbox_name" => { + if field_inbox_name.is_some() { + return Err(::serde::de::Error::duplicate_field("inbox_name")); + } + field_inbox_name = Some(map.next_value()?); + } + "attachment_names" => { + if field_attachment_names.is_some() { + return Err(::serde::de::Error::duplicate_field("attachment_names")); + } + field_attachment_names = Some(map.next_value()?); + } + "subject" => { + if field_subject.is_some() { + return Err(::serde::de::Error::duplicate_field("subject")); + } + field_subject = Some(map.next_value()?); + } + "from_name" => { + if field_from_name.is_some() { + return Err(::serde::de::Error::duplicate_field("from_name")); + } + field_from_name = Some(map.next_value()?); + } + "from_email" => { + if field_from_email.is_some() { + return Err(::serde::de::Error::duplicate_field("from_email")); + } + field_from_email = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } } - EventDetails::PaperContentPermanentlyDeleteDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "paper_content_permanently_delete_details")?; - x.internal_serialize::(&mut s)?; - s.end() + } + if optional && nothing { + return Ok(None); + } + let result = EmailIngestReceiveFileDetails { + inbox_name: field_inbox_name.ok_or_else(|| ::serde::de::Error::missing_field("inbox_name"))?, + attachment_names: field_attachment_names.ok_or_else(|| ::serde::de::Error::missing_field("attachment_names"))?, + subject: field_subject.and_then(Option::flatten), + from_name: field_from_name.and_then(Option::flatten), + from_email: field_from_email.and_then(Option::flatten), + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("inbox_name", &self.inbox_name)?; + s.serialize_field("attachment_names", &self.attachment_names)?; + if let Some(val) = &self.subject { + s.serialize_field("subject", val)?; + } + if let Some(val) = &self.from_name { + s.serialize_field("from_name", val)?; + } + if let Some(val) = &self.from_email { + s.serialize_field("from_email", val)?; + } + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for EmailIngestReceiveFileDetails { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = EmailIngestReceiveFileDetails; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a EmailIngestReceiveFileDetails struct") } - EventDetails::PaperContentRemoveFromFolderDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 4)?; - s.serialize_field(".tag", "paper_content_remove_from_folder_details")?; - x.internal_serialize::(&mut s)?; - s.end() + fn visit_map>(self, map: V) -> Result { + EmailIngestReceiveFileDetails::internal_deserialize(map) } - EventDetails::PaperContentRemoveMemberDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "paper_content_remove_member_details")?; - x.internal_serialize::(&mut s)?; - s.end() + } + deserializer.deserialize_struct("EmailIngestReceiveFileDetails", EMAIL_INGEST_RECEIVE_FILE_DETAILS_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for EmailIngestReceiveFileDetails { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("EmailIngestReceiveFileDetails", 5)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct EmailIngestReceiveFileType { + pub description: String, +} + +impl EmailIngestReceiveFileType { + pub fn new(description: String) -> Self { + EmailIngestReceiveFileType { + description, + } + } +} + +const EMAIL_INGEST_RECEIVE_FILE_TYPE_FIELDS: &[&str] = &["description"]; +impl EmailIngestReceiveFileType { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_description = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); + } + field_description = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } } - EventDetails::PaperContentRenameDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "paper_content_rename_details")?; - x.internal_serialize::(&mut s)?; - s.end() + } + if optional && nothing { + return Ok(None); + } + let result = EmailIngestReceiveFileType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("description", &self.description)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for EmailIngestReceiveFileType { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = EmailIngestReceiveFileType; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a EmailIngestReceiveFileType struct") } - EventDetails::PaperContentRestoreDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "paper_content_restore_details")?; - x.internal_serialize::(&mut s)?; - s.end() + fn visit_map>(self, map: V) -> Result { + EmailIngestReceiveFileType::internal_deserialize(map) } - EventDetails::PaperDocAddCommentDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "paper_doc_add_comment_details")?; - x.internal_serialize::(&mut s)?; - s.end() + } + deserializer.deserialize_struct("EmailIngestReceiveFileType", EMAIL_INGEST_RECEIVE_FILE_TYPE_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for EmailIngestReceiveFileType { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("EmailIngestReceiveFileType", 1)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +/// Added members to EMM exception list. +#[derive(Debug, Clone, PartialEq, Eq, Default)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct EmmAddExceptionDetails { +} + +const EMM_ADD_EXCEPTION_DETAILS_FIELDS: &[&str] = &[]; +impl EmmAddExceptionDetails { + // no _opt deserializer + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + ) -> Result { + // ignore any fields found; none are presently recognized + crate::eat_json_fields(&mut map)?; + Ok(EmmAddExceptionDetails {}) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for EmmAddExceptionDetails { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = EmmAddExceptionDetails; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a EmmAddExceptionDetails struct") } - EventDetails::PaperDocChangeMemberRoleDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "paper_doc_change_member_role_details")?; - x.internal_serialize::(&mut s)?; - s.end() + fn visit_map>(self, map: V) -> Result { + EmmAddExceptionDetails::internal_deserialize(map) } - EventDetails::PaperDocChangeSharingPolicyDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 4)?; - s.serialize_field(".tag", "paper_doc_change_sharing_policy_details")?; - x.internal_serialize::(&mut s)?; - s.end() + } + deserializer.deserialize_struct("EmmAddExceptionDetails", EMM_ADD_EXCEPTION_DETAILS_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for EmmAddExceptionDetails { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + serializer.serialize_struct("EmmAddExceptionDetails", 0)?.end() + } +} + +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct EmmAddExceptionType { + pub description: String, +} + +impl EmmAddExceptionType { + pub fn new(description: String) -> Self { + EmmAddExceptionType { + description, + } + } +} + +const EMM_ADD_EXCEPTION_TYPE_FIELDS: &[&str] = &["description"]; +impl EmmAddExceptionType { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_description = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); + } + field_description = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } } - EventDetails::PaperDocChangeSubscriptionDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 4)?; - s.serialize_field(".tag", "paper_doc_change_subscription_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::PaperDocDeletedDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "paper_doc_deleted_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::PaperDocDeleteCommentDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "paper_doc_delete_comment_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::PaperDocDownloadDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "paper_doc_download_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::PaperDocEditDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "paper_doc_edit_details")?; - x.internal_serialize::(&mut s)?; - s.end() + } + if optional && nothing { + return Ok(None); + } + let result = EmmAddExceptionType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("description", &self.description)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for EmmAddExceptionType { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = EmmAddExceptionType; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a EmmAddExceptionType struct") } - EventDetails::PaperDocEditCommentDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "paper_doc_edit_comment_details")?; - x.internal_serialize::(&mut s)?; - s.end() + fn visit_map>(self, map: V) -> Result { + EmmAddExceptionType::internal_deserialize(map) } - EventDetails::PaperDocFollowedDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "paper_doc_followed_details")?; - x.internal_serialize::(&mut s)?; - s.end() + } + deserializer.deserialize_struct("EmmAddExceptionType", EMM_ADD_EXCEPTION_TYPE_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for EmmAddExceptionType { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("EmmAddExceptionType", 1)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +/// Enabled/disabled enterprise mobility management for members. +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct EmmChangePolicyDetails { + /// New enterprise mobility management policy. + pub new_value: crate::types::team_policies::EmmState, + /// Previous enterprise mobility management policy. Might be missing due to historical data gap. + pub previous_value: Option, +} + +impl EmmChangePolicyDetails { + pub fn new(new_value: crate::types::team_policies::EmmState) -> Self { + EmmChangePolicyDetails { + new_value, + previous_value: None, + } + } + + pub fn with_previous_value(mut self, value: crate::types::team_policies::EmmState) -> Self { + self.previous_value = Some(value); + self + } +} + +const EMM_CHANGE_POLICY_DETAILS_FIELDS: &[&str] = &["new_value", + "previous_value"]; +impl EmmChangePolicyDetails { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_new_value = None; + let mut field_previous_value = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "new_value" => { + if field_new_value.is_some() { + return Err(::serde::de::Error::duplicate_field("new_value")); + } + field_new_value = Some(map.next_value()?); + } + "previous_value" => { + if field_previous_value.is_some() { + return Err(::serde::de::Error::duplicate_field("previous_value")); + } + field_previous_value = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } } - EventDetails::PaperDocMentionDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "paper_doc_mention_details")?; - x.internal_serialize::(&mut s)?; - s.end() + } + if optional && nothing { + return Ok(None); + } + let result = EmmChangePolicyDetails { + new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, + previous_value: field_previous_value.and_then(Option::flatten), + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("new_value", &self.new_value)?; + if let Some(val) = &self.previous_value { + s.serialize_field("previous_value", val)?; + } + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for EmmChangePolicyDetails { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = EmmChangePolicyDetails; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a EmmChangePolicyDetails struct") } - EventDetails::PaperDocOwnershipChangedDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 4)?; - s.serialize_field(".tag", "paper_doc_ownership_changed_details")?; - x.internal_serialize::(&mut s)?; - s.end() + fn visit_map>(self, map: V) -> Result { + EmmChangePolicyDetails::internal_deserialize(map) } - EventDetails::PaperDocRequestAccessDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "paper_doc_request_access_details")?; - x.internal_serialize::(&mut s)?; - s.end() + } + deserializer.deserialize_struct("EmmChangePolicyDetails", EMM_CHANGE_POLICY_DETAILS_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for EmmChangePolicyDetails { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("EmmChangePolicyDetails", 2)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct EmmChangePolicyType { + pub description: String, +} + +impl EmmChangePolicyType { + pub fn new(description: String) -> Self { + EmmChangePolicyType { + description, + } + } +} + +const EMM_CHANGE_POLICY_TYPE_FIELDS: &[&str] = &["description"]; +impl EmmChangePolicyType { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_description = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); + } + field_description = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } } - EventDetails::PaperDocResolveCommentDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "paper_doc_resolve_comment_details")?; - x.internal_serialize::(&mut s)?; - s.end() + } + if optional && nothing { + return Ok(None); + } + let result = EmmChangePolicyType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("description", &self.description)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for EmmChangePolicyType { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = EmmChangePolicyType; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a EmmChangePolicyType struct") } - EventDetails::PaperDocRevertDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "paper_doc_revert_details")?; - x.internal_serialize::(&mut s)?; - s.end() + fn visit_map>(self, map: V) -> Result { + EmmChangePolicyType::internal_deserialize(map) } - EventDetails::PaperDocSlackShareDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "paper_doc_slack_share_details")?; - x.internal_serialize::(&mut s)?; - s.end() + } + deserializer.deserialize_struct("EmmChangePolicyType", EMM_CHANGE_POLICY_TYPE_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for EmmChangePolicyType { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("EmmChangePolicyType", 1)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +/// Created EMM-excluded users report. +#[derive(Debug, Clone, PartialEq, Eq, Default)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct EmmCreateExceptionsReportDetails { +} + +const EMM_CREATE_EXCEPTIONS_REPORT_DETAILS_FIELDS: &[&str] = &[]; +impl EmmCreateExceptionsReportDetails { + // no _opt deserializer + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + ) -> Result { + // ignore any fields found; none are presently recognized + crate::eat_json_fields(&mut map)?; + Ok(EmmCreateExceptionsReportDetails {}) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for EmmCreateExceptionsReportDetails { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = EmmCreateExceptionsReportDetails; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a EmmCreateExceptionsReportDetails struct") } - EventDetails::PaperDocTeamInviteDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "paper_doc_team_invite_details")?; - x.internal_serialize::(&mut s)?; - s.end() + fn visit_map>(self, map: V) -> Result { + EmmCreateExceptionsReportDetails::internal_deserialize(map) } - EventDetails::PaperDocTrashedDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "paper_doc_trashed_details")?; - x.internal_serialize::(&mut s)?; - s.end() + } + deserializer.deserialize_struct("EmmCreateExceptionsReportDetails", EMM_CREATE_EXCEPTIONS_REPORT_DETAILS_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for EmmCreateExceptionsReportDetails { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + serializer.serialize_struct("EmmCreateExceptionsReportDetails", 0)?.end() + } +} + +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct EmmCreateExceptionsReportType { + pub description: String, +} + +impl EmmCreateExceptionsReportType { + pub fn new(description: String) -> Self { + EmmCreateExceptionsReportType { + description, + } + } +} + +const EMM_CREATE_EXCEPTIONS_REPORT_TYPE_FIELDS: &[&str] = &["description"]; +impl EmmCreateExceptionsReportType { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_description = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); + } + field_description = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } } - EventDetails::PaperDocUnresolveCommentDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "paper_doc_unresolve_comment_details")?; - x.internal_serialize::(&mut s)?; - s.end() + } + if optional && nothing { + return Ok(None); + } + let result = EmmCreateExceptionsReportType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("description", &self.description)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for EmmCreateExceptionsReportType { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = EmmCreateExceptionsReportType; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a EmmCreateExceptionsReportType struct") } - EventDetails::PaperDocUntrashedDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "paper_doc_untrashed_details")?; - x.internal_serialize::(&mut s)?; - s.end() + fn visit_map>(self, map: V) -> Result { + EmmCreateExceptionsReportType::internal_deserialize(map) } - EventDetails::PaperDocViewDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "paper_doc_view_details")?; - x.internal_serialize::(&mut s)?; - s.end() + } + deserializer.deserialize_struct("EmmCreateExceptionsReportType", EMM_CREATE_EXCEPTIONS_REPORT_TYPE_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for EmmCreateExceptionsReportType { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("EmmCreateExceptionsReportType", 1)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +/// Created EMM mobile app usage report. +#[derive(Debug, Clone, PartialEq, Eq, Default)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct EmmCreateUsageReportDetails { +} + +const EMM_CREATE_USAGE_REPORT_DETAILS_FIELDS: &[&str] = &[]; +impl EmmCreateUsageReportDetails { + // no _opt deserializer + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + ) -> Result { + // ignore any fields found; none are presently recognized + crate::eat_json_fields(&mut map)?; + Ok(EmmCreateUsageReportDetails {}) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for EmmCreateUsageReportDetails { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = EmmCreateUsageReportDetails; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a EmmCreateUsageReportDetails struct") } - EventDetails::PaperExternalViewAllowDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "paper_external_view_allow_details")?; - x.internal_serialize::(&mut s)?; - s.end() + fn visit_map>(self, map: V) -> Result { + EmmCreateUsageReportDetails::internal_deserialize(map) } - EventDetails::PaperExternalViewDefaultTeamDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "paper_external_view_default_team_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::PaperExternalViewForbidDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "paper_external_view_forbid_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::PaperFolderChangeSubscriptionDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 4)?; - s.serialize_field(".tag", "paper_folder_change_subscription_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::PaperFolderDeletedDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "paper_folder_deleted_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::PaperFolderFollowedDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "paper_folder_followed_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::PaperFolderTeamInviteDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "paper_folder_team_invite_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::PaperPublishedLinkChangePermissionDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 4)?; - s.serialize_field(".tag", "paper_published_link_change_permission_details")?; - x.internal_serialize::(&mut s)?; - s.end() + } + deserializer.deserialize_struct("EmmCreateUsageReportDetails", EMM_CREATE_USAGE_REPORT_DETAILS_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for EmmCreateUsageReportDetails { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + serializer.serialize_struct("EmmCreateUsageReportDetails", 0)?.end() + } +} + +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct EmmCreateUsageReportType { + pub description: String, +} + +impl EmmCreateUsageReportType { + pub fn new(description: String) -> Self { + EmmCreateUsageReportType { + description, + } + } +} + +const EMM_CREATE_USAGE_REPORT_TYPE_FIELDS: &[&str] = &["description"]; +impl EmmCreateUsageReportType { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_description = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); + } + field_description = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } } - EventDetails::PaperPublishedLinkCreateDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "paper_published_link_create_details")?; - x.internal_serialize::(&mut s)?; - s.end() + } + if optional && nothing { + return Ok(None); + } + let result = EmmCreateUsageReportType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("description", &self.description)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for EmmCreateUsageReportType { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = EmmCreateUsageReportType; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a EmmCreateUsageReportType struct") } - EventDetails::PaperPublishedLinkDisabledDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "paper_published_link_disabled_details")?; - x.internal_serialize::(&mut s)?; - s.end() + fn visit_map>(self, map: V) -> Result { + EmmCreateUsageReportType::internal_deserialize(map) } - EventDetails::PaperPublishedLinkViewDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "paper_published_link_view_details")?; - x.internal_serialize::(&mut s)?; - s.end() + } + deserializer.deserialize_struct("EmmCreateUsageReportType", EMM_CREATE_USAGE_REPORT_TYPE_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for EmmCreateUsageReportType { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("EmmCreateUsageReportType", 1)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +/// Failed to sign in via EMM. +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct EmmErrorDetails { + /// Error details. + pub error_details: FailureDetailsLogInfo, +} + +impl EmmErrorDetails { + pub fn new(error_details: FailureDetailsLogInfo) -> Self { + EmmErrorDetails { + error_details, + } + } +} + +const EMM_ERROR_DETAILS_FIELDS: &[&str] = &["error_details"]; +impl EmmErrorDetails { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_error_details = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "error_details" => { + if field_error_details.is_some() { + return Err(::serde::de::Error::duplicate_field("error_details")); + } + field_error_details = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } } - EventDetails::PasswordChangeDetails(_) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 1)?; - s.serialize_field(".tag", "password_change_details")?; - s.end() + } + if optional && nothing { + return Ok(None); + } + let result = EmmErrorDetails { + error_details: field_error_details.ok_or_else(|| ::serde::de::Error::missing_field("error_details"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("error_details", &self.error_details)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for EmmErrorDetails { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = EmmErrorDetails; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a EmmErrorDetails struct") } - EventDetails::PasswordResetDetails(_) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 1)?; - s.serialize_field(".tag", "password_reset_details")?; - s.end() + fn visit_map>(self, map: V) -> Result { + EmmErrorDetails::internal_deserialize(map) } - EventDetails::PasswordResetAllDetails(_) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 1)?; - s.serialize_field(".tag", "password_reset_all_details")?; - s.end() + } + deserializer.deserialize_struct("EmmErrorDetails", EMM_ERROR_DETAILS_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for EmmErrorDetails { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("EmmErrorDetails", 1)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct EmmErrorType { + pub description: String, +} + +impl EmmErrorType { + pub fn new(description: String) -> Self { + EmmErrorType { + description, + } + } +} + +const EMM_ERROR_TYPE_FIELDS: &[&str] = &["description"]; +impl EmmErrorType { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_description = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); + } + field_description = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } } - EventDetails::ClassificationCreateReportDetails(_) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 1)?; - s.serialize_field(".tag", "classification_create_report_details")?; - s.end() + } + if optional && nothing { + return Ok(None); + } + let result = EmmErrorType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("description", &self.description)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for EmmErrorType { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = EmmErrorType; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a EmmErrorType struct") } - EventDetails::ClassificationCreateReportFailDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "classification_create_report_fail_details")?; - x.internal_serialize::(&mut s)?; - s.end() + fn visit_map>(self, map: V) -> Result { + EmmErrorType::internal_deserialize(map) } - EventDetails::EmmCreateExceptionsReportDetails(_) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 1)?; - s.serialize_field(".tag", "emm_create_exceptions_report_details")?; - s.end() + } + deserializer.deserialize_struct("EmmErrorType", EMM_ERROR_TYPE_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for EmmErrorType { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("EmmErrorType", 1)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +/// Refreshed auth token used for setting up EMM. +#[derive(Debug, Clone, PartialEq, Eq, Default)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct EmmRefreshAuthTokenDetails { +} + +const EMM_REFRESH_AUTH_TOKEN_DETAILS_FIELDS: &[&str] = &[]; +impl EmmRefreshAuthTokenDetails { + // no _opt deserializer + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + ) -> Result { + // ignore any fields found; none are presently recognized + crate::eat_json_fields(&mut map)?; + Ok(EmmRefreshAuthTokenDetails {}) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for EmmRefreshAuthTokenDetails { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = EmmRefreshAuthTokenDetails; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a EmmRefreshAuthTokenDetails struct") } - EventDetails::EmmCreateUsageReportDetails(_) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 1)?; - s.serialize_field(".tag", "emm_create_usage_report_details")?; - s.end() + fn visit_map>(self, map: V) -> Result { + EmmRefreshAuthTokenDetails::internal_deserialize(map) } - EventDetails::ExportMembersReportDetails(_) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 1)?; - s.serialize_field(".tag", "export_members_report_details")?; - s.end() + } + deserializer.deserialize_struct("EmmRefreshAuthTokenDetails", EMM_REFRESH_AUTH_TOKEN_DETAILS_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for EmmRefreshAuthTokenDetails { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + serializer.serialize_struct("EmmRefreshAuthTokenDetails", 0)?.end() + } +} + +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct EmmRefreshAuthTokenType { + pub description: String, +} + +impl EmmRefreshAuthTokenType { + pub fn new(description: String) -> Self { + EmmRefreshAuthTokenType { + description, + } + } +} + +const EMM_REFRESH_AUTH_TOKEN_TYPE_FIELDS: &[&str] = &["description"]; +impl EmmRefreshAuthTokenType { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_description = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); + } + field_description = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } } - EventDetails::ExportMembersReportFailDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "export_members_report_fail_details")?; - x.internal_serialize::(&mut s)?; - s.end() + } + if optional && nothing { + return Ok(None); + } + let result = EmmRefreshAuthTokenType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("description", &self.description)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for EmmRefreshAuthTokenType { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = EmmRefreshAuthTokenType; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a EmmRefreshAuthTokenType struct") } - EventDetails::ExternalSharingCreateReportDetails(_) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 1)?; - s.serialize_field(".tag", "external_sharing_create_report_details")?; - s.end() + fn visit_map>(self, map: V) -> Result { + EmmRefreshAuthTokenType::internal_deserialize(map) } - EventDetails::ExternalSharingReportFailedDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "external_sharing_report_failed_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::NoExpirationLinkGenCreateReportDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "no_expiration_link_gen_create_report_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::NoExpirationLinkGenReportFailedDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "no_expiration_link_gen_report_failed_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::NoPasswordLinkGenCreateReportDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "no_password_link_gen_create_report_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::NoPasswordLinkGenReportFailedDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "no_password_link_gen_report_failed_details")?; - x.internal_serialize::(&mut s)?; - s.end() + } + deserializer.deserialize_struct("EmmRefreshAuthTokenType", EMM_REFRESH_AUTH_TOKEN_TYPE_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for EmmRefreshAuthTokenType { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("EmmRefreshAuthTokenType", 1)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +/// Removed members from EMM exception list. +#[derive(Debug, Clone, PartialEq, Eq, Default)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct EmmRemoveExceptionDetails { +} + +const EMM_REMOVE_EXCEPTION_DETAILS_FIELDS: &[&str] = &[]; +impl EmmRemoveExceptionDetails { + // no _opt deserializer + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + ) -> Result { + // ignore any fields found; none are presently recognized + crate::eat_json_fields(&mut map)?; + Ok(EmmRemoveExceptionDetails {}) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for EmmRemoveExceptionDetails { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = EmmRemoveExceptionDetails; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a EmmRemoveExceptionDetails struct") } - EventDetails::NoPasswordLinkViewCreateReportDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "no_password_link_view_create_report_details")?; - x.internal_serialize::(&mut s)?; - s.end() + fn visit_map>(self, map: V) -> Result { + EmmRemoveExceptionDetails::internal_deserialize(map) } - EventDetails::NoPasswordLinkViewReportFailedDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "no_password_link_view_report_failed_details")?; - x.internal_serialize::(&mut s)?; - s.end() + } + deserializer.deserialize_struct("EmmRemoveExceptionDetails", EMM_REMOVE_EXCEPTION_DETAILS_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for EmmRemoveExceptionDetails { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + serializer.serialize_struct("EmmRemoveExceptionDetails", 0)?.end() + } +} + +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct EmmRemoveExceptionType { + pub description: String, +} + +impl EmmRemoveExceptionType { + pub fn new(description: String) -> Self { + EmmRemoveExceptionType { + description, + } + } +} + +const EMM_REMOVE_EXCEPTION_TYPE_FIELDS: &[&str] = &["description"]; +impl EmmRemoveExceptionType { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_description = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); + } + field_description = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } } - EventDetails::OutdatedLinkViewCreateReportDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "outdated_link_view_create_report_details")?; - x.internal_serialize::(&mut s)?; - s.end() + } + if optional && nothing { + return Ok(None); + } + let result = EmmRemoveExceptionType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("description", &self.description)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for EmmRemoveExceptionType { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = EmmRemoveExceptionType; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a EmmRemoveExceptionType struct") } - EventDetails::OutdatedLinkViewReportFailedDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "outdated_link_view_report_failed_details")?; - x.internal_serialize::(&mut s)?; - s.end() + fn visit_map>(self, map: V) -> Result { + EmmRemoveExceptionType::internal_deserialize(map) } - EventDetails::PaperAdminExportStartDetails(_) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 1)?; - s.serialize_field(".tag", "paper_admin_export_start_details")?; - s.end() + } + deserializer.deserialize_struct("EmmRemoveExceptionType", EMM_REMOVE_EXCEPTION_TYPE_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for EmmRemoveExceptionType { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("EmmRemoveExceptionType", 1)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +/// Enabled domain invites. +#[derive(Debug, Clone, PartialEq, Eq, Default)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct EnabledDomainInvitesDetails { +} + +const ENABLED_DOMAIN_INVITES_DETAILS_FIELDS: &[&str] = &[]; +impl EnabledDomainInvitesDetails { + // no _opt deserializer + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + ) -> Result { + // ignore any fields found; none are presently recognized + crate::eat_json_fields(&mut map)?; + Ok(EnabledDomainInvitesDetails {}) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for EnabledDomainInvitesDetails { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = EnabledDomainInvitesDetails; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a EnabledDomainInvitesDetails struct") } - EventDetails::RansomwareAlertCreateReportDetails(_) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 1)?; - s.serialize_field(".tag", "ransomware_alert_create_report_details")?; - s.end() + fn visit_map>(self, map: V) -> Result { + EnabledDomainInvitesDetails::internal_deserialize(map) } - EventDetails::RansomwareAlertCreateReportFailedDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "ransomware_alert_create_report_failed_details")?; - x.internal_serialize::(&mut s)?; - s.end() + } + deserializer.deserialize_struct("EnabledDomainInvitesDetails", ENABLED_DOMAIN_INVITES_DETAILS_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for EnabledDomainInvitesDetails { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + serializer.serialize_struct("EnabledDomainInvitesDetails", 0)?.end() + } +} + +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct EnabledDomainInvitesType { + pub description: String, +} + +impl EnabledDomainInvitesType { + pub fn new(description: String) -> Self { + EnabledDomainInvitesType { + description, + } + } +} + +const ENABLED_DOMAIN_INVITES_TYPE_FIELDS: &[&str] = &["description"]; +impl EnabledDomainInvitesType { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_description = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); + } + field_description = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } } - EventDetails::SmartSyncCreateAdminPrivilegeReportDetails(_) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 1)?; - s.serialize_field(".tag", "smart_sync_create_admin_privilege_report_details")?; - s.end() + } + if optional && nothing { + return Ok(None); + } + let result = EnabledDomainInvitesType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("description", &self.description)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for EnabledDomainInvitesType { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = EnabledDomainInvitesType; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a EnabledDomainInvitesType struct") } - EventDetails::TeamActivityCreateReportDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "team_activity_create_report_details")?; - x.internal_serialize::(&mut s)?; - s.end() + fn visit_map>(self, map: V) -> Result { + EnabledDomainInvitesType::internal_deserialize(map) } - EventDetails::TeamActivityCreateReportFailDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "team_activity_create_report_fail_details")?; - x.internal_serialize::(&mut s)?; - s.end() + } + deserializer.deserialize_struct("EnabledDomainInvitesType", ENABLED_DOMAIN_INVITES_TYPE_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for EnabledDomainInvitesType { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("EnabledDomainInvitesType", 1)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +/// Canceled team key rotation. +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct EncryptedFolderCancelTeamKeyRotationDetails { + /// Identifier of the team key. + pub team_key_id: String, +} + +impl EncryptedFolderCancelTeamKeyRotationDetails { + pub fn new(team_key_id: String) -> Self { + EncryptedFolderCancelTeamKeyRotationDetails { + team_key_id, + } + } +} + +const ENCRYPTED_FOLDER_CANCEL_TEAM_KEY_ROTATION_DETAILS_FIELDS: &[&str] = &["team_key_id"]; +impl EncryptedFolderCancelTeamKeyRotationDetails { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_team_key_id = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "team_key_id" => { + if field_team_key_id.is_some() { + return Err(::serde::de::Error::duplicate_field("team_key_id")); + } + field_team_key_id = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } } - EventDetails::CollectionShareDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "collection_share_details")?; - x.internal_serialize::(&mut s)?; - s.end() + } + if optional && nothing { + return Ok(None); + } + let result = EncryptedFolderCancelTeamKeyRotationDetails { + team_key_id: field_team_key_id.ok_or_else(|| ::serde::de::Error::missing_field("team_key_id"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("team_key_id", &self.team_key_id)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for EncryptedFolderCancelTeamKeyRotationDetails { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = EncryptedFolderCancelTeamKeyRotationDetails; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a EncryptedFolderCancelTeamKeyRotationDetails struct") } - EventDetails::FileTransfersFileAddDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "file_transfers_file_add_details")?; - x.internal_serialize::(&mut s)?; - s.end() + fn visit_map>(self, map: V) -> Result { + EncryptedFolderCancelTeamKeyRotationDetails::internal_deserialize(map) } - EventDetails::FileTransfersTransferDeleteDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "file_transfers_transfer_delete_details")?; - x.internal_serialize::(&mut s)?; - s.end() + } + deserializer.deserialize_struct("EncryptedFolderCancelTeamKeyRotationDetails", ENCRYPTED_FOLDER_CANCEL_TEAM_KEY_ROTATION_DETAILS_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for EncryptedFolderCancelTeamKeyRotationDetails { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("EncryptedFolderCancelTeamKeyRotationDetails", 1)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct EncryptedFolderCancelTeamKeyRotationType { + pub description: String, +} + +impl EncryptedFolderCancelTeamKeyRotationType { + pub fn new(description: String) -> Self { + EncryptedFolderCancelTeamKeyRotationType { + description, + } + } +} + +const ENCRYPTED_FOLDER_CANCEL_TEAM_KEY_ROTATION_TYPE_FIELDS: &[&str] = &["description"]; +impl EncryptedFolderCancelTeamKeyRotationType { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_description = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); + } + field_description = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } } - EventDetails::FileTransfersTransferDownloadDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "file_transfers_transfer_download_details")?; - x.internal_serialize::(&mut s)?; - s.end() + } + if optional && nothing { + return Ok(None); + } + let result = EncryptedFolderCancelTeamKeyRotationType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("description", &self.description)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for EncryptedFolderCancelTeamKeyRotationType { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = EncryptedFolderCancelTeamKeyRotationType; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a EncryptedFolderCancelTeamKeyRotationType struct") } - EventDetails::FileTransfersTransferSendDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "file_transfers_transfer_send_details")?; - x.internal_serialize::(&mut s)?; - s.end() + fn visit_map>(self, map: V) -> Result { + EncryptedFolderCancelTeamKeyRotationType::internal_deserialize(map) } - EventDetails::FileTransfersTransferViewDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "file_transfers_transfer_view_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::NoteAclInviteOnlyDetails(_) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 1)?; - s.serialize_field(".tag", "note_acl_invite_only_details")?; - s.end() + } + deserializer.deserialize_struct("EncryptedFolderCancelTeamKeyRotationType", ENCRYPTED_FOLDER_CANCEL_TEAM_KEY_ROTATION_TYPE_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for EncryptedFolderCancelTeamKeyRotationType { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("EncryptedFolderCancelTeamKeyRotationType", 1)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +/// Added recovery key. +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct EncryptedFolderEnrollBackupKeyDetails { + /// Identifier of the recovery key. + pub backup_key_id: String, +} + +impl EncryptedFolderEnrollBackupKeyDetails { + pub fn new(backup_key_id: String) -> Self { + EncryptedFolderEnrollBackupKeyDetails { + backup_key_id, + } + } +} + +const ENCRYPTED_FOLDER_ENROLL_BACKUP_KEY_DETAILS_FIELDS: &[&str] = &["backup_key_id"]; +impl EncryptedFolderEnrollBackupKeyDetails { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_backup_key_id = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "backup_key_id" => { + if field_backup_key_id.is_some() { + return Err(::serde::de::Error::duplicate_field("backup_key_id")); + } + field_backup_key_id = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } } - EventDetails::NoteAclLinkDetails(_) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 1)?; - s.serialize_field(".tag", "note_acl_link_details")?; - s.end() + } + if optional && nothing { + return Ok(None); + } + let result = EncryptedFolderEnrollBackupKeyDetails { + backup_key_id: field_backup_key_id.ok_or_else(|| ::serde::de::Error::missing_field("backup_key_id"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("backup_key_id", &self.backup_key_id)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for EncryptedFolderEnrollBackupKeyDetails { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = EncryptedFolderEnrollBackupKeyDetails; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a EncryptedFolderEnrollBackupKeyDetails struct") } - EventDetails::NoteAclTeamLinkDetails(_) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 1)?; - s.serialize_field(".tag", "note_acl_team_link_details")?; - s.end() + fn visit_map>(self, map: V) -> Result { + EncryptedFolderEnrollBackupKeyDetails::internal_deserialize(map) } - EventDetails::NoteSharedDetails(_) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 1)?; - s.serialize_field(".tag", "note_shared_details")?; - s.end() + } + deserializer.deserialize_struct("EncryptedFolderEnrollBackupKeyDetails", ENCRYPTED_FOLDER_ENROLL_BACKUP_KEY_DETAILS_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for EncryptedFolderEnrollBackupKeyDetails { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("EncryptedFolderEnrollBackupKeyDetails", 1)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct EncryptedFolderEnrollBackupKeyType { + pub description: String, +} + +impl EncryptedFolderEnrollBackupKeyType { + pub fn new(description: String) -> Self { + EncryptedFolderEnrollBackupKeyType { + description, + } + } +} + +const ENCRYPTED_FOLDER_ENROLL_BACKUP_KEY_TYPE_FIELDS: &[&str] = &["description"]; +impl EncryptedFolderEnrollBackupKeyType { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_description = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); + } + field_description = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } } - EventDetails::NoteShareReceiveDetails(_) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 1)?; - s.serialize_field(".tag", "note_share_receive_details")?; - s.end() + } + if optional && nothing { + return Ok(None); + } + let result = EncryptedFolderEnrollBackupKeyType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("description", &self.description)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for EncryptedFolderEnrollBackupKeyType { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = EncryptedFolderEnrollBackupKeyType; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a EncryptedFolderEnrollBackupKeyType struct") } - EventDetails::OpenNoteSharedDetails(_) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 1)?; - s.serialize_field(".tag", "open_note_shared_details")?; - s.end() + fn visit_map>(self, map: V) -> Result { + EncryptedFolderEnrollBackupKeyType::internal_deserialize(map) } - EventDetails::ReplayFileSharedLinkCreatedDetails(_) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 1)?; - s.serialize_field(".tag", "replay_file_shared_link_created_details")?; - s.end() + } + deserializer.deserialize_struct("EncryptedFolderEnrollBackupKeyType", ENCRYPTED_FOLDER_ENROLL_BACKUP_KEY_TYPE_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for EncryptedFolderEnrollBackupKeyType { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("EncryptedFolderEnrollBackupKeyType", 1)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +/// Enrolled device. +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct EncryptedFolderEnrollClientDetails { + /// Identifier of the client key. + pub client_key_id: String, +} + +impl EncryptedFolderEnrollClientDetails { + pub fn new(client_key_id: String) -> Self { + EncryptedFolderEnrollClientDetails { + client_key_id, + } + } +} + +const ENCRYPTED_FOLDER_ENROLL_CLIENT_DETAILS_FIELDS: &[&str] = &["client_key_id"]; +impl EncryptedFolderEnrollClientDetails { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_client_key_id = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "client_key_id" => { + if field_client_key_id.is_some() { + return Err(::serde::de::Error::duplicate_field("client_key_id")); + } + field_client_key_id = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } } - EventDetails::ReplayFileSharedLinkModifiedDetails(_) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 1)?; - s.serialize_field(".tag", "replay_file_shared_link_modified_details")?; - s.end() + } + if optional && nothing { + return Ok(None); + } + let result = EncryptedFolderEnrollClientDetails { + client_key_id: field_client_key_id.ok_or_else(|| ::serde::de::Error::missing_field("client_key_id"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("client_key_id", &self.client_key_id)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for EncryptedFolderEnrollClientDetails { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = EncryptedFolderEnrollClientDetails; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a EncryptedFolderEnrollClientDetails struct") } - EventDetails::ReplayProjectTeamAddDetails(_) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 1)?; - s.serialize_field(".tag", "replay_project_team_add_details")?; - s.end() + fn visit_map>(self, map: V) -> Result { + EncryptedFolderEnrollClientDetails::internal_deserialize(map) } - EventDetails::ReplayProjectTeamDeleteDetails(_) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 1)?; - s.serialize_field(".tag", "replay_project_team_delete_details")?; - s.end() + } + deserializer.deserialize_struct("EncryptedFolderEnrollClientDetails", ENCRYPTED_FOLDER_ENROLL_CLIENT_DETAILS_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for EncryptedFolderEnrollClientDetails { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("EncryptedFolderEnrollClientDetails", 1)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct EncryptedFolderEnrollClientType { + pub description: String, +} + +impl EncryptedFolderEnrollClientType { + pub fn new(description: String) -> Self { + EncryptedFolderEnrollClientType { + description, + } + } +} + +const ENCRYPTED_FOLDER_ENROLL_CLIENT_TYPE_FIELDS: &[&str] = &["description"]; +impl EncryptedFolderEnrollClientType { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_description = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); + } + field_description = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } } - EventDetails::SfAddGroupDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 5)?; - s.serialize_field(".tag", "sf_add_group_details")?; - x.internal_serialize::(&mut s)?; - s.end() + } + if optional && nothing { + return Ok(None); + } + let result = EncryptedFolderEnrollClientType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("description", &self.description)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for EncryptedFolderEnrollClientType { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = EncryptedFolderEnrollClientType; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a EncryptedFolderEnrollClientType struct") } - EventDetails::SfAllowNonMembersToViewSharedLinksDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 4)?; - s.serialize_field(".tag", "sf_allow_non_members_to_view_shared_links_details")?; - x.internal_serialize::(&mut s)?; - s.end() + fn visit_map>(self, map: V) -> Result { + EncryptedFolderEnrollClientType::internal_deserialize(map) } - EventDetails::SfExternalInviteWarnDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 5)?; - s.serialize_field(".tag", "sf_external_invite_warn_details")?; - x.internal_serialize::(&mut s)?; - s.end() + } + deserializer.deserialize_struct("EncryptedFolderEnrollClientType", ENCRYPTED_FOLDER_ENROLL_CLIENT_TYPE_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for EncryptedFolderEnrollClientType { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("EncryptedFolderEnrollClientType", 1)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +/// Activated team folder encryption. +#[derive(Debug, Clone, PartialEq, Eq, Default)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct EncryptedFolderEnrollTeamDetails { +} + +const ENCRYPTED_FOLDER_ENROLL_TEAM_DETAILS_FIELDS: &[&str] = &[]; +impl EncryptedFolderEnrollTeamDetails { + // no _opt deserializer + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + ) -> Result { + // ignore any fields found; none are presently recognized + crate::eat_json_fields(&mut map)?; + Ok(EncryptedFolderEnrollTeamDetails {}) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for EncryptedFolderEnrollTeamDetails { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = EncryptedFolderEnrollTeamDetails; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a EncryptedFolderEnrollTeamDetails struct") } - EventDetails::SfFbInviteDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 4)?; - s.serialize_field(".tag", "sf_fb_invite_details")?; - x.internal_serialize::(&mut s)?; - s.end() + fn visit_map>(self, map: V) -> Result { + EncryptedFolderEnrollTeamDetails::internal_deserialize(map) } - EventDetails::SfFbInviteChangeRoleDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 5)?; - s.serialize_field(".tag", "sf_fb_invite_change_role_details")?; - x.internal_serialize::(&mut s)?; - s.end() + } + deserializer.deserialize_struct("EncryptedFolderEnrollTeamDetails", ENCRYPTED_FOLDER_ENROLL_TEAM_DETAILS_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for EncryptedFolderEnrollTeamDetails { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + serializer.serialize_struct("EncryptedFolderEnrollTeamDetails", 0)?.end() + } +} + +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct EncryptedFolderEnrollTeamType { + pub description: String, +} + +impl EncryptedFolderEnrollTeamType { + pub fn new(description: String) -> Self { + EncryptedFolderEnrollTeamType { + description, + } + } +} + +const ENCRYPTED_FOLDER_ENROLL_TEAM_TYPE_FIELDS: &[&str] = &["description"]; +impl EncryptedFolderEnrollTeamType { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_description = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); + } + field_description = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } } - EventDetails::SfFbUninviteDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "sf_fb_uninvite_details")?; - x.internal_serialize::(&mut s)?; - s.end() + } + if optional && nothing { + return Ok(None); + } + let result = EncryptedFolderEnrollTeamType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("description", &self.description)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for EncryptedFolderEnrollTeamType { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = EncryptedFolderEnrollTeamType; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a EncryptedFolderEnrollTeamType struct") } - EventDetails::SfInviteGroupDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "sf_invite_group_details")?; - x.internal_serialize::(&mut s)?; - s.end() + fn visit_map>(self, map: V) -> Result { + EncryptedFolderEnrollTeamType::internal_deserialize(map) } - EventDetails::SfTeamGrantAccessDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "sf_team_grant_access_details")?; - x.internal_serialize::(&mut s)?; - s.end() + } + deserializer.deserialize_struct("EncryptedFolderEnrollTeamType", ENCRYPTED_FOLDER_ENROLL_TEAM_TYPE_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for EncryptedFolderEnrollTeamType { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("EncryptedFolderEnrollTeamType", 1)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +/// Deactivated team folder encryption. +#[derive(Debug, Clone, PartialEq, Eq, Default)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct EncryptedFolderFinishTeamUnenrollmentDetails { +} + +const ENCRYPTED_FOLDER_FINISH_TEAM_UNENROLLMENT_DETAILS_FIELDS: &[&str] = &[]; +impl EncryptedFolderFinishTeamUnenrollmentDetails { + // no _opt deserializer + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + ) -> Result { + // ignore any fields found; none are presently recognized + crate::eat_json_fields(&mut map)?; + Ok(EncryptedFolderFinishTeamUnenrollmentDetails {}) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for EncryptedFolderFinishTeamUnenrollmentDetails { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = EncryptedFolderFinishTeamUnenrollmentDetails; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a EncryptedFolderFinishTeamUnenrollmentDetails struct") } - EventDetails::SfTeamInviteDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 4)?; - s.serialize_field(".tag", "sf_team_invite_details")?; - x.internal_serialize::(&mut s)?; - s.end() + fn visit_map>(self, map: V) -> Result { + EncryptedFolderFinishTeamUnenrollmentDetails::internal_deserialize(map) } - EventDetails::SfTeamInviteChangeRoleDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 5)?; - s.serialize_field(".tag", "sf_team_invite_change_role_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::SfTeamJoinDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "sf_team_join_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::SfTeamJoinFromOobLinkDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 5)?; - s.serialize_field(".tag", "sf_team_join_from_oob_link_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::SfTeamUninviteDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "sf_team_uninvite_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::SharedContentAddInviteesDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "shared_content_add_invitees_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::SharedContentAddLinkExpiryDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "shared_content_add_link_expiry_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::SharedContentAddLinkPasswordDetails(_) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 1)?; - s.serialize_field(".tag", "shared_content_add_link_password_details")?; - s.end() - } - EventDetails::SharedContentAddMemberDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "shared_content_add_member_details")?; - x.internal_serialize::(&mut s)?; - s.end() + } + deserializer.deserialize_struct("EncryptedFolderFinishTeamUnenrollmentDetails", ENCRYPTED_FOLDER_FINISH_TEAM_UNENROLLMENT_DETAILS_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for EncryptedFolderFinishTeamUnenrollmentDetails { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + serializer.serialize_struct("EncryptedFolderFinishTeamUnenrollmentDetails", 0)?.end() + } +} + +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct EncryptedFolderFinishTeamUnenrollmentType { + pub description: String, +} + +impl EncryptedFolderFinishTeamUnenrollmentType { + pub fn new(description: String) -> Self { + EncryptedFolderFinishTeamUnenrollmentType { + description, + } + } +} + +const ENCRYPTED_FOLDER_FINISH_TEAM_UNENROLLMENT_TYPE_FIELDS: &[&str] = &["description"]; +impl EncryptedFolderFinishTeamUnenrollmentType { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_description = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); + } + field_description = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } } - EventDetails::SharedContentChangeDownloadsPolicyDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "shared_content_change_downloads_policy_details")?; - x.internal_serialize::(&mut s)?; - s.end() + } + if optional && nothing { + return Ok(None); + } + let result = EncryptedFolderFinishTeamUnenrollmentType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("description", &self.description)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for EncryptedFolderFinishTeamUnenrollmentType { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = EncryptedFolderFinishTeamUnenrollmentType; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a EncryptedFolderFinishTeamUnenrollmentType struct") } - EventDetails::SharedContentChangeInviteeRoleDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 4)?; - s.serialize_field(".tag", "shared_content_change_invitee_role_details")?; - x.internal_serialize::(&mut s)?; - s.end() + fn visit_map>(self, map: V) -> Result { + EncryptedFolderFinishTeamUnenrollmentType::internal_deserialize(map) } - EventDetails::SharedContentChangeLinkAudienceDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "shared_content_change_link_audience_details")?; - x.internal_serialize::(&mut s)?; - s.end() + } + deserializer.deserialize_struct("EncryptedFolderFinishTeamUnenrollmentType", ENCRYPTED_FOLDER_FINISH_TEAM_UNENROLLMENT_TYPE_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for EncryptedFolderFinishTeamUnenrollmentType { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("EncryptedFolderFinishTeamUnenrollmentType", 1)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +/// Initiated team key rotation. +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct EncryptedFolderInitTeamKeyRotationDetails { + /// Identifier of the team key. + pub team_key_id: String, +} + +impl EncryptedFolderInitTeamKeyRotationDetails { + pub fn new(team_key_id: String) -> Self { + EncryptedFolderInitTeamKeyRotationDetails { + team_key_id, + } + } +} + +const ENCRYPTED_FOLDER_INIT_TEAM_KEY_ROTATION_DETAILS_FIELDS: &[&str] = &["team_key_id"]; +impl EncryptedFolderInitTeamKeyRotationDetails { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_team_key_id = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "team_key_id" => { + if field_team_key_id.is_some() { + return Err(::serde::de::Error::duplicate_field("team_key_id")); + } + field_team_key_id = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } } - EventDetails::SharedContentChangeLinkExpiryDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "shared_content_change_link_expiry_details")?; - x.internal_serialize::(&mut s)?; - s.end() + } + if optional && nothing { + return Ok(None); + } + let result = EncryptedFolderInitTeamKeyRotationDetails { + team_key_id: field_team_key_id.ok_or_else(|| ::serde::de::Error::missing_field("team_key_id"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("team_key_id", &self.team_key_id)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for EncryptedFolderInitTeamKeyRotationDetails { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = EncryptedFolderInitTeamKeyRotationDetails; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a EncryptedFolderInitTeamKeyRotationDetails struct") } - EventDetails::SharedContentChangeLinkPasswordDetails(_) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 1)?; - s.serialize_field(".tag", "shared_content_change_link_password_details")?; - s.end() + fn visit_map>(self, map: V) -> Result { + EncryptedFolderInitTeamKeyRotationDetails::internal_deserialize(map) } - EventDetails::SharedContentChangeMemberRoleDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "shared_content_change_member_role_details")?; - x.internal_serialize::(&mut s)?; - s.end() + } + deserializer.deserialize_struct("EncryptedFolderInitTeamKeyRotationDetails", ENCRYPTED_FOLDER_INIT_TEAM_KEY_ROTATION_DETAILS_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for EncryptedFolderInitTeamKeyRotationDetails { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("EncryptedFolderInitTeamKeyRotationDetails", 1)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct EncryptedFolderInitTeamKeyRotationType { + pub description: String, +} + +impl EncryptedFolderInitTeamKeyRotationType { + pub fn new(description: String) -> Self { + EncryptedFolderInitTeamKeyRotationType { + description, + } + } +} + +const ENCRYPTED_FOLDER_INIT_TEAM_KEY_ROTATION_TYPE_FIELDS: &[&str] = &["description"]; +impl EncryptedFolderInitTeamKeyRotationType { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_description = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); + } + field_description = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } } - EventDetails::SharedContentChangeViewerInfoPolicyDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "shared_content_change_viewer_info_policy_details")?; - x.internal_serialize::(&mut s)?; - s.end() + } + if optional && nothing { + return Ok(None); + } + let result = EncryptedFolderInitTeamKeyRotationType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("description", &self.description)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for EncryptedFolderInitTeamKeyRotationType { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = EncryptedFolderInitTeamKeyRotationType; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a EncryptedFolderInitTeamKeyRotationType struct") } - EventDetails::SharedContentClaimInvitationDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "shared_content_claim_invitation_details")?; - x.internal_serialize::(&mut s)?; - s.end() + fn visit_map>(self, map: V) -> Result { + EncryptedFolderInitTeamKeyRotationType::internal_deserialize(map) } - EventDetails::SharedContentCopyDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 5)?; - s.serialize_field(".tag", "shared_content_copy_details")?; - x.internal_serialize::(&mut s)?; - s.end() + } + deserializer.deserialize_struct("EncryptedFolderInitTeamKeyRotationType", ENCRYPTED_FOLDER_INIT_TEAM_KEY_ROTATION_TYPE_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for EncryptedFolderInitTeamKeyRotationType { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("EncryptedFolderInitTeamKeyRotationType", 1)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +/// Initiated deactivation of team folder encryption. +#[derive(Debug, Clone, PartialEq, Eq, Default)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct EncryptedFolderInitTeamUnenrollmentDetails { +} + +const ENCRYPTED_FOLDER_INIT_TEAM_UNENROLLMENT_DETAILS_FIELDS: &[&str] = &[]; +impl EncryptedFolderInitTeamUnenrollmentDetails { + // no _opt deserializer + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + ) -> Result { + // ignore any fields found; none are presently recognized + crate::eat_json_fields(&mut map)?; + Ok(EncryptedFolderInitTeamUnenrollmentDetails {}) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for EncryptedFolderInitTeamUnenrollmentDetails { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = EncryptedFolderInitTeamUnenrollmentDetails; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a EncryptedFolderInitTeamUnenrollmentDetails struct") } - EventDetails::SharedContentDownloadDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 4)?; - s.serialize_field(".tag", "shared_content_download_details")?; - x.internal_serialize::(&mut s)?; - s.end() + fn visit_map>(self, map: V) -> Result { + EncryptedFolderInitTeamUnenrollmentDetails::internal_deserialize(map) } - EventDetails::SharedContentRelinquishMembershipDetails(_) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 1)?; - s.serialize_field(".tag", "shared_content_relinquish_membership_details")?; - s.end() + } + deserializer.deserialize_struct("EncryptedFolderInitTeamUnenrollmentDetails", ENCRYPTED_FOLDER_INIT_TEAM_UNENROLLMENT_DETAILS_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for EncryptedFolderInitTeamUnenrollmentDetails { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + serializer.serialize_struct("EncryptedFolderInitTeamUnenrollmentDetails", 0)?.end() + } +} + +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct EncryptedFolderInitTeamUnenrollmentType { + pub description: String, +} + +impl EncryptedFolderInitTeamUnenrollmentType { + pub fn new(description: String) -> Self { + EncryptedFolderInitTeamUnenrollmentType { + description, + } + } +} + +const ENCRYPTED_FOLDER_INIT_TEAM_UNENROLLMENT_TYPE_FIELDS: &[&str] = &["description"]; +impl EncryptedFolderInitTeamUnenrollmentType { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_description = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); + } + field_description = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } } - EventDetails::SharedContentRemoveInviteesDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "shared_content_remove_invitees_details")?; - x.internal_serialize::(&mut s)?; - s.end() + } + if optional && nothing { + return Ok(None); + } + let result = EncryptedFolderInitTeamUnenrollmentType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("description", &self.description)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for EncryptedFolderInitTeamUnenrollmentType { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = EncryptedFolderInitTeamUnenrollmentType; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a EncryptedFolderInitTeamUnenrollmentType struct") } - EventDetails::SharedContentRemoveLinkExpiryDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "shared_content_remove_link_expiry_details")?; - x.internal_serialize::(&mut s)?; - s.end() + fn visit_map>(self, map: V) -> Result { + EncryptedFolderInitTeamUnenrollmentType::internal_deserialize(map) } - EventDetails::SharedContentRemoveLinkPasswordDetails(_) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 1)?; - s.serialize_field(".tag", "shared_content_remove_link_password_details")?; - s.end() + } + deserializer.deserialize_struct("EncryptedFolderInitTeamUnenrollmentType", ENCRYPTED_FOLDER_INIT_TEAM_UNENROLLMENT_TYPE_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for EncryptedFolderInitTeamUnenrollmentType { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("EncryptedFolderInitTeamUnenrollmentType", 1)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +/// Removed recovery key. +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct EncryptedFolderRemoveBackupKeyDetails { + /// Identifier of the recovery key. + pub backup_key_id: String, +} + +impl EncryptedFolderRemoveBackupKeyDetails { + pub fn new(backup_key_id: String) -> Self { + EncryptedFolderRemoveBackupKeyDetails { + backup_key_id, + } + } +} + +const ENCRYPTED_FOLDER_REMOVE_BACKUP_KEY_DETAILS_FIELDS: &[&str] = &["backup_key_id"]; +impl EncryptedFolderRemoveBackupKeyDetails { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_backup_key_id = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "backup_key_id" => { + if field_backup_key_id.is_some() { + return Err(::serde::de::Error::duplicate_field("backup_key_id")); + } + field_backup_key_id = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } } - EventDetails::SharedContentRemoveMemberDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "shared_content_remove_member_details")?; - x.internal_serialize::(&mut s)?; - s.end() + } + if optional && nothing { + return Ok(None); + } + let result = EncryptedFolderRemoveBackupKeyDetails { + backup_key_id: field_backup_key_id.ok_or_else(|| ::serde::de::Error::missing_field("backup_key_id"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("backup_key_id", &self.backup_key_id)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for EncryptedFolderRemoveBackupKeyDetails { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = EncryptedFolderRemoveBackupKeyDetails; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a EncryptedFolderRemoveBackupKeyDetails struct") } - EventDetails::SharedContentRequestAccessDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "shared_content_request_access_details")?; - x.internal_serialize::(&mut s)?; - s.end() + fn visit_map>(self, map: V) -> Result { + EncryptedFolderRemoveBackupKeyDetails::internal_deserialize(map) } - EventDetails::SharedContentRestoreInviteesDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "shared_content_restore_invitees_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::SharedContentRestoreMemberDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "shared_content_restore_member_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::SharedContentUnshareDetails(_) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 1)?; - s.serialize_field(".tag", "shared_content_unshare_details")?; - s.end() - } - EventDetails::SharedContentViewDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 4)?; - s.serialize_field(".tag", "shared_content_view_details")?; - x.internal_serialize::(&mut s)?; - s.end() + } + deserializer.deserialize_struct("EncryptedFolderRemoveBackupKeyDetails", ENCRYPTED_FOLDER_REMOVE_BACKUP_KEY_DETAILS_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for EncryptedFolderRemoveBackupKeyDetails { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("EncryptedFolderRemoveBackupKeyDetails", 1)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct EncryptedFolderRemoveBackupKeyType { + pub description: String, +} + +impl EncryptedFolderRemoveBackupKeyType { + pub fn new(description: String) -> Self { + EncryptedFolderRemoveBackupKeyType { + description, + } + } +} + +const ENCRYPTED_FOLDER_REMOVE_BACKUP_KEY_TYPE_FIELDS: &[&str] = &["description"]; +impl EncryptedFolderRemoveBackupKeyType { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_description = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); + } + field_description = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } } - EventDetails::SharedFolderChangeLinkPolicyDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "shared_folder_change_link_policy_details")?; - x.internal_serialize::(&mut s)?; - s.end() + } + if optional && nothing { + return Ok(None); + } + let result = EncryptedFolderRemoveBackupKeyType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("description", &self.description)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for EncryptedFolderRemoveBackupKeyType { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = EncryptedFolderRemoveBackupKeyType; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a EncryptedFolderRemoveBackupKeyType struct") } - EventDetails::SharedFolderChangeMembersInheritancePolicyDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "shared_folder_change_members_inheritance_policy_details")?; - x.internal_serialize::(&mut s)?; - s.end() + fn visit_map>(self, map: V) -> Result { + EncryptedFolderRemoveBackupKeyType::internal_deserialize(map) } - EventDetails::SharedFolderChangeMembersManagementPolicyDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "shared_folder_change_members_management_policy_details")?; - x.internal_serialize::(&mut s)?; - s.end() + } + deserializer.deserialize_struct("EncryptedFolderRemoveBackupKeyType", ENCRYPTED_FOLDER_REMOVE_BACKUP_KEY_TYPE_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for EncryptedFolderRemoveBackupKeyType { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("EncryptedFolderRemoveBackupKeyType", 1)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +/// Rotated team key. +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct EncryptedFolderRotateTeamKeyDetails { + /// Identifier of the team key. + pub team_key_id: String, +} + +impl EncryptedFolderRotateTeamKeyDetails { + pub fn new(team_key_id: String) -> Self { + EncryptedFolderRotateTeamKeyDetails { + team_key_id, + } + } +} + +const ENCRYPTED_FOLDER_ROTATE_TEAM_KEY_DETAILS_FIELDS: &[&str] = &["team_key_id"]; +impl EncryptedFolderRotateTeamKeyDetails { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_team_key_id = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "team_key_id" => { + if field_team_key_id.is_some() { + return Err(::serde::de::Error::duplicate_field("team_key_id")); + } + field_team_key_id = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } } - EventDetails::SharedFolderChangeMembersPolicyDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "shared_folder_change_members_policy_details")?; - x.internal_serialize::(&mut s)?; - s.end() + } + if optional && nothing { + return Ok(None); + } + let result = EncryptedFolderRotateTeamKeyDetails { + team_key_id: field_team_key_id.ok_or_else(|| ::serde::de::Error::missing_field("team_key_id"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("team_key_id", &self.team_key_id)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for EncryptedFolderRotateTeamKeyDetails { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = EncryptedFolderRotateTeamKeyDetails; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a EncryptedFolderRotateTeamKeyDetails struct") } - EventDetails::SharedFolderCreateDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "shared_folder_create_details")?; - x.internal_serialize::(&mut s)?; - s.end() + fn visit_map>(self, map: V) -> Result { + EncryptedFolderRotateTeamKeyDetails::internal_deserialize(map) } - EventDetails::SharedFolderDeclineInvitationDetails(_) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 1)?; - s.serialize_field(".tag", "shared_folder_decline_invitation_details")?; - s.end() + } + deserializer.deserialize_struct("EncryptedFolderRotateTeamKeyDetails", ENCRYPTED_FOLDER_ROTATE_TEAM_KEY_DETAILS_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for EncryptedFolderRotateTeamKeyDetails { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("EncryptedFolderRotateTeamKeyDetails", 1)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct EncryptedFolderRotateTeamKeyType { + pub description: String, +} + +impl EncryptedFolderRotateTeamKeyType { + pub fn new(description: String) -> Self { + EncryptedFolderRotateTeamKeyType { + description, + } + } +} + +const ENCRYPTED_FOLDER_ROTATE_TEAM_KEY_TYPE_FIELDS: &[&str] = &["description"]; +impl EncryptedFolderRotateTeamKeyType { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_description = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); + } + field_description = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } } - EventDetails::SharedFolderMountDetails(_) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 1)?; - s.serialize_field(".tag", "shared_folder_mount_details")?; - s.end() + } + if optional && nothing { + return Ok(None); + } + let result = EncryptedFolderRotateTeamKeyType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("description", &self.description)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for EncryptedFolderRotateTeamKeyType { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = EncryptedFolderRotateTeamKeyType; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a EncryptedFolderRotateTeamKeyType struct") } - EventDetails::SharedFolderNestDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 5)?; - s.serialize_field(".tag", "shared_folder_nest_details")?; - x.internal_serialize::(&mut s)?; - s.end() + fn visit_map>(self, map: V) -> Result { + EncryptedFolderRotateTeamKeyType::internal_deserialize(map) } - EventDetails::SharedFolderTransferOwnershipDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "shared_folder_transfer_ownership_details")?; - x.internal_serialize::(&mut s)?; - s.end() + } + deserializer.deserialize_struct("EncryptedFolderRotateTeamKeyType", ENCRYPTED_FOLDER_ROTATE_TEAM_KEY_TYPE_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for EncryptedFolderRotateTeamKeyType { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("EncryptedFolderRotateTeamKeyType", 1)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +/// Unenrolled device. +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct EncryptedFolderUnenrollClientDetails { + /// Identifier of the client key. + pub client_key_id: String, +} + +impl EncryptedFolderUnenrollClientDetails { + pub fn new(client_key_id: String) -> Self { + EncryptedFolderUnenrollClientDetails { + client_key_id, + } + } +} + +const ENCRYPTED_FOLDER_UNENROLL_CLIENT_DETAILS_FIELDS: &[&str] = &["client_key_id"]; +impl EncryptedFolderUnenrollClientDetails { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_client_key_id = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "client_key_id" => { + if field_client_key_id.is_some() { + return Err(::serde::de::Error::duplicate_field("client_key_id")); + } + field_client_key_id = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } } - EventDetails::SharedFolderUnmountDetails(_) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 1)?; - s.serialize_field(".tag", "shared_folder_unmount_details")?; - s.end() + } + if optional && nothing { + return Ok(None); + } + let result = EncryptedFolderUnenrollClientDetails { + client_key_id: field_client_key_id.ok_or_else(|| ::serde::de::Error::missing_field("client_key_id"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("client_key_id", &self.client_key_id)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for EncryptedFolderUnenrollClientDetails { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = EncryptedFolderUnenrollClientDetails; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a EncryptedFolderUnenrollClientDetails struct") } - EventDetails::SharedLinkAddExpiryDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "shared_link_add_expiry_details")?; - x.internal_serialize::(&mut s)?; - s.end() + fn visit_map>(self, map: V) -> Result { + EncryptedFolderUnenrollClientDetails::internal_deserialize(map) } - EventDetails::SharedLinkChangeExpiryDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "shared_link_change_expiry_details")?; - x.internal_serialize::(&mut s)?; - s.end() + } + deserializer.deserialize_struct("EncryptedFolderUnenrollClientDetails", ENCRYPTED_FOLDER_UNENROLL_CLIENT_DETAILS_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for EncryptedFolderUnenrollClientDetails { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("EncryptedFolderUnenrollClientDetails", 1)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct EncryptedFolderUnenrollClientType { + pub description: String, +} + +impl EncryptedFolderUnenrollClientType { + pub fn new(description: String) -> Self { + EncryptedFolderUnenrollClientType { + description, + } + } +} + +const ENCRYPTED_FOLDER_UNENROLL_CLIENT_TYPE_FIELDS: &[&str] = &["description"]; +impl EncryptedFolderUnenrollClientType { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_description = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); + } + field_description = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } } - EventDetails::SharedLinkChangeVisibilityDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "shared_link_change_visibility_details")?; - x.internal_serialize::(&mut s)?; - s.end() + } + if optional && nothing { + return Ok(None); + } + let result = EncryptedFolderUnenrollClientType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("description", &self.description)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for EncryptedFolderUnenrollClientType { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = EncryptedFolderUnenrollClientType; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a EncryptedFolderUnenrollClientType struct") } - EventDetails::SharedLinkCopyDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "shared_link_copy_details")?; - x.internal_serialize::(&mut s)?; - s.end() + fn visit_map>(self, map: V) -> Result { + EncryptedFolderUnenrollClientType::internal_deserialize(map) } - EventDetails::SharedLinkCreateDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "shared_link_create_details")?; - x.internal_serialize::(&mut s)?; - s.end() + } + deserializer.deserialize_struct("EncryptedFolderUnenrollClientType", ENCRYPTED_FOLDER_UNENROLL_CLIENT_TYPE_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for EncryptedFolderUnenrollClientType { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("EncryptedFolderUnenrollClientType", 1)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +/// Ended enterprise admin session. +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct EndedEnterpriseAdminSessionDeprecatedDetails { + /// More information about the organization or team. + pub federation_extra_details: FedExtraDetails, +} + +impl EndedEnterpriseAdminSessionDeprecatedDetails { + pub fn new(federation_extra_details: FedExtraDetails) -> Self { + EndedEnterpriseAdminSessionDeprecatedDetails { + federation_extra_details, + } + } +} + +const ENDED_ENTERPRISE_ADMIN_SESSION_DEPRECATED_DETAILS_FIELDS: &[&str] = &["federation_extra_details"]; +impl EndedEnterpriseAdminSessionDeprecatedDetails { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_federation_extra_details = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "federation_extra_details" => { + if field_federation_extra_details.is_some() { + return Err(::serde::de::Error::duplicate_field("federation_extra_details")); + } + field_federation_extra_details = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } } - EventDetails::SharedLinkDisableDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "shared_link_disable_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::SharedLinkDownloadDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "shared_link_download_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::SharedLinkRemoveExpiryDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "shared_link_remove_expiry_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::SharedLinkSettingsAddExpirationDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 4)?; - s.serialize_field(".tag", "shared_link_settings_add_expiration_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::SharedLinkSettingsAddPasswordDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "shared_link_settings_add_password_details")?; - x.internal_serialize::(&mut s)?; - s.end() + } + if optional && nothing { + return Ok(None); + } + let result = EndedEnterpriseAdminSessionDeprecatedDetails { + federation_extra_details: field_federation_extra_details.ok_or_else(|| ::serde::de::Error::missing_field("federation_extra_details"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("federation_extra_details", &self.federation_extra_details)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for EndedEnterpriseAdminSessionDeprecatedDetails { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = EndedEnterpriseAdminSessionDeprecatedDetails; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a EndedEnterpriseAdminSessionDeprecatedDetails struct") } - EventDetails::SharedLinkSettingsAllowDownloadDisabledDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "shared_link_settings_allow_download_disabled_details")?; - x.internal_serialize::(&mut s)?; - s.end() + fn visit_map>(self, map: V) -> Result { + EndedEnterpriseAdminSessionDeprecatedDetails::internal_deserialize(map) } - EventDetails::SharedLinkSettingsAllowDownloadEnabledDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "shared_link_settings_allow_download_enabled_details")?; - x.internal_serialize::(&mut s)?; - s.end() + } + deserializer.deserialize_struct("EndedEnterpriseAdminSessionDeprecatedDetails", ENDED_ENTERPRISE_ADMIN_SESSION_DEPRECATED_DETAILS_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for EndedEnterpriseAdminSessionDeprecatedDetails { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("EndedEnterpriseAdminSessionDeprecatedDetails", 1)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct EndedEnterpriseAdminSessionDeprecatedType { + pub description: String, +} + +impl EndedEnterpriseAdminSessionDeprecatedType { + pub fn new(description: String) -> Self { + EndedEnterpriseAdminSessionDeprecatedType { + description, + } + } +} + +const ENDED_ENTERPRISE_ADMIN_SESSION_DEPRECATED_TYPE_FIELDS: &[&str] = &["description"]; +impl EndedEnterpriseAdminSessionDeprecatedType { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_description = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); + } + field_description = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } } - EventDetails::SharedLinkSettingsChangeAudienceDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 5)?; - s.serialize_field(".tag", "shared_link_settings_change_audience_details")?; - x.internal_serialize::(&mut s)?; - s.end() + } + if optional && nothing { + return Ok(None); + } + let result = EndedEnterpriseAdminSessionDeprecatedType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("description", &self.description)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for EndedEnterpriseAdminSessionDeprecatedType { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = EndedEnterpriseAdminSessionDeprecatedType; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a EndedEnterpriseAdminSessionDeprecatedType struct") } - EventDetails::SharedLinkSettingsChangeExpirationDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 5)?; - s.serialize_field(".tag", "shared_link_settings_change_expiration_details")?; - x.internal_serialize::(&mut s)?; - s.end() + fn visit_map>(self, map: V) -> Result { + EndedEnterpriseAdminSessionDeprecatedType::internal_deserialize(map) } - EventDetails::SharedLinkSettingsChangePasswordDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "shared_link_settings_change_password_details")?; - x.internal_serialize::(&mut s)?; - s.end() + } + deserializer.deserialize_struct("EndedEnterpriseAdminSessionDeprecatedType", ENDED_ENTERPRISE_ADMIN_SESSION_DEPRECATED_TYPE_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for EndedEnterpriseAdminSessionDeprecatedType { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("EndedEnterpriseAdminSessionDeprecatedType", 1)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +/// Ended enterprise admin session. +#[derive(Debug, Clone, PartialEq, Eq, Default)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct EndedEnterpriseAdminSessionDetails { +} + +const ENDED_ENTERPRISE_ADMIN_SESSION_DETAILS_FIELDS: &[&str] = &[]; +impl EndedEnterpriseAdminSessionDetails { + // no _opt deserializer + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + ) -> Result { + // ignore any fields found; none are presently recognized + crate::eat_json_fields(&mut map)?; + Ok(EndedEnterpriseAdminSessionDetails {}) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for EndedEnterpriseAdminSessionDetails { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = EndedEnterpriseAdminSessionDetails; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a EndedEnterpriseAdminSessionDetails struct") } - EventDetails::SharedLinkSettingsRemoveExpirationDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 4)?; - s.serialize_field(".tag", "shared_link_settings_remove_expiration_details")?; - x.internal_serialize::(&mut s)?; - s.end() + fn visit_map>(self, map: V) -> Result { + EndedEnterpriseAdminSessionDetails::internal_deserialize(map) } - EventDetails::SharedLinkSettingsRemovePasswordDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "shared_link_settings_remove_password_details")?; - x.internal_serialize::(&mut s)?; - s.end() + } + deserializer.deserialize_struct("EndedEnterpriseAdminSessionDetails", ENDED_ENTERPRISE_ADMIN_SESSION_DETAILS_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for EndedEnterpriseAdminSessionDetails { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + serializer.serialize_struct("EndedEnterpriseAdminSessionDetails", 0)?.end() + } +} + +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct EndedEnterpriseAdminSessionType { + pub description: String, +} + +impl EndedEnterpriseAdminSessionType { + pub fn new(description: String) -> Self { + EndedEnterpriseAdminSessionType { + description, + } + } +} + +const ENDED_ENTERPRISE_ADMIN_SESSION_TYPE_FIELDS: &[&str] = &["description"]; +impl EndedEnterpriseAdminSessionType { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_description = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); + } + field_description = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } } - EventDetails::SharedLinkShareDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "shared_link_share_details")?; - x.internal_serialize::(&mut s)?; - s.end() + } + if optional && nothing { + return Ok(None); + } + let result = EndedEnterpriseAdminSessionType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("description", &self.description)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for EndedEnterpriseAdminSessionType { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = EndedEnterpriseAdminSessionType; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a EndedEnterpriseAdminSessionType struct") } - EventDetails::SharedLinkViewDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "shared_link_view_details")?; - x.internal_serialize::(&mut s)?; - s.end() + fn visit_map>(self, map: V) -> Result { + EndedEnterpriseAdminSessionType::internal_deserialize(map) } - EventDetails::SharedNoteOpenedDetails(_) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 1)?; - s.serialize_field(".tag", "shared_note_opened_details")?; - s.end() + } + deserializer.deserialize_struct("EndedEnterpriseAdminSessionType", ENDED_ENTERPRISE_ADMIN_SESSION_TYPE_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for EndedEnterpriseAdminSessionType { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("EndedEnterpriseAdminSessionType", 1)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +/// Policy for deciding whether password must be enforced when an externally shared link is updated +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // variants may be added in the future +pub enum EnforceLinkPasswordPolicy { + Optional, + Required, + /// Catch-all used for unrecognized values returned from the server. Encountering this value + /// typically indicates that this SDK version is out of date. + Other, +} + +impl<'de> ::serde::de::Deserialize<'de> for EnforceLinkPasswordPolicy { + fn deserialize>(deserializer: D) -> Result { + // union deserializer + use serde::de::{self, MapAccess, Visitor}; + struct EnumVisitor; + impl<'de> Visitor<'de> for EnumVisitor { + type Value = EnforceLinkPasswordPolicy; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a EnforceLinkPasswordPolicy structure") } - EventDetails::ShmodelDisableDownloadsDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "shmodel_disable_downloads_details")?; - x.internal_serialize::(&mut s)?; - s.end() + fn visit_map>(self, mut map: V) -> Result { + let tag: &str = match map.next_key()? { + Some(".tag") => map.next_value()?, + _ => return Err(de::Error::missing_field(".tag")) + }; + let value = match tag { + "optional" => EnforceLinkPasswordPolicy::Optional, + "required" => EnforceLinkPasswordPolicy::Required, + _ => EnforceLinkPasswordPolicy::Other, + }; + crate::eat_json_fields(&mut map)?; + Ok(value) } - EventDetails::ShmodelEnableDownloadsDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "shmodel_enable_downloads_details")?; - x.internal_serialize::(&mut s)?; + } + const VARIANTS: &[&str] = &["optional", + "required", + "other"]; + deserializer.deserialize_struct("EnforceLinkPasswordPolicy", VARIANTS, EnumVisitor) + } +} + +impl ::serde::ser::Serialize for EnforceLinkPasswordPolicy { + fn serialize(&self, serializer: S) -> Result { + // union serializer + use serde::ser::SerializeStruct; + match self { + EnforceLinkPasswordPolicy::Optional => { + // unit + let mut s = serializer.serialize_struct("EnforceLinkPasswordPolicy", 1)?; + s.serialize_field(".tag", "optional")?; s.end() } - EventDetails::ShmodelGroupShareDetails(_) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 1)?; - s.serialize_field(".tag", "shmodel_group_share_details")?; + EnforceLinkPasswordPolicy::Required => { + // unit + let mut s = serializer.serialize_struct("EnforceLinkPasswordPolicy", 1)?; + s.serialize_field(".tag", "required")?; s.end() } - EventDetails::ShowcaseAccessGrantedDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "showcase_access_granted_details")?; - x.internal_serialize::(&mut s)?; - s.end() + EnforceLinkPasswordPolicy::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) + } + } +} + +/// Changed who can update a setting. +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct EnterpriseSettingsLockingDetails { + /// The secondary team name. + pub team_name: String, + /// Settings page name. + pub settings_page_name: String, + /// Previous locked settings page state. + pub previous_settings_page_locking_state: String, + /// New locked settings page state. + pub new_settings_page_locking_state: String, +} + +impl EnterpriseSettingsLockingDetails { + pub fn new( + team_name: String, + settings_page_name: String, + previous_settings_page_locking_state: String, + new_settings_page_locking_state: String, + ) -> Self { + EnterpriseSettingsLockingDetails { + team_name, + settings_page_name, + previous_settings_page_locking_state, + new_settings_page_locking_state, + } + } +} + +const ENTERPRISE_SETTINGS_LOCKING_DETAILS_FIELDS: &[&str] = &["team_name", + "settings_page_name", + "previous_settings_page_locking_state", + "new_settings_page_locking_state"]; +impl EnterpriseSettingsLockingDetails { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_team_name = None; + let mut field_settings_page_name = None; + let mut field_previous_settings_page_locking_state = None; + let mut field_new_settings_page_locking_state = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "team_name" => { + if field_team_name.is_some() { + return Err(::serde::de::Error::duplicate_field("team_name")); + } + field_team_name = Some(map.next_value()?); + } + "settings_page_name" => { + if field_settings_page_name.is_some() { + return Err(::serde::de::Error::duplicate_field("settings_page_name")); + } + field_settings_page_name = Some(map.next_value()?); + } + "previous_settings_page_locking_state" => { + if field_previous_settings_page_locking_state.is_some() { + return Err(::serde::de::Error::duplicate_field("previous_settings_page_locking_state")); + } + field_previous_settings_page_locking_state = Some(map.next_value()?); + } + "new_settings_page_locking_state" => { + if field_new_settings_page_locking_state.is_some() { + return Err(::serde::de::Error::duplicate_field("new_settings_page_locking_state")); + } + field_new_settings_page_locking_state = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } } - EventDetails::ShowcaseAddMemberDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "showcase_add_member_details")?; - x.internal_serialize::(&mut s)?; - s.end() + } + if optional && nothing { + return Ok(None); + } + let result = EnterpriseSettingsLockingDetails { + team_name: field_team_name.ok_or_else(|| ::serde::de::Error::missing_field("team_name"))?, + settings_page_name: field_settings_page_name.ok_or_else(|| ::serde::de::Error::missing_field("settings_page_name"))?, + previous_settings_page_locking_state: field_previous_settings_page_locking_state.ok_or_else(|| ::serde::de::Error::missing_field("previous_settings_page_locking_state"))?, + new_settings_page_locking_state: field_new_settings_page_locking_state.ok_or_else(|| ::serde::de::Error::missing_field("new_settings_page_locking_state"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("team_name", &self.team_name)?; + s.serialize_field("settings_page_name", &self.settings_page_name)?; + s.serialize_field("previous_settings_page_locking_state", &self.previous_settings_page_locking_state)?; + s.serialize_field("new_settings_page_locking_state", &self.new_settings_page_locking_state)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for EnterpriseSettingsLockingDetails { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = EnterpriseSettingsLockingDetails; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a EnterpriseSettingsLockingDetails struct") } - EventDetails::ShowcaseArchivedDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "showcase_archived_details")?; - x.internal_serialize::(&mut s)?; - s.end() + fn visit_map>(self, map: V) -> Result { + EnterpriseSettingsLockingDetails::internal_deserialize(map) } - EventDetails::ShowcaseCreatedDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "showcase_created_details")?; - x.internal_serialize::(&mut s)?; - s.end() + } + deserializer.deserialize_struct("EnterpriseSettingsLockingDetails", ENTERPRISE_SETTINGS_LOCKING_DETAILS_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for EnterpriseSettingsLockingDetails { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("EnterpriseSettingsLockingDetails", 4)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct EnterpriseSettingsLockingType { + pub description: String, +} + +impl EnterpriseSettingsLockingType { + pub fn new(description: String) -> Self { + EnterpriseSettingsLockingType { + description, + } + } +} + +const ENTERPRISE_SETTINGS_LOCKING_TYPE_FIELDS: &[&str] = &["description"]; +impl EnterpriseSettingsLockingType { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_description = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); + } + field_description = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } } - EventDetails::ShowcaseDeleteCommentDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "showcase_delete_comment_details")?; - x.internal_serialize::(&mut s)?; - s.end() + } + if optional && nothing { + return Ok(None); + } + let result = EnterpriseSettingsLockingType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("description", &self.description)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for EnterpriseSettingsLockingType { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = EnterpriseSettingsLockingType; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a EnterpriseSettingsLockingType struct") } - EventDetails::ShowcaseEditedDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "showcase_edited_details")?; - x.internal_serialize::(&mut s)?; - s.end() + fn visit_map>(self, map: V) -> Result { + EnterpriseSettingsLockingType::internal_deserialize(map) } - EventDetails::ShowcaseEditCommentDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "showcase_edit_comment_details")?; - x.internal_serialize::(&mut s)?; - s.end() + } + deserializer.deserialize_struct("EnterpriseSettingsLockingType", ENTERPRISE_SETTINGS_LOCKING_TYPE_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for EnterpriseSettingsLockingType { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("EnterpriseSettingsLockingType", 1)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +/// Category of events in event audit log. +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // variants may be added in the future +pub enum EventCategory { + /// Events that involve team related alerts. + AdminAlerting, + /// Events that apply to management of linked apps. + Apps, + /// Events that have to do with comments on files and Paper documents. + Comments, + /// Events that apply to Dropbox Dash + Dash, + /// Events that involve data governance actions + DataGovernance, + /// Events that apply to linked devices on mobile, desktop and Web platforms. + Devices, + /// Events that involve domain management feature: domain verification, invite enforcement and + /// account capture. + Domains, + /// Events that involve encryption. + Encryption, + /// Events that have to do with filesystem operations on files and folders: copy, move, delete, + /// etc. + FileOperations, + /// Events that apply to the file requests feature. + FileRequests, + /// Events that involve group management. + Groups, + /// Events that involve users signing in to or out of Dropbox. + Logins, + /// Events that involve team member management. + Members, + /// Events that apply to Dropbox Paper. + Paper, + /// Events that involve using, changing or resetting passwords. + Passwords, + /// Events that concern generation of admin reports, including team activity and device usage. + Reports, + /// Events that apply to all types of sharing and collaboration. + Sharing, + /// Events that apply to Dropbox Showcase. + Showcase, + /// Events that apply to Dropbox Sign + Signatures, + /// Events that involve using or configuring single sign-on as well as administrative policies + /// concerning single sign-on. + Sso, + /// Events that involve team folder management. + TeamFolders, + /// Events that involve a change in team-wide policies. + TeamPolicies, + /// Events that involve a change in the team profile. + TeamProfile, + /// Events that involve using or configuring two factor authentication as well as administrative + /// policies concerning two factor authentication. + Tfa, + /// Events that apply to cross-team trust establishment. + TrustedTeams, + /// Catch-all used for unrecognized values returned from the server. Encountering this value + /// typically indicates that this SDK version is out of date. + Other, +} + +impl<'de> ::serde::de::Deserialize<'de> for EventCategory { + fn deserialize>(deserializer: D) -> Result { + // union deserializer + use serde::de::{self, MapAccess, Visitor}; + struct EnumVisitor; + impl<'de> Visitor<'de> for EnumVisitor { + type Value = EventCategory; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a EventCategory structure") } - EventDetails::ShowcaseFileAddedDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "showcase_file_added_details")?; - x.internal_serialize::(&mut s)?; + fn visit_map>(self, mut map: V) -> Result { + let tag: &str = match map.next_key()? { + Some(".tag") => map.next_value()?, + _ => return Err(de::Error::missing_field(".tag")) + }; + let value = match tag { + "admin_alerting" => EventCategory::AdminAlerting, + "apps" => EventCategory::Apps, + "comments" => EventCategory::Comments, + "dash" => EventCategory::Dash, + "data_governance" => EventCategory::DataGovernance, + "devices" => EventCategory::Devices, + "domains" => EventCategory::Domains, + "encryption" => EventCategory::Encryption, + "file_operations" => EventCategory::FileOperations, + "file_requests" => EventCategory::FileRequests, + "groups" => EventCategory::Groups, + "logins" => EventCategory::Logins, + "members" => EventCategory::Members, + "paper" => EventCategory::Paper, + "passwords" => EventCategory::Passwords, + "reports" => EventCategory::Reports, + "sharing" => EventCategory::Sharing, + "showcase" => EventCategory::Showcase, + "signatures" => EventCategory::Signatures, + "sso" => EventCategory::Sso, + "team_folders" => EventCategory::TeamFolders, + "team_policies" => EventCategory::TeamPolicies, + "team_profile" => EventCategory::TeamProfile, + "tfa" => EventCategory::Tfa, + "trusted_teams" => EventCategory::TrustedTeams, + _ => EventCategory::Other, + }; + crate::eat_json_fields(&mut map)?; + Ok(value) + } + } + const VARIANTS: &[&str] = &["admin_alerting", + "apps", + "comments", + "dash", + "data_governance", + "devices", + "domains", + "encryption", + "file_operations", + "file_requests", + "groups", + "logins", + "members", + "paper", + "passwords", + "reports", + "sharing", + "showcase", + "signatures", + "sso", + "team_folders", + "team_policies", + "team_profile", + "tfa", + "trusted_teams", + "other"]; + deserializer.deserialize_struct("EventCategory", VARIANTS, EnumVisitor) + } +} + +impl ::serde::ser::Serialize for EventCategory { + fn serialize(&self, serializer: S) -> Result { + // union serializer + use serde::ser::SerializeStruct; + match self { + EventCategory::AdminAlerting => { + // unit + let mut s = serializer.serialize_struct("EventCategory", 1)?; + s.serialize_field(".tag", "admin_alerting")?; s.end() } - EventDetails::ShowcaseFileDownloadDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "showcase_file_download_details")?; - x.internal_serialize::(&mut s)?; + EventCategory::Apps => { + // unit + let mut s = serializer.serialize_struct("EventCategory", 1)?; + s.serialize_field(".tag", "apps")?; s.end() } - EventDetails::ShowcaseFileRemovedDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "showcase_file_removed_details")?; - x.internal_serialize::(&mut s)?; + EventCategory::Comments => { + // unit + let mut s = serializer.serialize_struct("EventCategory", 1)?; + s.serialize_field(".tag", "comments")?; s.end() } - EventDetails::ShowcaseFileViewDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "showcase_file_view_details")?; - x.internal_serialize::(&mut s)?; + EventCategory::Dash => { + // unit + let mut s = serializer.serialize_struct("EventCategory", 1)?; + s.serialize_field(".tag", "dash")?; s.end() } - EventDetails::ShowcasePermanentlyDeletedDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "showcase_permanently_deleted_details")?; - x.internal_serialize::(&mut s)?; + EventCategory::DataGovernance => { + // unit + let mut s = serializer.serialize_struct("EventCategory", 1)?; + s.serialize_field(".tag", "data_governance")?; s.end() } - EventDetails::ShowcasePostCommentDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "showcase_post_comment_details")?; - x.internal_serialize::(&mut s)?; + EventCategory::Devices => { + // unit + let mut s = serializer.serialize_struct("EventCategory", 1)?; + s.serialize_field(".tag", "devices")?; s.end() } - EventDetails::ShowcaseRemoveMemberDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "showcase_remove_member_details")?; - x.internal_serialize::(&mut s)?; + EventCategory::Domains => { + // unit + let mut s = serializer.serialize_struct("EventCategory", 1)?; + s.serialize_field(".tag", "domains")?; s.end() } - EventDetails::ShowcaseRenamedDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "showcase_renamed_details")?; - x.internal_serialize::(&mut s)?; + EventCategory::Encryption => { + // unit + let mut s = serializer.serialize_struct("EventCategory", 1)?; + s.serialize_field(".tag", "encryption")?; s.end() } - EventDetails::ShowcaseRequestAccessDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "showcase_request_access_details")?; - x.internal_serialize::(&mut s)?; + EventCategory::FileOperations => { + // unit + let mut s = serializer.serialize_struct("EventCategory", 1)?; + s.serialize_field(".tag", "file_operations")?; s.end() } - EventDetails::ShowcaseResolveCommentDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "showcase_resolve_comment_details")?; - x.internal_serialize::(&mut s)?; + EventCategory::FileRequests => { + // unit + let mut s = serializer.serialize_struct("EventCategory", 1)?; + s.serialize_field(".tag", "file_requests")?; s.end() } - EventDetails::ShowcaseRestoredDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "showcase_restored_details")?; - x.internal_serialize::(&mut s)?; + EventCategory::Groups => { + // unit + let mut s = serializer.serialize_struct("EventCategory", 1)?; + s.serialize_field(".tag", "groups")?; s.end() } - EventDetails::ShowcaseTrashedDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "showcase_trashed_details")?; - x.internal_serialize::(&mut s)?; + EventCategory::Logins => { + // unit + let mut s = serializer.serialize_struct("EventCategory", 1)?; + s.serialize_field(".tag", "logins")?; s.end() } - EventDetails::ShowcaseTrashedDeprecatedDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "showcase_trashed_deprecated_details")?; - x.internal_serialize::(&mut s)?; + EventCategory::Members => { + // unit + let mut s = serializer.serialize_struct("EventCategory", 1)?; + s.serialize_field(".tag", "members")?; s.end() } - EventDetails::ShowcaseUnresolveCommentDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "showcase_unresolve_comment_details")?; - x.internal_serialize::(&mut s)?; + EventCategory::Paper => { + // unit + let mut s = serializer.serialize_struct("EventCategory", 1)?; + s.serialize_field(".tag", "paper")?; s.end() } - EventDetails::ShowcaseUntrashedDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "showcase_untrashed_details")?; - x.internal_serialize::(&mut s)?; + EventCategory::Passwords => { + // unit + let mut s = serializer.serialize_struct("EventCategory", 1)?; + s.serialize_field(".tag", "passwords")?; s.end() } - EventDetails::ShowcaseUntrashedDeprecatedDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "showcase_untrashed_deprecated_details")?; - x.internal_serialize::(&mut s)?; + EventCategory::Reports => { + // unit + let mut s = serializer.serialize_struct("EventCategory", 1)?; + s.serialize_field(".tag", "reports")?; s.end() } - EventDetails::ShowcaseViewDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "showcase_view_details")?; - x.internal_serialize::(&mut s)?; + EventCategory::Sharing => { + // unit + let mut s = serializer.serialize_struct("EventCategory", 1)?; + s.serialize_field(".tag", "sharing")?; s.end() } - EventDetails::SsoAddCertDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "sso_add_cert_details")?; - x.internal_serialize::(&mut s)?; + EventCategory::Showcase => { + // unit + let mut s = serializer.serialize_struct("EventCategory", 1)?; + s.serialize_field(".tag", "showcase")?; s.end() } - EventDetails::SsoAddLoginUrlDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "sso_add_login_url_details")?; - x.internal_serialize::(&mut s)?; + EventCategory::Signatures => { + // unit + let mut s = serializer.serialize_struct("EventCategory", 1)?; + s.serialize_field(".tag", "signatures")?; s.end() } - EventDetails::SsoAddLogoutUrlDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "sso_add_logout_url_details")?; - x.internal_serialize::(&mut s)?; + EventCategory::Sso => { + // unit + let mut s = serializer.serialize_struct("EventCategory", 1)?; + s.serialize_field(".tag", "sso")?; s.end() } - EventDetails::SsoChangeCertDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "sso_change_cert_details")?; - x.internal_serialize::(&mut s)?; + EventCategory::TeamFolders => { + // unit + let mut s = serializer.serialize_struct("EventCategory", 1)?; + s.serialize_field(".tag", "team_folders")?; s.end() } - EventDetails::SsoChangeLoginUrlDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "sso_change_login_url_details")?; - x.internal_serialize::(&mut s)?; + EventCategory::TeamPolicies => { + // unit + let mut s = serializer.serialize_struct("EventCategory", 1)?; + s.serialize_field(".tag", "team_policies")?; s.end() } - EventDetails::SsoChangeLogoutUrlDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "sso_change_logout_url_details")?; - x.internal_serialize::(&mut s)?; + EventCategory::TeamProfile => { + // unit + let mut s = serializer.serialize_struct("EventCategory", 1)?; + s.serialize_field(".tag", "team_profile")?; s.end() } - EventDetails::SsoChangeSamlIdentityModeDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "sso_change_saml_identity_mode_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::SsoRemoveCertDetails(_) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 1)?; - s.serialize_field(".tag", "sso_remove_cert_details")?; - s.end() - } - EventDetails::SsoRemoveLoginUrlDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "sso_remove_login_url_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::SsoRemoveLogoutUrlDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "sso_remove_logout_url_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::TeamFolderChangeStatusDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "team_folder_change_status_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::TeamFolderCreateDetails(_) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 1)?; - s.serialize_field(".tag", "team_folder_create_details")?; - s.end() - } - EventDetails::TeamFolderDowngradeDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "team_folder_downgrade_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::TeamFolderPermanentlyDeleteDetails(_) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 1)?; - s.serialize_field(".tag", "team_folder_permanently_delete_details")?; - s.end() - } - EventDetails::TeamFolderRenameDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "team_folder_rename_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::TeamSelectiveSyncSettingsChangedDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "team_selective_sync_settings_changed_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::AccountCaptureChangePolicyDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "account_capture_change_policy_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::AdminEmailRemindersChangedDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "admin_email_reminders_changed_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::AllowDownloadDisabledDetails(_) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 1)?; - s.serialize_field(".tag", "allow_download_disabled_details")?; - s.end() - } - EventDetails::AllowDownloadEnabledDetails(_) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 1)?; - s.serialize_field(".tag", "allow_download_enabled_details")?; - s.end() - } - EventDetails::AppPermissionsChangedDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 5)?; - s.serialize_field(".tag", "app_permissions_changed_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::CameraUploadsPolicyChangedDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "camera_uploads_policy_changed_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::CaptureTranscriptPolicyChangedDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "capture_transcript_policy_changed_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::ClassificationChangePolicyDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 4)?; - s.serialize_field(".tag", "classification_change_policy_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::ComputerBackupPolicyChangedDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "computer_backup_policy_changed_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::ContentAdministrationPolicyChangedDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "content_administration_policy_changed_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::DataPlacementRestrictionChangePolicyDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "data_placement_restriction_change_policy_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::DataPlacementRestrictionSatisfyPolicyDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "data_placement_restriction_satisfy_policy_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::DeviceApprovalsAddExceptionDetails(_) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 1)?; - s.serialize_field(".tag", "device_approvals_add_exception_details")?; - s.end() - } - EventDetails::DeviceApprovalsChangeDesktopPolicyDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "device_approvals_change_desktop_policy_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::DeviceApprovalsChangeMobilePolicyDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "device_approvals_change_mobile_policy_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::DeviceApprovalsChangeOverageActionDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "device_approvals_change_overage_action_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::DeviceApprovalsChangeUnlinkActionDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "device_approvals_change_unlink_action_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::DeviceApprovalsRemoveExceptionDetails(_) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 1)?; - s.serialize_field(".tag", "device_approvals_remove_exception_details")?; - s.end() - } - EventDetails::DirectoryRestrictionsAddMembersDetails(_) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 1)?; - s.serialize_field(".tag", "directory_restrictions_add_members_details")?; - s.end() - } - EventDetails::DirectoryRestrictionsRemoveMembersDetails(_) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 1)?; - s.serialize_field(".tag", "directory_restrictions_remove_members_details")?; - s.end() - } - EventDetails::DropboxPasswordsPolicyChangedDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "dropbox_passwords_policy_changed_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::EmailIngestPolicyChangedDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "email_ingest_policy_changed_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::EmmAddExceptionDetails(_) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 1)?; - s.serialize_field(".tag", "emm_add_exception_details")?; - s.end() - } - EventDetails::EmmChangePolicyDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "emm_change_policy_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::EmmRemoveExceptionDetails(_) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 1)?; - s.serialize_field(".tag", "emm_remove_exception_details")?; - s.end() - } - EventDetails::ExtendedVersionHistoryChangePolicyDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "extended_version_history_change_policy_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::ExternalDriveBackupPolicyChangedDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "external_drive_backup_policy_changed_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::FileCommentsChangePolicyDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "file_comments_change_policy_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::FileLockingPolicyChangedDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "file_locking_policy_changed_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::FileProviderMigrationPolicyChangedDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "file_provider_migration_policy_changed_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::FileRequestsChangePolicyDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "file_requests_change_policy_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::FileRequestsEmailsEnabledDetails(_) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 1)?; - s.serialize_field(".tag", "file_requests_emails_enabled_details")?; - s.end() - } - EventDetails::FileRequestsEmailsRestrictedToTeamOnlyDetails(_) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 1)?; - s.serialize_field(".tag", "file_requests_emails_restricted_to_team_only_details")?; - s.end() - } - EventDetails::FileTransfersPolicyChangedDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "file_transfers_policy_changed_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::FolderLinkRestrictionPolicyChangedDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "folder_link_restriction_policy_changed_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::GoogleSsoChangePolicyDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "google_sso_change_policy_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::GroupUserManagementChangePolicyDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "group_user_management_change_policy_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::IntegrationPolicyChangedDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 4)?; - s.serialize_field(".tag", "integration_policy_changed_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::InviteAcceptanceEmailPolicyChangedDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "invite_acceptance_email_policy_changed_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::MemberRequestsChangePolicyDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "member_requests_change_policy_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::MemberSendInvitePolicyChangedDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "member_send_invite_policy_changed_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::MemberSpaceLimitsAddExceptionDetails(_) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 1)?; - s.serialize_field(".tag", "member_space_limits_add_exception_details")?; - s.end() - } - EventDetails::MemberSpaceLimitsChangeCapsTypePolicyDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "member_space_limits_change_caps_type_policy_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::MemberSpaceLimitsChangePolicyDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "member_space_limits_change_policy_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::MemberSpaceLimitsRemoveExceptionDetails(_) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 1)?; - s.serialize_field(".tag", "member_space_limits_remove_exception_details")?; - s.end() - } - EventDetails::MemberSuggestionsChangePolicyDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "member_suggestions_change_policy_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::MicrosoftOfficeAddinChangePolicyDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "microsoft_office_addin_change_policy_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::NetworkControlChangePolicyDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "network_control_change_policy_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::PaperChangeDeploymentPolicyDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "paper_change_deployment_policy_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::PaperChangeMemberLinkPolicyDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "paper_change_member_link_policy_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::PaperChangeMemberPolicyDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "paper_change_member_policy_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::PaperChangePolicyDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "paper_change_policy_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::PaperDefaultFolderPolicyChangedDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "paper_default_folder_policy_changed_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::PaperDesktopPolicyChangedDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "paper_desktop_policy_changed_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::PaperEnabledUsersGroupAdditionDetails(_) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 1)?; - s.serialize_field(".tag", "paper_enabled_users_group_addition_details")?; - s.end() - } - EventDetails::PaperEnabledUsersGroupRemovalDetails(_) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 1)?; - s.serialize_field(".tag", "paper_enabled_users_group_removal_details")?; - s.end() - } - EventDetails::PasswordStrengthRequirementsChangePolicyDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "password_strength_requirements_change_policy_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::PermanentDeleteChangePolicyDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "permanent_delete_change_policy_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::ResellerSupportChangePolicyDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "reseller_support_change_policy_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::RewindPolicyChangedDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "rewind_policy_changed_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::SendForSignaturePolicyChangedDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "send_for_signature_policy_changed_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::SharingChangeFolderJoinPolicyDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "sharing_change_folder_join_policy_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::SharingChangeLinkAllowChangeExpirationPolicyDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "sharing_change_link_allow_change_expiration_policy_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::SharingChangeLinkDefaultExpirationPolicyDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "sharing_change_link_default_expiration_policy_details")?; - x.internal_serialize::(&mut s)?; + EventCategory::Tfa => { + // unit + let mut s = serializer.serialize_struct("EventCategory", 1)?; + s.serialize_field(".tag", "tfa")?; s.end() } - EventDetails::SharingChangeLinkEnforcePasswordPolicyDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "sharing_change_link_enforce_password_policy_details")?; - x.internal_serialize::(&mut s)?; + EventCategory::TrustedTeams => { + // unit + let mut s = serializer.serialize_struct("EventCategory", 1)?; + s.serialize_field(".tag", "trusted_teams")?; s.end() } - EventDetails::SharingChangeLinkPolicyDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "sharing_change_link_policy_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::SharingChangeMemberPolicyDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "sharing_change_member_policy_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::ShowcaseChangeDownloadPolicyDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "showcase_change_download_policy_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::ShowcaseChangeEnabledPolicyDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "showcase_change_enabled_policy_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::ShowcaseChangeExternalSharingPolicyDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "showcase_change_external_sharing_policy_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::SmarterSmartSyncPolicyChangedDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "smarter_smart_sync_policy_changed_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::SmartSyncChangePolicyDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "smart_sync_change_policy_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::SmartSyncNotOptOutDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "smart_sync_not_opt_out_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::SmartSyncOptOutDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "smart_sync_opt_out_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::SsoChangePolicyDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "sso_change_policy_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::TeamBrandingPolicyChangedDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "team_branding_policy_changed_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::TeamExtensionsPolicyChangedDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "team_extensions_policy_changed_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::TeamSelectiveSyncPolicyChangedDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "team_selective_sync_policy_changed_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::TeamSharingWhitelistSubjectsChangedDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "team_sharing_whitelist_subjects_changed_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::TfaAddExceptionDetails(_) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 1)?; - s.serialize_field(".tag", "tfa_add_exception_details")?; - s.end() - } - EventDetails::TfaChangePolicyDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "tfa_change_policy_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::TfaRemoveExceptionDetails(_) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 1)?; - s.serialize_field(".tag", "tfa_remove_exception_details")?; - s.end() - } - EventDetails::TwoAccountChangePolicyDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "two_account_change_policy_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::ViewerInfoPolicyChangedDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "viewer_info_policy_changed_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::WatermarkingPolicyChangedDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "watermarking_policy_changed_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::WebSessionsChangeActiveSessionLimitDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "web_sessions_change_active_session_limit_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::WebSessionsChangeFixedLengthPolicyDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "web_sessions_change_fixed_length_policy_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::WebSessionsChangeIdleLengthPolicyDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "web_sessions_change_idle_length_policy_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::DataResidencyMigrationRequestSuccessfulDetails(_) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 1)?; - s.serialize_field(".tag", "data_residency_migration_request_successful_details")?; - s.end() - } - EventDetails::DataResidencyMigrationRequestUnsuccessfulDetails(_) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 1)?; - s.serialize_field(".tag", "data_residency_migration_request_unsuccessful_details")?; - s.end() - } - EventDetails::TeamMergeFromDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "team_merge_from_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::TeamMergeToDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "team_merge_to_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::TeamProfileAddBackgroundDetails(_) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 1)?; - s.serialize_field(".tag", "team_profile_add_background_details")?; - s.end() - } - EventDetails::TeamProfileAddLogoDetails(_) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 1)?; - s.serialize_field(".tag", "team_profile_add_logo_details")?; - s.end() - } - EventDetails::TeamProfileChangeBackgroundDetails(_) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 1)?; - s.serialize_field(".tag", "team_profile_change_background_details")?; - s.end() - } - EventDetails::TeamProfileChangeDefaultLanguageDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "team_profile_change_default_language_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::TeamProfileChangeLogoDetails(_) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 1)?; - s.serialize_field(".tag", "team_profile_change_logo_details")?; - s.end() - } - EventDetails::TeamProfileChangeNameDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "team_profile_change_name_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::TeamProfileRemoveBackgroundDetails(_) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 1)?; - s.serialize_field(".tag", "team_profile_remove_background_details")?; - s.end() - } - EventDetails::TeamProfileRemoveLogoDetails(_) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 1)?; - s.serialize_field(".tag", "team_profile_remove_logo_details")?; - s.end() - } - EventDetails::TfaAddBackupPhoneDetails(_) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 1)?; - s.serialize_field(".tag", "tfa_add_backup_phone_details")?; - s.end() - } - EventDetails::TfaAddSecurityKeyDetails(_) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 1)?; - s.serialize_field(".tag", "tfa_add_security_key_details")?; - s.end() - } - EventDetails::TfaChangeBackupPhoneDetails(_) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 1)?; - s.serialize_field(".tag", "tfa_change_backup_phone_details")?; - s.end() - } - EventDetails::TfaChangeStatusDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 4)?; - s.serialize_field(".tag", "tfa_change_status_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::TfaRemoveBackupPhoneDetails(_) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 1)?; - s.serialize_field(".tag", "tfa_remove_backup_phone_details")?; - s.end() - } - EventDetails::TfaRemoveSecurityKeyDetails(_) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 1)?; - s.serialize_field(".tag", "tfa_remove_security_key_details")?; - s.end() - } - EventDetails::TfaResetDetails(_) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 1)?; - s.serialize_field(".tag", "tfa_reset_details")?; - s.end() - } - EventDetails::ChangedEnterpriseAdminRoleDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 4)?; - s.serialize_field(".tag", "changed_enterprise_admin_role_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::ChangedEnterpriseConnectedTeamStatusDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 5)?; - s.serialize_field(".tag", "changed_enterprise_connected_team_status_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::EndedEnterpriseAdminSessionDetails(_) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 1)?; - s.serialize_field(".tag", "ended_enterprise_admin_session_details")?; - s.end() - } - EventDetails::EndedEnterpriseAdminSessionDeprecatedDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "ended_enterprise_admin_session_deprecated_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::EnterpriseSettingsLockingDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 5)?; - s.serialize_field(".tag", "enterprise_settings_locking_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::GuestAdminChangeStatusDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 7)?; - s.serialize_field(".tag", "guest_admin_change_status_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::StartedEnterpriseAdminSessionDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "started_enterprise_admin_session_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::TeamMergeRequestAcceptedDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "team_merge_request_accepted_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::TeamMergeRequestAcceptedShownToPrimaryTeamDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "team_merge_request_accepted_shown_to_primary_team_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::TeamMergeRequestAcceptedShownToSecondaryTeamDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "team_merge_request_accepted_shown_to_secondary_team_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::TeamMergeRequestAutoCanceledDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "team_merge_request_auto_canceled_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::TeamMergeRequestCanceledDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "team_merge_request_canceled_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::TeamMergeRequestCanceledShownToPrimaryTeamDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "team_merge_request_canceled_shown_to_primary_team_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::TeamMergeRequestCanceledShownToSecondaryTeamDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "team_merge_request_canceled_shown_to_secondary_team_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::TeamMergeRequestExpiredDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "team_merge_request_expired_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::TeamMergeRequestExpiredShownToPrimaryTeamDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "team_merge_request_expired_shown_to_primary_team_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::TeamMergeRequestExpiredShownToSecondaryTeamDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "team_merge_request_expired_shown_to_secondary_team_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::TeamMergeRequestRejectedShownToPrimaryTeamDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "team_merge_request_rejected_shown_to_primary_team_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::TeamMergeRequestRejectedShownToSecondaryTeamDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "team_merge_request_rejected_shown_to_secondary_team_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::TeamMergeRequestReminderDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "team_merge_request_reminder_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::TeamMergeRequestReminderShownToPrimaryTeamDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "team_merge_request_reminder_shown_to_primary_team_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::TeamMergeRequestReminderShownToSecondaryTeamDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "team_merge_request_reminder_shown_to_secondary_team_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::TeamMergeRequestRevokedDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "team_merge_request_revoked_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::TeamMergeRequestSentShownToPrimaryTeamDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 3)?; - s.serialize_field(".tag", "team_merge_request_sent_shown_to_primary_team_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::TeamMergeRequestSentShownToSecondaryTeamDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "team_merge_request_sent_shown_to_secondary_team_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::MissingDetails(x) => { - // struct - let mut s = serializer.serialize_struct("EventDetails", 2)?; - s.serialize_field(".tag", "missing_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - EventDetails::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) + EventCategory::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) } } } -/// The type of the event with description. +/// Additional fields depending on the event type. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // variants may be added in the future -pub enum EventType { - /// (admin_alerting) Changed an alert state - AdminAlertingAlertStateChanged(AdminAlertingAlertStateChangedType), - /// (admin_alerting) Changed an alert setting - AdminAlertingChangedAlertConfig(AdminAlertingChangedAlertConfigType), - /// (admin_alerting) Triggered security alert - AdminAlertingTriggeredAlert(AdminAlertingTriggeredAlertType), - /// (admin_alerting) Completed ransomware restore process - RansomwareRestoreProcessCompleted(RansomwareRestoreProcessCompletedType), - /// (admin_alerting) Started ransomware restore process - RansomwareRestoreProcessStarted(RansomwareRestoreProcessStartedType), - /// (apps) Failed to connect app for member - AppBlockedByPermissions(AppBlockedByPermissionsType), - /// (apps) Linked app for team - AppLinkTeam(AppLinkTeamType), - /// (apps) Linked app for member - AppLinkUser(AppLinkUserType), - /// (apps) Unlinked app for team - AppUnlinkTeam(AppUnlinkTeamType), - /// (apps) Unlinked app for member - AppUnlinkUser(AppUnlinkUserType), - /// (apps) Connected integration for member - IntegrationConnected(IntegrationConnectedType), - /// (apps) Disconnected integration for member - IntegrationDisconnected(IntegrationDisconnectedType), - /// (comments) Added file comment - FileAddComment(FileAddCommentType), - /// (comments) Subscribed to or unsubscribed from comment notifications for file - FileChangeCommentSubscription(FileChangeCommentSubscriptionType), - /// (comments) Deleted file comment - FileDeleteComment(FileDeleteCommentType), - /// (comments) Edited file comment - FileEditComment(FileEditCommentType), - /// (comments) Liked file comment (deprecated, no longer logged) - FileLikeComment(FileLikeCommentType), - /// (comments) Resolved file comment - FileResolveComment(FileResolveCommentType), - /// (comments) Unliked file comment (deprecated, no longer logged) - FileUnlikeComment(FileUnlikeCommentType), - /// (comments) Unresolved file comment - FileUnresolveComment(FileUnresolveCommentType), - /// (data_governance) Added folders to policy - GovernancePolicyAddFolders(GovernancePolicyAddFoldersType), - /// (data_governance) Couldn't add a folder to a policy - GovernancePolicyAddFolderFailed(GovernancePolicyAddFolderFailedType), - /// (data_governance) Content disposed - GovernancePolicyContentDisposed(GovernancePolicyContentDisposedType), - /// (data_governance) Activated a new policy - GovernancePolicyCreate(GovernancePolicyCreateType), +pub enum EventDetails { + AdminAlertingAlertStateChangedDetails(AdminAlertingAlertStateChangedDetails), + AdminAlertingChangedAlertConfigDetails(AdminAlertingChangedAlertConfigDetails), + AdminAlertingTriggeredAlertDetails(AdminAlertingTriggeredAlertDetails), + RansomwareRestoreProcessCompletedDetails(RansomwareRestoreProcessCompletedDetails), + RansomwareRestoreProcessStartedDetails(RansomwareRestoreProcessStartedDetails), + AppBlockedByPermissionsDetails(AppBlockedByPermissionsDetails), + AppLinkTeamDetails(AppLinkTeamDetails), + AppLinkUserDetails(AppLinkUserDetails), + AppUnlinkTeamDetails(AppUnlinkTeamDetails), + AppUnlinkUserDetails(AppUnlinkUserDetails), + IntegrationConnectedDetails(IntegrationConnectedDetails), + IntegrationDisconnectedDetails(IntegrationDisconnectedDetails), + FileAddCommentDetails(FileAddCommentDetails), + FileChangeCommentSubscriptionDetails(FileChangeCommentSubscriptionDetails), + FileDeleteCommentDetails(FileDeleteCommentDetails), + FileEditCommentDetails(FileEditCommentDetails), + FileLikeCommentDetails(FileLikeCommentDetails), + FileResolveCommentDetails(FileResolveCommentDetails), + FileUnlikeCommentDetails(FileUnlikeCommentDetails), + FileUnresolveCommentDetails(FileUnresolveCommentDetails), + DashAddedCommentToStackDetails(DashAddedCommentToStackDetails), + DashAddedConnectorDetails(DashAddedConnectorDetails), + DashAddedLinkToStackDetails(DashAddedLinkToStackDetails), + DashAddedTeamEmailDomainAllowlistDetails(DashAddedTeamEmailDomainAllowlistDetails), + DashAdminAddedOrgWideConnectorDetails(DashAdminAddedOrgWideConnectorDetails), + DashAdminDisabledConnectorDetails(DashAdminDisabledConnectorDetails), + DashAdminEnabledConnectorDetails(DashAdminEnabledConnectorDetails), + DashAdminRemovedOrgWideConnectorDetails(DashAdminRemovedOrgWideConnectorDetails), + DashArchivedStackDetails(DashArchivedStackDetails), + DashChangedAudienceOfSharedLinkToStackDetails(DashChangedAudienceOfSharedLinkToStackDetails), + DashClonedStackDetails(DashClonedStackDetails), + DashConnectorToolsCallDetails(DashConnectorToolsCallDetails), + DashCreatedStackDetails(DashCreatedStackDetails), + DashDeletedCommentFromStackDetails(DashDeletedCommentFromStackDetails), + DashDeletedStackDetails(DashDeletedStackDetails), + DashEditedCommentInStackDetails(DashEditedCommentInStackDetails), + DashExternalUserOpenedStackDetails(DashExternalUserOpenedStackDetails), + DashFirstLaunchedDesktopDetails(DashFirstLaunchedDesktopDetails), + DashFirstLaunchedExtensionDetails(DashFirstLaunchedExtensionDetails), + DashFirstLaunchedWebStartPageDetails(DashFirstLaunchedWebStartPageDetails), + DashOpenedSharedLinkToStackDetails(DashOpenedSharedLinkToStackDetails), + DashOpenedStackDetails(DashOpenedStackDetails), + DashPreviewOptOutStatusChangedDetails(DashPreviewOptOutStatusChangedDetails), + DashRemovedConnectorDetails(DashRemovedConnectorDetails), + DashRemovedLinkFromStackDetails(DashRemovedLinkFromStackDetails), + DashRemovedSharedLinkToStackDetails(DashRemovedSharedLinkToStackDetails), + DashRemovedTeamEmailDomainAllowlistDetails(DashRemovedTeamEmailDomainAllowlistDetails), + DashRenamedStackDetails(DashRenamedStackDetails), + DashSharedLinkToStackDetails(DashSharedLinkToStackDetails), + DashUnarchivedStackDetails(DashUnarchivedStackDetails), + DashViewedCompanyStackDetails(DashViewedCompanyStackDetails), + DashViewedExternalAiActivityReportDetails(DashViewedExternalAiActivityReportDetails), + GovernancePolicyAddFoldersDetails(GovernancePolicyAddFoldersDetails), + GovernancePolicyAddFolderFailedDetails(GovernancePolicyAddFolderFailedDetails), + GovernancePolicyContentDisposedDetails(GovernancePolicyContentDisposedDetails), + GovernancePolicyCreateDetails(GovernancePolicyCreateDetails), + GovernancePolicyDeleteDetails(GovernancePolicyDeleteDetails), + GovernancePolicyEditDetailsDetails(GovernancePolicyEditDetailsDetails), + GovernancePolicyEditDurationDetails(GovernancePolicyEditDurationDetails), + GovernancePolicyExportCreatedDetails(GovernancePolicyExportCreatedDetails), + GovernancePolicyExportRemovedDetails(GovernancePolicyExportRemovedDetails), + GovernancePolicyRemoveFoldersDetails(GovernancePolicyRemoveFoldersDetails), + GovernancePolicyReportCreatedDetails(GovernancePolicyReportCreatedDetails), + GovernancePolicyZipPartDownloadedDetails(GovernancePolicyZipPartDownloadedDetails), + LegalHoldsActivateAHoldDetails(LegalHoldsActivateAHoldDetails), + LegalHoldsAddMembersDetails(LegalHoldsAddMembersDetails), + LegalHoldsChangeHoldDetailsDetails(LegalHoldsChangeHoldDetailsDetails), + LegalHoldsChangeHoldNameDetails(LegalHoldsChangeHoldNameDetails), + LegalHoldsExportAHoldDetails(LegalHoldsExportAHoldDetails), + LegalHoldsExportCancelledDetails(LegalHoldsExportCancelledDetails), + LegalHoldsExportDownloadedDetails(LegalHoldsExportDownloadedDetails), + LegalHoldsExportRemovedDetails(LegalHoldsExportRemovedDetails), + LegalHoldsReleaseAHoldDetails(LegalHoldsReleaseAHoldDetails), + LegalHoldsRemoveMembersDetails(LegalHoldsRemoveMembersDetails), + LegalHoldsReportAHoldDetails(LegalHoldsReportAHoldDetails), + DeviceChangeIpDesktopDetails(DeviceChangeIpDesktopDetails), + DeviceChangeIpMobileDetails(DeviceChangeIpMobileDetails), + DeviceChangeIpWebDetails(DeviceChangeIpWebDetails), + DeviceDeleteOnUnlinkFailDetails(DeviceDeleteOnUnlinkFailDetails), + DeviceDeleteOnUnlinkSuccessDetails(DeviceDeleteOnUnlinkSuccessDetails), + DeviceLinkFailDetails(DeviceLinkFailDetails), + DeviceLinkSuccessDetails(DeviceLinkSuccessDetails), + DeviceManagementDisabledDetails(DeviceManagementDisabledDetails), + DeviceManagementEnabledDetails(DeviceManagementEnabledDetails), + DeviceSyncBackupStatusChangedDetails(DeviceSyncBackupStatusChangedDetails), + DeviceUnlinkDetails(DeviceUnlinkDetails), + DropboxPasswordsExportedDetails(DropboxPasswordsExportedDetails), + DropboxPasswordsNewDeviceEnrolledDetails(DropboxPasswordsNewDeviceEnrolledDetails), + EmmRefreshAuthTokenDetails(EmmRefreshAuthTokenDetails), + ExternalDriveBackupEligibilityStatusCheckedDetails(ExternalDriveBackupEligibilityStatusCheckedDetails), + ExternalDriveBackupStatusChangedDetails(ExternalDriveBackupStatusChangedDetails), + AccountCaptureChangeAvailabilityDetails(AccountCaptureChangeAvailabilityDetails), + AccountCaptureMigrateAccountDetails(AccountCaptureMigrateAccountDetails), + AccountCaptureNotificationEmailsSentDetails(AccountCaptureNotificationEmailsSentDetails), + AccountCaptureRelinquishAccountDetails(AccountCaptureRelinquishAccountDetails), + DisabledDomainInvitesDetails(DisabledDomainInvitesDetails), + DomainInvitesApproveRequestToJoinTeamDetails(DomainInvitesApproveRequestToJoinTeamDetails), + DomainInvitesDeclineRequestToJoinTeamDetails(DomainInvitesDeclineRequestToJoinTeamDetails), + DomainInvitesEmailExistingUsersDetails(DomainInvitesEmailExistingUsersDetails), + DomainInvitesRequestToJoinTeamDetails(DomainInvitesRequestToJoinTeamDetails), + DomainInvitesSetInviteNewUserPrefToNoDetails(DomainInvitesSetInviteNewUserPrefToNoDetails), + DomainInvitesSetInviteNewUserPrefToYesDetails(DomainInvitesSetInviteNewUserPrefToYesDetails), + DomainVerificationAddDomainFailDetails(DomainVerificationAddDomainFailDetails), + DomainVerificationAddDomainSuccessDetails(DomainVerificationAddDomainSuccessDetails), + DomainVerificationRemoveDomainDetails(DomainVerificationRemoveDomainDetails), + EnabledDomainInvitesDetails(EnabledDomainInvitesDetails), + EncryptedFolderCancelTeamKeyRotationDetails(EncryptedFolderCancelTeamKeyRotationDetails), + EncryptedFolderEnrollBackupKeyDetails(EncryptedFolderEnrollBackupKeyDetails), + EncryptedFolderEnrollClientDetails(EncryptedFolderEnrollClientDetails), + EncryptedFolderEnrollTeamDetails(EncryptedFolderEnrollTeamDetails), + EncryptedFolderFinishTeamUnenrollmentDetails(EncryptedFolderFinishTeamUnenrollmentDetails), + EncryptedFolderInitTeamKeyRotationDetails(EncryptedFolderInitTeamKeyRotationDetails), + EncryptedFolderInitTeamUnenrollmentDetails(EncryptedFolderInitTeamUnenrollmentDetails), + EncryptedFolderRemoveBackupKeyDetails(EncryptedFolderRemoveBackupKeyDetails), + EncryptedFolderRotateTeamKeyDetails(EncryptedFolderRotateTeamKeyDetails), + EncryptedFolderUnenrollClientDetails(EncryptedFolderUnenrollClientDetails), + TeamEncryptionKeyActivateKeyDetails(TeamEncryptionKeyActivateKeyDetails), + TeamEncryptionKeyCancelKeyDeletionDetails(TeamEncryptionKeyCancelKeyDeletionDetails), + TeamEncryptionKeyCreateKeyDetails(TeamEncryptionKeyCreateKeyDetails), + TeamEncryptionKeyDeactivateKeyDetails(TeamEncryptionKeyDeactivateKeyDetails), + TeamEncryptionKeyDeleteKeyDetails(TeamEncryptionKeyDeleteKeyDetails), + TeamEncryptionKeyDisableKeyDetails(TeamEncryptionKeyDisableKeyDetails), + TeamEncryptionKeyEnableKeyDetails(TeamEncryptionKeyEnableKeyDetails), + TeamEncryptionKeyRotateKeyDetails(TeamEncryptionKeyRotateKeyDetails), + TeamEncryptionKeyScheduleKeyDeletionDetails(TeamEncryptionKeyScheduleKeyDeletionDetails), + ApplyNamingConventionDetails(ApplyNamingConventionDetails), + CreateFolderDetails(CreateFolderDetails), + FileAddDetails(FileAddDetails), + FileAddFromAutomationDetails(FileAddFromAutomationDetails), + FileCopyDetails(FileCopyDetails), + FileDeleteDetails(FileDeleteDetails), + FileDownloadDetails(FileDownloadDetails), + FileEditDetails(FileEditDetails), + FileGetCopyReferenceDetails(FileGetCopyReferenceDetails), + FileLockingLockStatusChangedDetails(FileLockingLockStatusChangedDetails), + FileMoveDetails(FileMoveDetails), + FilePermanentlyDeleteDetails(FilePermanentlyDeleteDetails), + FilePreviewDetails(FilePreviewDetails), + FileRenameDetails(FileRenameDetails), + FileRestoreDetails(FileRestoreDetails), + FileRevertDetails(FileRevertDetails), + FileRollbackChangesDetails(FileRollbackChangesDetails), + FileSaveCopyReferenceDetails(FileSaveCopyReferenceDetails), + FolderOverviewDescriptionChangedDetails(FolderOverviewDescriptionChangedDetails), + FolderOverviewItemPinnedDetails(FolderOverviewItemPinnedDetails), + FolderOverviewItemUnpinnedDetails(FolderOverviewItemUnpinnedDetails), + ObjectLabelAddedDetails(ObjectLabelAddedDetails), + ObjectLabelRemovedDetails(ObjectLabelRemovedDetails), + ObjectLabelUpdatedValueDetails(ObjectLabelUpdatedValueDetails), + OrganizeFolderWithTidyDetails(OrganizeFolderWithTidyDetails), + ReplayFileDeleteDetails(ReplayFileDeleteDetails), + ReplayFileDownloadedDetails(ReplayFileDownloadedDetails), + ReplayTeamProjectCreatedDetails(ReplayTeamProjectCreatedDetails), + RewindFolderDetails(RewindFolderDetails), + UndoNamingConventionDetails(UndoNamingConventionDetails), + UndoOrganizeFolderWithTidyDetails(UndoOrganizeFolderWithTidyDetails), + UserTagsAddedDetails(UserTagsAddedDetails), + UserTagsRemovedDetails(UserTagsRemovedDetails), + EmailIngestReceiveFileDetails(EmailIngestReceiveFileDetails), + FileRequestAutoCloseDetails(FileRequestAutoCloseDetails), + FileRequestChangeDetails(FileRequestChangeDetails), + FileRequestCloseDetails(FileRequestCloseDetails), + FileRequestCreateDetails(FileRequestCreateDetails), + FileRequestDeleteDetails(FileRequestDeleteDetails), + FileRequestReceiveFileDetails(FileRequestReceiveFileDetails), + GroupAddExternalIdDetails(GroupAddExternalIdDetails), + GroupAddMemberDetails(GroupAddMemberDetails), + GroupChangeExternalIdDetails(GroupChangeExternalIdDetails), + GroupChangeManagementTypeDetails(GroupChangeManagementTypeDetails), + GroupChangeMemberRoleDetails(GroupChangeMemberRoleDetails), + GroupCreateDetails(GroupCreateDetails), + GroupDeleteDetails(GroupDeleteDetails), + GroupDescriptionUpdatedDetails(GroupDescriptionUpdatedDetails), + GroupExternalSharingSettingOverrideChangedDetails(GroupExternalSharingSettingOverrideChangedDetails), + GroupJoinPolicyUpdatedDetails(GroupJoinPolicyUpdatedDetails), + GroupMovedDetails(GroupMovedDetails), + GroupRemoveExternalIdDetails(GroupRemoveExternalIdDetails), + GroupRemoveMemberDetails(GroupRemoveMemberDetails), + GroupRenameDetails(GroupRenameDetails), + AccountLockOrUnlockedDetails(AccountLockOrUnlockedDetails), + EmmErrorDetails(EmmErrorDetails), + GuestAdminSignedInViaTrustedTeamsDetails(GuestAdminSignedInViaTrustedTeamsDetails), + GuestAdminSignedOutViaTrustedTeamsDetails(GuestAdminSignedOutViaTrustedTeamsDetails), + LoginFailDetails(LoginFailDetails), + LoginSuccessDetails(LoginSuccessDetails), + LogoutDetails(LogoutDetails), + ResellerSupportSessionEndDetails(ResellerSupportSessionEndDetails), + ResellerSupportSessionStartDetails(ResellerSupportSessionStartDetails), + SignInAsSessionEndDetails(SignInAsSessionEndDetails), + SignInAsSessionStartDetails(SignInAsSessionStartDetails), + SsoErrorDetails(SsoErrorDetails), + AddonAssignedDetails(AddonAssignedDetails), + AddonRemovedDetails(AddonRemovedDetails), + BackupAdminInvitationSentDetails(BackupAdminInvitationSentDetails), + BackupInvitationOpenedDetails(BackupInvitationOpenedDetails), + CreateTeamInviteLinkDetails(CreateTeamInviteLinkDetails), + DeleteTeamInviteLinkDetails(DeleteTeamInviteLinkDetails), + MemberAddExternalIdDetails(MemberAddExternalIdDetails), + MemberAddNameDetails(MemberAddNameDetails), + MemberChangeAdminRoleDetails(MemberChangeAdminRoleDetails), + MemberChangeEmailDetails(MemberChangeEmailDetails), + MemberChangeExternalIdDetails(MemberChangeExternalIdDetails), + MemberChangeMembershipTypeDetails(MemberChangeMembershipTypeDetails), + MemberChangeNameDetails(MemberChangeNameDetails), + MemberChangeResellerRoleDetails(MemberChangeResellerRoleDetails), + MemberChangeStatusDetails(MemberChangeStatusDetails), + MemberDeleteManualContactsDetails(MemberDeleteManualContactsDetails), + MemberDeleteProfilePhotoDetails(MemberDeleteProfilePhotoDetails), + MemberPermanentlyDeleteAccountContentsDetails(MemberPermanentlyDeleteAccountContentsDetails), + MemberRemoveExternalIdDetails(MemberRemoveExternalIdDetails), + MemberSetProfilePhotoDetails(MemberSetProfilePhotoDetails), + MemberSpaceLimitsAddCustomQuotaDetails(MemberSpaceLimitsAddCustomQuotaDetails), + MemberSpaceLimitsChangeCustomQuotaDetails(MemberSpaceLimitsChangeCustomQuotaDetails), + MemberSpaceLimitsChangeStatusDetails(MemberSpaceLimitsChangeStatusDetails), + MemberSpaceLimitsRemoveCustomQuotaDetails(MemberSpaceLimitsRemoveCustomQuotaDetails), + MemberSuggestDetails(MemberSuggestDetails), + MemberTransferAccountContentsDetails(MemberTransferAccountContentsDetails), + PendingSecondaryEmailAddedDetails(PendingSecondaryEmailAddedDetails), + ProductAssignedToMemberDetails(ProductAssignedToMemberDetails), + ProductRemovedFromMemberDetails(ProductRemovedFromMemberDetails), + SecondaryEmailDeletedDetails(SecondaryEmailDeletedDetails), + SecondaryEmailVerifiedDetails(SecondaryEmailVerifiedDetails), + SecondaryMailsPolicyChangedDetails(SecondaryMailsPolicyChangedDetails), + BinderAddPageDetails(BinderAddPageDetails), + BinderAddSectionDetails(BinderAddSectionDetails), + BinderRemovePageDetails(BinderRemovePageDetails), + BinderRemoveSectionDetails(BinderRemoveSectionDetails), + BinderRenamePageDetails(BinderRenamePageDetails), + BinderRenameSectionDetails(BinderRenameSectionDetails), + BinderReorderPageDetails(BinderReorderPageDetails), + BinderReorderSectionDetails(BinderReorderSectionDetails), + PaperContentAddMemberDetails(PaperContentAddMemberDetails), + PaperContentAddToFolderDetails(PaperContentAddToFolderDetails), + PaperContentArchiveDetails(PaperContentArchiveDetails), + PaperContentCreateDetails(PaperContentCreateDetails), + PaperContentPermanentlyDeleteDetails(PaperContentPermanentlyDeleteDetails), + PaperContentRemoveFromFolderDetails(PaperContentRemoveFromFolderDetails), + PaperContentRemoveMemberDetails(PaperContentRemoveMemberDetails), + PaperContentRenameDetails(PaperContentRenameDetails), + PaperContentRestoreDetails(PaperContentRestoreDetails), + PaperDocAddCommentDetails(PaperDocAddCommentDetails), + PaperDocChangeMemberRoleDetails(PaperDocChangeMemberRoleDetails), + PaperDocChangeSharingPolicyDetails(PaperDocChangeSharingPolicyDetails), + PaperDocChangeSubscriptionDetails(PaperDocChangeSubscriptionDetails), + PaperDocDeletedDetails(PaperDocDeletedDetails), + PaperDocDeleteCommentDetails(PaperDocDeleteCommentDetails), + PaperDocDownloadDetails(PaperDocDownloadDetails), + PaperDocEditDetails(PaperDocEditDetails), + PaperDocEditCommentDetails(PaperDocEditCommentDetails), + PaperDocFollowedDetails(PaperDocFollowedDetails), + PaperDocMentionDetails(PaperDocMentionDetails), + PaperDocOwnershipChangedDetails(PaperDocOwnershipChangedDetails), + PaperDocRequestAccessDetails(PaperDocRequestAccessDetails), + PaperDocResolveCommentDetails(PaperDocResolveCommentDetails), + PaperDocRevertDetails(PaperDocRevertDetails), + PaperDocSlackShareDetails(PaperDocSlackShareDetails), + PaperDocTeamInviteDetails(PaperDocTeamInviteDetails), + PaperDocTrashedDetails(PaperDocTrashedDetails), + PaperDocUnresolveCommentDetails(PaperDocUnresolveCommentDetails), + PaperDocUntrashedDetails(PaperDocUntrashedDetails), + PaperDocViewDetails(PaperDocViewDetails), + PaperExternalViewAllowDetails(PaperExternalViewAllowDetails), + PaperExternalViewDefaultTeamDetails(PaperExternalViewDefaultTeamDetails), + PaperExternalViewForbidDetails(PaperExternalViewForbidDetails), + PaperFolderChangeSubscriptionDetails(PaperFolderChangeSubscriptionDetails), + PaperFolderDeletedDetails(PaperFolderDeletedDetails), + PaperFolderFollowedDetails(PaperFolderFollowedDetails), + PaperFolderTeamInviteDetails(PaperFolderTeamInviteDetails), + PaperPublishedLinkChangePermissionDetails(PaperPublishedLinkChangePermissionDetails), + PaperPublishedLinkCreateDetails(PaperPublishedLinkCreateDetails), + PaperPublishedLinkDisabledDetails(PaperPublishedLinkDisabledDetails), + PaperPublishedLinkViewDetails(PaperPublishedLinkViewDetails), + PasswordChangeDetails(PasswordChangeDetails), + PasswordResetDetails(PasswordResetDetails), + PasswordResetAllDetails(PasswordResetAllDetails), + ClassificationCreateReportDetails(ClassificationCreateReportDetails), + ClassificationCreateReportFailDetails(ClassificationCreateReportFailDetails), + EmmCreateExceptionsReportDetails(EmmCreateExceptionsReportDetails), + EmmCreateUsageReportDetails(EmmCreateUsageReportDetails), + ExportMembersReportDetails(ExportMembersReportDetails), + ExportMembersReportFailDetails(ExportMembersReportFailDetails), + ExternalSharingCreateReportDetails(ExternalSharingCreateReportDetails), + ExternalSharingReportFailedDetails(ExternalSharingReportFailedDetails), + MemberAccessDetailsCreateReportDetails(MemberAccessDetailsCreateReportDetails), + MemberAccessDetailsCreateReportFailedDetails(MemberAccessDetailsCreateReportFailedDetails), + NoExpirationLinkGenCreateReportDetails(NoExpirationLinkGenCreateReportDetails), + NoExpirationLinkGenReportFailedDetails(NoExpirationLinkGenReportFailedDetails), + NoPasswordLinkGenCreateReportDetails(NoPasswordLinkGenCreateReportDetails), + NoPasswordLinkGenReportFailedDetails(NoPasswordLinkGenReportFailedDetails), + NoPasswordLinkViewCreateReportDetails(NoPasswordLinkViewCreateReportDetails), + NoPasswordLinkViewReportFailedDetails(NoPasswordLinkViewReportFailedDetails), + OutdatedLinkViewCreateReportDetails(OutdatedLinkViewCreateReportDetails), + OutdatedLinkViewReportFailedDetails(OutdatedLinkViewReportFailedDetails), + PaperAdminExportStartDetails(PaperAdminExportStartDetails), + RansomwareAlertCreateReportDetails(RansomwareAlertCreateReportDetails), + RansomwareAlertCreateReportFailedDetails(RansomwareAlertCreateReportFailedDetails), + SharedFoldersCreateReportDetails(SharedFoldersCreateReportDetails), + SharedFoldersCreateReportFailedDetails(SharedFoldersCreateReportFailedDetails), + SmartSyncCreateAdminPrivilegeReportDetails(SmartSyncCreateAdminPrivilegeReportDetails), + TeamActivityCreateReportDetails(TeamActivityCreateReportDetails), + TeamActivityCreateReportFailDetails(TeamActivityCreateReportFailDetails), + TeamFoldersCreateReportDetails(TeamFoldersCreateReportDetails), + TeamFoldersCreateReportFailedDetails(TeamFoldersCreateReportFailedDetails), + TeamStorageCreateReportDetails(TeamStorageCreateReportDetails), + TeamStorageCreateReportFailedDetails(TeamStorageCreateReportFailedDetails), + CollectionShareDetails(CollectionShareDetails), + FileTransfersFileAddDetails(FileTransfersFileAddDetails), + FileTransfersTransferDeleteDetails(FileTransfersTransferDeleteDetails), + FileTransfersTransferDownloadDetails(FileTransfersTransferDownloadDetails), + FileTransfersTransferSendDetails(FileTransfersTransferSendDetails), + FileTransfersTransferViewDetails(FileTransfersTransferViewDetails), + NoteAclInviteOnlyDetails(NoteAclInviteOnlyDetails), + NoteAclLinkDetails(NoteAclLinkDetails), + NoteAclTeamLinkDetails(NoteAclTeamLinkDetails), + NoteSharedDetails(NoteSharedDetails), + NoteShareReceiveDetails(NoteShareReceiveDetails), + OpenNoteSharedDetails(OpenNoteSharedDetails), + ReplayFileSharedLinkCreatedDetails(ReplayFileSharedLinkCreatedDetails), + ReplayFileSharedLinkModifiedDetails(ReplayFileSharedLinkModifiedDetails), + ReplayProjectTeamAddDetails(ReplayProjectTeamAddDetails), + ReplayProjectTeamDeleteDetails(ReplayProjectTeamDeleteDetails), + SendAndTrackFileAddedDetails(SendAndTrackFileAddedDetails), + SendAndTrackFileRenamedDetails(SendAndTrackFileRenamedDetails), + SendAndTrackFileUpdatedDetails(SendAndTrackFileUpdatedDetails), + SendAndTrackLinkCreatedDetails(SendAndTrackLinkCreatedDetails), + SendAndTrackLinkDeletedDetails(SendAndTrackLinkDeletedDetails), + SendAndTrackLinkUpdatedDetails(SendAndTrackLinkUpdatedDetails), + SendAndTrackLinkViewedDetails(SendAndTrackLinkViewedDetails), + SendAndTrackRemovedFileAndAssociatedLinksDetails(SendAndTrackRemovedFileAndAssociatedLinksDetails), + SfAddGroupDetails(SfAddGroupDetails), + SfAllowNonMembersToViewSharedLinksDetails(SfAllowNonMembersToViewSharedLinksDetails), + SfExternalInviteWarnDetails(SfExternalInviteWarnDetails), + SfFbInviteDetails(SfFbInviteDetails), + SfFbInviteChangeRoleDetails(SfFbInviteChangeRoleDetails), + SfFbUninviteDetails(SfFbUninviteDetails), + SfInviteGroupDetails(SfInviteGroupDetails), + SfTeamGrantAccessDetails(SfTeamGrantAccessDetails), + SfTeamInviteDetails(SfTeamInviteDetails), + SfTeamInviteChangeRoleDetails(SfTeamInviteChangeRoleDetails), + SfTeamJoinDetails(SfTeamJoinDetails), + SfTeamJoinFromOobLinkDetails(SfTeamJoinFromOobLinkDetails), + SfTeamUninviteDetails(SfTeamUninviteDetails), + SharedContentAddInviteesDetails(SharedContentAddInviteesDetails), + SharedContentAddLinkExpiryDetails(SharedContentAddLinkExpiryDetails), + SharedContentAddLinkPasswordDetails(SharedContentAddLinkPasswordDetails), + SharedContentAddMemberDetails(SharedContentAddMemberDetails), + SharedContentChangeDownloadsPolicyDetails(SharedContentChangeDownloadsPolicyDetails), + SharedContentChangeInviteeRoleDetails(SharedContentChangeInviteeRoleDetails), + SharedContentChangeLinkAudienceDetails(SharedContentChangeLinkAudienceDetails), + SharedContentChangeLinkExpiryDetails(SharedContentChangeLinkExpiryDetails), + SharedContentChangeLinkPasswordDetails(SharedContentChangeLinkPasswordDetails), + SharedContentChangeMemberRoleDetails(SharedContentChangeMemberRoleDetails), + SharedContentChangeViewerInfoPolicyDetails(SharedContentChangeViewerInfoPolicyDetails), + SharedContentClaimInvitationDetails(SharedContentClaimInvitationDetails), + SharedContentCopyDetails(SharedContentCopyDetails), + SharedContentDownloadDetails(SharedContentDownloadDetails), + SharedContentRelinquishMembershipDetails(SharedContentRelinquishMembershipDetails), + SharedContentRemoveInviteesDetails(SharedContentRemoveInviteesDetails), + SharedContentRemoveLinkExpiryDetails(SharedContentRemoveLinkExpiryDetails), + SharedContentRemoveLinkPasswordDetails(SharedContentRemoveLinkPasswordDetails), + SharedContentRemoveMemberDetails(SharedContentRemoveMemberDetails), + SharedContentRequestAccessDetails(SharedContentRequestAccessDetails), + SharedContentRestoreInviteesDetails(SharedContentRestoreInviteesDetails), + SharedContentRestoreMemberDetails(SharedContentRestoreMemberDetails), + SharedContentUnshareDetails(SharedContentUnshareDetails), + SharedContentViewDetails(SharedContentViewDetails), + SharedFolderChangeLinkPolicyDetails(SharedFolderChangeLinkPolicyDetails), + SharedFolderChangeMembersInheritancePolicyDetails(SharedFolderChangeMembersInheritancePolicyDetails), + SharedFolderChangeMembersManagementPolicyDetails(SharedFolderChangeMembersManagementPolicyDetails), + SharedFolderChangeMembersPolicyDetails(SharedFolderChangeMembersPolicyDetails), + SharedFolderCreateDetails(SharedFolderCreateDetails), + SharedFolderDeclineInvitationDetails(SharedFolderDeclineInvitationDetails), + SharedFolderMountDetails(SharedFolderMountDetails), + SharedFolderNestDetails(SharedFolderNestDetails), + SharedFolderTransferOwnershipDetails(SharedFolderTransferOwnershipDetails), + SharedFolderUnmountDetails(SharedFolderUnmountDetails), + SharedLinkAddExpiryDetails(SharedLinkAddExpiryDetails), + SharedLinkChangeExpiryDetails(SharedLinkChangeExpiryDetails), + SharedLinkChangeVisibilityDetails(SharedLinkChangeVisibilityDetails), + SharedLinkCopyDetails(SharedLinkCopyDetails), + SharedLinkCreateDetails(SharedLinkCreateDetails), + SharedLinkDisableDetails(SharedLinkDisableDetails), + SharedLinkDownloadDetails(SharedLinkDownloadDetails), + SharedLinkRemoveExpiryDetails(SharedLinkRemoveExpiryDetails), + SharedLinkRemoveVisitorDetails(SharedLinkRemoveVisitorDetails), + SharedLinkSettingsAddExpirationDetails(SharedLinkSettingsAddExpirationDetails), + SharedLinkSettingsAddPasswordDetails(SharedLinkSettingsAddPasswordDetails), + SharedLinkSettingsAllowDownloadDisabledDetails(SharedLinkSettingsAllowDownloadDisabledDetails), + SharedLinkSettingsAllowDownloadEnabledDetails(SharedLinkSettingsAllowDownloadEnabledDetails), + SharedLinkSettingsChangeAudienceDetails(SharedLinkSettingsChangeAudienceDetails), + SharedLinkSettingsChangeExpirationDetails(SharedLinkSettingsChangeExpirationDetails), + SharedLinkSettingsChangePasswordDetails(SharedLinkSettingsChangePasswordDetails), + SharedLinkSettingsRemoveExpirationDetails(SharedLinkSettingsRemoveExpirationDetails), + SharedLinkSettingsRemovePasswordDetails(SharedLinkSettingsRemovePasswordDetails), + SharedLinkShareDetails(SharedLinkShareDetails), + SharedLinkViewDetails(SharedLinkViewDetails), + SharedNoteOpenedDetails(SharedNoteOpenedDetails), + ShmodelDisableDownloadsDetails(ShmodelDisableDownloadsDetails), + ShmodelEnableDownloadsDetails(ShmodelEnableDownloadsDetails), + ShmodelGroupShareDetails(ShmodelGroupShareDetails), + ShowcaseAccessGrantedDetails(ShowcaseAccessGrantedDetails), + ShowcaseAddMemberDetails(ShowcaseAddMemberDetails), + ShowcaseArchivedDetails(ShowcaseArchivedDetails), + ShowcaseCreatedDetails(ShowcaseCreatedDetails), + ShowcaseDeleteCommentDetails(ShowcaseDeleteCommentDetails), + ShowcaseEditedDetails(ShowcaseEditedDetails), + ShowcaseEditCommentDetails(ShowcaseEditCommentDetails), + ShowcaseFileAddedDetails(ShowcaseFileAddedDetails), + ShowcaseFileDownloadDetails(ShowcaseFileDownloadDetails), + ShowcaseFileRemovedDetails(ShowcaseFileRemovedDetails), + ShowcaseFileViewDetails(ShowcaseFileViewDetails), + ShowcasePermanentlyDeletedDetails(ShowcasePermanentlyDeletedDetails), + ShowcasePostCommentDetails(ShowcasePostCommentDetails), + ShowcaseRemoveMemberDetails(ShowcaseRemoveMemberDetails), + ShowcaseRenamedDetails(ShowcaseRenamedDetails), + ShowcaseRequestAccessDetails(ShowcaseRequestAccessDetails), + ShowcaseResolveCommentDetails(ShowcaseResolveCommentDetails), + ShowcaseRestoredDetails(ShowcaseRestoredDetails), + ShowcaseTrashedDetails(ShowcaseTrashedDetails), + ShowcaseTrashedDeprecatedDetails(ShowcaseTrashedDeprecatedDetails), + ShowcaseUnresolveCommentDetails(ShowcaseUnresolveCommentDetails), + ShowcaseUntrashedDetails(ShowcaseUntrashedDetails), + ShowcaseUntrashedDeprecatedDetails(ShowcaseUntrashedDeprecatedDetails), + ShowcaseViewDetails(ShowcaseViewDetails), + SignSignatureRequestCanceledDetails(SignSignatureRequestCanceledDetails), + SignSignatureRequestCompletedDetails(SignSignatureRequestCompletedDetails), + SignSignatureRequestDeclinedDetails(SignSignatureRequestDeclinedDetails), + SignSignatureRequestOpenedDetails(SignSignatureRequestOpenedDetails), + SignSignatureRequestReminderSentDetails(SignSignatureRequestReminderSentDetails), + SignSignatureRequestSentDetails(SignSignatureRequestSentDetails), + SignTemplateCreatedDetails(SignTemplateCreatedDetails), + SignTemplateSharedDetails(SignTemplateSharedDetails), + RiscSecurityEventDetails(RiscSecurityEventDetails), + SsoAddCertDetails(SsoAddCertDetails), + SsoAddLoginUrlDetails(SsoAddLoginUrlDetails), + SsoAddLogoutUrlDetails(SsoAddLogoutUrlDetails), + SsoChangeCertDetails(SsoChangeCertDetails), + SsoChangeLoginUrlDetails(SsoChangeLoginUrlDetails), + SsoChangeLogoutUrlDetails(SsoChangeLogoutUrlDetails), + SsoChangeSamlIdentityModeDetails(SsoChangeSamlIdentityModeDetails), + SsoRemoveCertDetails(SsoRemoveCertDetails), + SsoRemoveLoginUrlDetails(SsoRemoveLoginUrlDetails), + SsoRemoveLogoutUrlDetails(SsoRemoveLogoutUrlDetails), + TeamFolderChangeStatusDetails(TeamFolderChangeStatusDetails), + TeamFolderCreateDetails(TeamFolderCreateDetails), + TeamFolderDowngradeDetails(TeamFolderDowngradeDetails), + TeamFolderPermanentlyDeleteDetails(TeamFolderPermanentlyDeleteDetails), + TeamFolderRenameDetails(TeamFolderRenameDetails), + TeamSelectiveSyncSettingsChangedDetails(TeamSelectiveSyncSettingsChangedDetails), + AccountCaptureChangePolicyDetails(AccountCaptureChangePolicyDetails), + AdminEmailRemindersChangedDetails(AdminEmailRemindersChangedDetails), + AiThirdPartySharingDropboxBasePolicyChangedDetails(AiThirdPartySharingDropboxBasePolicyChangedDetails), + AllowDownloadDisabledDetails(AllowDownloadDisabledDetails), + AllowDownloadEnabledDetails(AllowDownloadEnabledDetails), + AppleLoginChangePolicyDetails(AppleLoginChangePolicyDetails), + AppPermissionsChangedDetails(AppPermissionsChangedDetails), + CameraUploadsPolicyChangedDetails(CameraUploadsPolicyChangedDetails), + CaptureTeamSpacePolicyChangedDetails(CaptureTeamSpacePolicyChangedDetails), + CaptureTranscriptPolicyChangedDetails(CaptureTranscriptPolicyChangedDetails), + ClassificationChangePolicyDetails(ClassificationChangePolicyDetails), + ComputerBackupPolicyChangedDetails(ComputerBackupPolicyChangedDetails), + ContentAdministrationPolicyChangedDetails(ContentAdministrationPolicyChangedDetails), + ContentDeletionProtectionChangePolicyDetails(ContentDeletionProtectionChangePolicyDetails), + DashExternalSharingPolicyChangedDetails(DashExternalSharingPolicyChangedDetails), + DataPlacementRestrictionChangePolicyDetails(DataPlacementRestrictionChangePolicyDetails), + DataPlacementRestrictionSatisfyPolicyDetails(DataPlacementRestrictionSatisfyPolicyDetails), + DeviceApprovalsAddExceptionDetails(DeviceApprovalsAddExceptionDetails), + DeviceApprovalsChangeDesktopPolicyDetails(DeviceApprovalsChangeDesktopPolicyDetails), + DeviceApprovalsChangeMobilePolicyDetails(DeviceApprovalsChangeMobilePolicyDetails), + DeviceApprovalsChangeOverageActionDetails(DeviceApprovalsChangeOverageActionDetails), + DeviceApprovalsChangeUnlinkActionDetails(DeviceApprovalsChangeUnlinkActionDetails), + DeviceApprovalsRemoveExceptionDetails(DeviceApprovalsRemoveExceptionDetails), + DirectoryRestrictionsAddMembersDetails(DirectoryRestrictionsAddMembersDetails), + DirectoryRestrictionsRemoveMembersDetails(DirectoryRestrictionsRemoveMembersDetails), + DropboxPasswordsPolicyChangedDetails(DropboxPasswordsPolicyChangedDetails), + EmailIngestPolicyChangedDetails(EmailIngestPolicyChangedDetails), + EmmAddExceptionDetails(EmmAddExceptionDetails), + EmmChangePolicyDetails(EmmChangePolicyDetails), + EmmRemoveExceptionDetails(EmmRemoveExceptionDetails), + ExtendedVersionHistoryChangePolicyDetails(ExtendedVersionHistoryChangePolicyDetails), + ExternalDriveBackupPolicyChangedDetails(ExternalDriveBackupPolicyChangedDetails), + FileCommentsChangePolicyDetails(FileCommentsChangePolicyDetails), + FileLockingPolicyChangedDetails(FileLockingPolicyChangedDetails), + FileProviderMigrationPolicyChangedDetails(FileProviderMigrationPolicyChangedDetails), + FileRequestsChangePolicyDetails(FileRequestsChangePolicyDetails), + FileRequestsEmailsEnabledDetails(FileRequestsEmailsEnabledDetails), + FileRequestsEmailsRestrictedToTeamOnlyDetails(FileRequestsEmailsRestrictedToTeamOnlyDetails), + FileTransfersPolicyChangedDetails(FileTransfersPolicyChangedDetails), + FlexibleFileNamesPolicyChangedDetails(FlexibleFileNamesPolicyChangedDetails), + FolderLinkRestrictionPolicyChangedDetails(FolderLinkRestrictionPolicyChangedDetails), + GoogleSsoChangePolicyDetails(GoogleSsoChangePolicyDetails), + GroupUserManagementChangePolicyDetails(GroupUserManagementChangePolicyDetails), + IntegrationPolicyChangedDetails(IntegrationPolicyChangedDetails), + InviteAcceptanceEmailPolicyChangedDetails(InviteAcceptanceEmailPolicyChangedDetails), + MemberRequestsChangePolicyDetails(MemberRequestsChangePolicyDetails), + MemberSendInvitePolicyChangedDetails(MemberSendInvitePolicyChangedDetails), + MemberSpaceLimitsAddExceptionDetails(MemberSpaceLimitsAddExceptionDetails), + MemberSpaceLimitsChangeCapsTypePolicyDetails(MemberSpaceLimitsChangeCapsTypePolicyDetails), + MemberSpaceLimitsChangePolicyDetails(MemberSpaceLimitsChangePolicyDetails), + MemberSpaceLimitsRemoveExceptionDetails(MemberSpaceLimitsRemoveExceptionDetails), + MemberSuggestionsChangePolicyDetails(MemberSuggestionsChangePolicyDetails), + MicrosoftLoginChangePolicyDetails(MicrosoftLoginChangePolicyDetails), + MicrosoftOfficeAddinChangePolicyDetails(MicrosoftOfficeAddinChangePolicyDetails), + NetworkControlChangePolicyDetails(NetworkControlChangePolicyDetails), + PaperChangeDeploymentPolicyDetails(PaperChangeDeploymentPolicyDetails), + PaperChangeMemberLinkPolicyDetails(PaperChangeMemberLinkPolicyDetails), + PaperChangeMemberPolicyDetails(PaperChangeMemberPolicyDetails), + PaperChangePolicyDetails(PaperChangePolicyDetails), + PaperDefaultFolderPolicyChangedDetails(PaperDefaultFolderPolicyChangedDetails), + PaperDesktopPolicyChangedDetails(PaperDesktopPolicyChangedDetails), + PaperEnabledUsersGroupAdditionDetails(PaperEnabledUsersGroupAdditionDetails), + PaperEnabledUsersGroupRemovalDetails(PaperEnabledUsersGroupRemovalDetails), + PasskeyLoginPolicyChangedDetails(PasskeyLoginPolicyChangedDetails), + PasswordStrengthRequirementsChangePolicyDetails(PasswordStrengthRequirementsChangePolicyDetails), + PermanentDeleteChangePolicyDetails(PermanentDeleteChangePolicyDetails), + PreviewsAiPolicyChangedDetails(PreviewsAiPolicyChangedDetails), + ReplayAddingPeoplePolicyChangedDetails(ReplayAddingPeoplePolicyChangedDetails), + ReplaySharingPolicyChangedDetails(ReplaySharingPolicyChangedDetails), + ResellerSupportChangePolicyDetails(ResellerSupportChangePolicyDetails), + RewindPolicyChangedDetails(RewindPolicyChangedDetails), + SendAndTrackPolicyChangedDetails(SendAndTrackPolicyChangedDetails), + SendExternalSharingPolicyChangedDetails(SendExternalSharingPolicyChangedDetails), + SendForSignaturePolicyChangedDetails(SendForSignaturePolicyChangedDetails), + SharedLinkDefaultPermissionsPolicyChangedDetails(SharedLinkDefaultPermissionsPolicyChangedDetails), + SharingChangeFolderJoinPolicyDetails(SharingChangeFolderJoinPolicyDetails), + SharingChangeLinkAllowChangeExpirationPolicyDetails(SharingChangeLinkAllowChangeExpirationPolicyDetails), + SharingChangeLinkDefaultExpirationPolicyDetails(SharingChangeLinkDefaultExpirationPolicyDetails), + SharingChangeLinkEnforcePasswordPolicyDetails(SharingChangeLinkEnforcePasswordPolicyDetails), + SharingChangeLinkPolicyDetails(SharingChangeLinkPolicyDetails), + SharingChangeMemberPolicyDetails(SharingChangeMemberPolicyDetails), + ShowcaseChangeDownloadPolicyDetails(ShowcaseChangeDownloadPolicyDetails), + ShowcaseChangeEnabledPolicyDetails(ShowcaseChangeEnabledPolicyDetails), + ShowcaseChangeExternalSharingPolicyDetails(ShowcaseChangeExternalSharingPolicyDetails), + SignExternalSharingPolicyChangedDetails(SignExternalSharingPolicyChangedDetails), + SignTemplateCreationPermissionChangedDetails(SignTemplateCreationPermissionChangedDetails), + SmarterSmartSyncPolicyChangedDetails(SmarterSmartSyncPolicyChangedDetails), + SmartSyncChangePolicyDetails(SmartSyncChangePolicyDetails), + SmartSyncNotOptOutDetails(SmartSyncNotOptOutDetails), + SmartSyncOptOutDetails(SmartSyncOptOutDetails), + SsoChangePolicyDetails(SsoChangePolicyDetails), + StackCrossTeamAccessPolicyChangedDetails(StackCrossTeamAccessPolicyChangedDetails), + TeamBrandingPolicyChangedDetails(TeamBrandingPolicyChangedDetails), + TeamExtensionsPolicyChangedDetails(TeamExtensionsPolicyChangedDetails), + TeamMemberStorageRequestPolicyChangedDetails(TeamMemberStorageRequestPolicyChangedDetails), + TeamSelectiveSyncPolicyChangedDetails(TeamSelectiveSyncPolicyChangedDetails), + TeamSharingWhitelistSubjectsChangedDetails(TeamSharingWhitelistSubjectsChangedDetails), + TfaAddExceptionDetails(TfaAddExceptionDetails), + TfaChangePolicyDetails(TfaChangePolicyDetails), + TfaRemoveExceptionDetails(TfaRemoveExceptionDetails), + TopLevelContentPolicyChangedDetails(TopLevelContentPolicyChangedDetails), + TwoAccountChangePolicyDetails(TwoAccountChangePolicyDetails), + ViewerInfoPolicyChangedDetails(ViewerInfoPolicyChangedDetails), + WatermarkingPolicyChangedDetails(WatermarkingPolicyChangedDetails), + WebSessionsChangeActiveSessionLimitDetails(WebSessionsChangeActiveSessionLimitDetails), + WebSessionsChangeFixedLengthPolicyDetails(WebSessionsChangeFixedLengthPolicyDetails), + WebSessionsChangeIdleLengthPolicyDetails(WebSessionsChangeIdleLengthPolicyDetails), + DataResidencyMigrationRequestSuccessfulDetails(DataResidencyMigrationRequestSuccessfulDetails), + DataResidencyMigrationRequestUnsuccessfulDetails(DataResidencyMigrationRequestUnsuccessfulDetails), + TeamMergeFromDetails(TeamMergeFromDetails), + TeamMergeToDetails(TeamMergeToDetails), + TeamProfileAddBackgroundDetails(TeamProfileAddBackgroundDetails), + TeamProfileAddLogoDetails(TeamProfileAddLogoDetails), + TeamProfileChangeBackgroundDetails(TeamProfileChangeBackgroundDetails), + TeamProfileChangeDefaultLanguageDetails(TeamProfileChangeDefaultLanguageDetails), + TeamProfileChangeLogoDetails(TeamProfileChangeLogoDetails), + TeamProfileChangeNameDetails(TeamProfileChangeNameDetails), + TeamProfileRemoveBackgroundDetails(TeamProfileRemoveBackgroundDetails), + TeamProfileRemoveLogoDetails(TeamProfileRemoveLogoDetails), + PasskeyAddDetails(PasskeyAddDetails), + PasskeyRemoveDetails(PasskeyRemoveDetails), + TfaAddBackupPhoneDetails(TfaAddBackupPhoneDetails), + TfaAddSecurityKeyDetails(TfaAddSecurityKeyDetails), + TfaChangeBackupPhoneDetails(TfaChangeBackupPhoneDetails), + TfaChangeStatusDetails(TfaChangeStatusDetails), + TfaRemoveBackupPhoneDetails(TfaRemoveBackupPhoneDetails), + TfaRemoveSecurityKeyDetails(TfaRemoveSecurityKeyDetails), + TfaResetDetails(TfaResetDetails), + ChangedEnterpriseAdminRoleDetails(ChangedEnterpriseAdminRoleDetails), + ChangedEnterpriseConnectedTeamStatusDetails(ChangedEnterpriseConnectedTeamStatusDetails), + EndedEnterpriseAdminSessionDetails(EndedEnterpriseAdminSessionDetails), + EndedEnterpriseAdminSessionDeprecatedDetails(EndedEnterpriseAdminSessionDeprecatedDetails), + EnterpriseSettingsLockingDetails(EnterpriseSettingsLockingDetails), + GuestAdminChangeStatusDetails(GuestAdminChangeStatusDetails), + StartedEnterpriseAdminSessionDetails(StartedEnterpriseAdminSessionDetails), + TeamMergeRequestAcceptedDetails(TeamMergeRequestAcceptedDetails), + TeamMergeRequestAcceptedShownToPrimaryTeamDetails(TeamMergeRequestAcceptedShownToPrimaryTeamDetails), + TeamMergeRequestAcceptedShownToSecondaryTeamDetails(TeamMergeRequestAcceptedShownToSecondaryTeamDetails), + TeamMergeRequestAutoCanceledDetails(TeamMergeRequestAutoCanceledDetails), + TeamMergeRequestCanceledDetails(TeamMergeRequestCanceledDetails), + TeamMergeRequestCanceledShownToPrimaryTeamDetails(TeamMergeRequestCanceledShownToPrimaryTeamDetails), + TeamMergeRequestCanceledShownToSecondaryTeamDetails(TeamMergeRequestCanceledShownToSecondaryTeamDetails), + TeamMergeRequestExpiredDetails(TeamMergeRequestExpiredDetails), + TeamMergeRequestExpiredShownToPrimaryTeamDetails(TeamMergeRequestExpiredShownToPrimaryTeamDetails), + TeamMergeRequestExpiredShownToSecondaryTeamDetails(TeamMergeRequestExpiredShownToSecondaryTeamDetails), + TeamMergeRequestRejectedShownToPrimaryTeamDetails(TeamMergeRequestRejectedShownToPrimaryTeamDetails), + TeamMergeRequestRejectedShownToSecondaryTeamDetails(TeamMergeRequestRejectedShownToSecondaryTeamDetails), + TeamMergeRequestReminderDetails(TeamMergeRequestReminderDetails), + TeamMergeRequestReminderShownToPrimaryTeamDetails(TeamMergeRequestReminderShownToPrimaryTeamDetails), + TeamMergeRequestReminderShownToSecondaryTeamDetails(TeamMergeRequestReminderShownToSecondaryTeamDetails), + TeamMergeRequestRevokedDetails(TeamMergeRequestRevokedDetails), + TeamMergeRequestSentShownToPrimaryTeamDetails(TeamMergeRequestSentShownToPrimaryTeamDetails), + TeamMergeRequestSentShownToSecondaryTeamDetails(TeamMergeRequestSentShownToSecondaryTeamDetails), + /// Hints that this event was returned with missing details due to an internal error. + MissingDetails(MissingDetails), + /// Catch-all used for unrecognized values returned from the server. Encountering this value + /// typically indicates that this SDK version is out of date. + Other, +} + +impl<'de> ::serde::de::Deserialize<'de> for EventDetails { + fn deserialize>(deserializer: D) -> Result { + // union deserializer + use serde::de::{self, MapAccess, Visitor}; + struct EnumVisitor; + impl<'de> Visitor<'de> for EnumVisitor { + type Value = EventDetails; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a EventDetails structure") + } + fn visit_map>(self, mut map: V) -> Result { + let tag: &str = match map.next_key()? { + Some(".tag") => map.next_value()?, + _ => return Err(de::Error::missing_field(".tag")) + }; + let value = match tag { + "admin_alerting_alert_state_changed_details" => EventDetails::AdminAlertingAlertStateChangedDetails(AdminAlertingAlertStateChangedDetails::internal_deserialize(&mut map)?), + "admin_alerting_changed_alert_config_details" => EventDetails::AdminAlertingChangedAlertConfigDetails(AdminAlertingChangedAlertConfigDetails::internal_deserialize(&mut map)?), + "admin_alerting_triggered_alert_details" => EventDetails::AdminAlertingTriggeredAlertDetails(AdminAlertingTriggeredAlertDetails::internal_deserialize(&mut map)?), + "ransomware_restore_process_completed_details" => EventDetails::RansomwareRestoreProcessCompletedDetails(RansomwareRestoreProcessCompletedDetails::internal_deserialize(&mut map)?), + "ransomware_restore_process_started_details" => EventDetails::RansomwareRestoreProcessStartedDetails(RansomwareRestoreProcessStartedDetails::internal_deserialize(&mut map)?), + "app_blocked_by_permissions_details" => EventDetails::AppBlockedByPermissionsDetails(AppBlockedByPermissionsDetails::internal_deserialize(&mut map)?), + "app_link_team_details" => EventDetails::AppLinkTeamDetails(AppLinkTeamDetails::internal_deserialize(&mut map)?), + "app_link_user_details" => EventDetails::AppLinkUserDetails(AppLinkUserDetails::internal_deserialize(&mut map)?), + "app_unlink_team_details" => EventDetails::AppUnlinkTeamDetails(AppUnlinkTeamDetails::internal_deserialize(&mut map)?), + "app_unlink_user_details" => EventDetails::AppUnlinkUserDetails(AppUnlinkUserDetails::internal_deserialize(&mut map)?), + "integration_connected_details" => EventDetails::IntegrationConnectedDetails(IntegrationConnectedDetails::internal_deserialize(&mut map)?), + "integration_disconnected_details" => EventDetails::IntegrationDisconnectedDetails(IntegrationDisconnectedDetails::internal_deserialize(&mut map)?), + "file_add_comment_details" => EventDetails::FileAddCommentDetails(FileAddCommentDetails::internal_deserialize(&mut map)?), + "file_change_comment_subscription_details" => EventDetails::FileChangeCommentSubscriptionDetails(FileChangeCommentSubscriptionDetails::internal_deserialize(&mut map)?), + "file_delete_comment_details" => EventDetails::FileDeleteCommentDetails(FileDeleteCommentDetails::internal_deserialize(&mut map)?), + "file_edit_comment_details" => EventDetails::FileEditCommentDetails(FileEditCommentDetails::internal_deserialize(&mut map)?), + "file_like_comment_details" => EventDetails::FileLikeCommentDetails(FileLikeCommentDetails::internal_deserialize(&mut map)?), + "file_resolve_comment_details" => EventDetails::FileResolveCommentDetails(FileResolveCommentDetails::internal_deserialize(&mut map)?), + "file_unlike_comment_details" => EventDetails::FileUnlikeCommentDetails(FileUnlikeCommentDetails::internal_deserialize(&mut map)?), + "file_unresolve_comment_details" => EventDetails::FileUnresolveCommentDetails(FileUnresolveCommentDetails::internal_deserialize(&mut map)?), + "dash_added_comment_to_stack_details" => EventDetails::DashAddedCommentToStackDetails(DashAddedCommentToStackDetails::internal_deserialize(&mut map)?), + "dash_added_connector_details" => EventDetails::DashAddedConnectorDetails(DashAddedConnectorDetails::internal_deserialize(&mut map)?), + "dash_added_link_to_stack_details" => EventDetails::DashAddedLinkToStackDetails(DashAddedLinkToStackDetails::internal_deserialize(&mut map)?), + "dash_added_team_email_domain_allowlist_details" => EventDetails::DashAddedTeamEmailDomainAllowlistDetails(DashAddedTeamEmailDomainAllowlistDetails::internal_deserialize(&mut map)?), + "dash_admin_added_org_wide_connector_details" => EventDetails::DashAdminAddedOrgWideConnectorDetails(DashAdminAddedOrgWideConnectorDetails::internal_deserialize(&mut map)?), + "dash_admin_disabled_connector_details" => EventDetails::DashAdminDisabledConnectorDetails(DashAdminDisabledConnectorDetails::internal_deserialize(&mut map)?), + "dash_admin_enabled_connector_details" => EventDetails::DashAdminEnabledConnectorDetails(DashAdminEnabledConnectorDetails::internal_deserialize(&mut map)?), + "dash_admin_removed_org_wide_connector_details" => EventDetails::DashAdminRemovedOrgWideConnectorDetails(DashAdminRemovedOrgWideConnectorDetails::internal_deserialize(&mut map)?), + "dash_archived_stack_details" => EventDetails::DashArchivedStackDetails(DashArchivedStackDetails::internal_deserialize(&mut map)?), + "dash_changed_audience_of_shared_link_to_stack_details" => EventDetails::DashChangedAudienceOfSharedLinkToStackDetails(DashChangedAudienceOfSharedLinkToStackDetails::internal_deserialize(&mut map)?), + "dash_cloned_stack_details" => EventDetails::DashClonedStackDetails(DashClonedStackDetails::internal_deserialize(&mut map)?), + "dash_connector_tools_call_details" => EventDetails::DashConnectorToolsCallDetails(DashConnectorToolsCallDetails::internal_deserialize(&mut map)?), + "dash_created_stack_details" => EventDetails::DashCreatedStackDetails(DashCreatedStackDetails::internal_deserialize(&mut map)?), + "dash_deleted_comment_from_stack_details" => EventDetails::DashDeletedCommentFromStackDetails(DashDeletedCommentFromStackDetails::internal_deserialize(&mut map)?), + "dash_deleted_stack_details" => EventDetails::DashDeletedStackDetails(DashDeletedStackDetails::internal_deserialize(&mut map)?), + "dash_edited_comment_in_stack_details" => EventDetails::DashEditedCommentInStackDetails(DashEditedCommentInStackDetails::internal_deserialize(&mut map)?), + "dash_external_user_opened_stack_details" => EventDetails::DashExternalUserOpenedStackDetails(DashExternalUserOpenedStackDetails::internal_deserialize(&mut map)?), + "dash_first_launched_desktop_details" => EventDetails::DashFirstLaunchedDesktopDetails(DashFirstLaunchedDesktopDetails::internal_deserialize(&mut map)?), + "dash_first_launched_extension_details" => EventDetails::DashFirstLaunchedExtensionDetails(DashFirstLaunchedExtensionDetails::internal_deserialize(&mut map)?), + "dash_first_launched_web_start_page_details" => EventDetails::DashFirstLaunchedWebStartPageDetails(DashFirstLaunchedWebStartPageDetails::internal_deserialize(&mut map)?), + "dash_opened_shared_link_to_stack_details" => EventDetails::DashOpenedSharedLinkToStackDetails(DashOpenedSharedLinkToStackDetails::internal_deserialize(&mut map)?), + "dash_opened_stack_details" => EventDetails::DashOpenedStackDetails(DashOpenedStackDetails::internal_deserialize(&mut map)?), + "dash_preview_opt_out_status_changed_details" => EventDetails::DashPreviewOptOutStatusChangedDetails(DashPreviewOptOutStatusChangedDetails::internal_deserialize(&mut map)?), + "dash_removed_connector_details" => EventDetails::DashRemovedConnectorDetails(DashRemovedConnectorDetails::internal_deserialize(&mut map)?), + "dash_removed_link_from_stack_details" => EventDetails::DashRemovedLinkFromStackDetails(DashRemovedLinkFromStackDetails::internal_deserialize(&mut map)?), + "dash_removed_shared_link_to_stack_details" => EventDetails::DashRemovedSharedLinkToStackDetails(DashRemovedSharedLinkToStackDetails::internal_deserialize(&mut map)?), + "dash_removed_team_email_domain_allowlist_details" => EventDetails::DashRemovedTeamEmailDomainAllowlistDetails(DashRemovedTeamEmailDomainAllowlistDetails::internal_deserialize(&mut map)?), + "dash_renamed_stack_details" => EventDetails::DashRenamedStackDetails(DashRenamedStackDetails::internal_deserialize(&mut map)?), + "dash_shared_link_to_stack_details" => EventDetails::DashSharedLinkToStackDetails(DashSharedLinkToStackDetails::internal_deserialize(&mut map)?), + "dash_unarchived_stack_details" => EventDetails::DashUnarchivedStackDetails(DashUnarchivedStackDetails::internal_deserialize(&mut map)?), + "dash_viewed_company_stack_details" => EventDetails::DashViewedCompanyStackDetails(DashViewedCompanyStackDetails::internal_deserialize(&mut map)?), + "dash_viewed_external_ai_activity_report_details" => EventDetails::DashViewedExternalAiActivityReportDetails(DashViewedExternalAiActivityReportDetails::internal_deserialize(&mut map)?), + "governance_policy_add_folders_details" => EventDetails::GovernancePolicyAddFoldersDetails(GovernancePolicyAddFoldersDetails::internal_deserialize(&mut map)?), + "governance_policy_add_folder_failed_details" => EventDetails::GovernancePolicyAddFolderFailedDetails(GovernancePolicyAddFolderFailedDetails::internal_deserialize(&mut map)?), + "governance_policy_content_disposed_details" => EventDetails::GovernancePolicyContentDisposedDetails(GovernancePolicyContentDisposedDetails::internal_deserialize(&mut map)?), + "governance_policy_create_details" => EventDetails::GovernancePolicyCreateDetails(GovernancePolicyCreateDetails::internal_deserialize(&mut map)?), + "governance_policy_delete_details" => EventDetails::GovernancePolicyDeleteDetails(GovernancePolicyDeleteDetails::internal_deserialize(&mut map)?), + "governance_policy_edit_details_details" => EventDetails::GovernancePolicyEditDetailsDetails(GovernancePolicyEditDetailsDetails::internal_deserialize(&mut map)?), + "governance_policy_edit_duration_details" => EventDetails::GovernancePolicyEditDurationDetails(GovernancePolicyEditDurationDetails::internal_deserialize(&mut map)?), + "governance_policy_export_created_details" => EventDetails::GovernancePolicyExportCreatedDetails(GovernancePolicyExportCreatedDetails::internal_deserialize(&mut map)?), + "governance_policy_export_removed_details" => EventDetails::GovernancePolicyExportRemovedDetails(GovernancePolicyExportRemovedDetails::internal_deserialize(&mut map)?), + "governance_policy_remove_folders_details" => EventDetails::GovernancePolicyRemoveFoldersDetails(GovernancePolicyRemoveFoldersDetails::internal_deserialize(&mut map)?), + "governance_policy_report_created_details" => EventDetails::GovernancePolicyReportCreatedDetails(GovernancePolicyReportCreatedDetails::internal_deserialize(&mut map)?), + "governance_policy_zip_part_downloaded_details" => EventDetails::GovernancePolicyZipPartDownloadedDetails(GovernancePolicyZipPartDownloadedDetails::internal_deserialize(&mut map)?), + "legal_holds_activate_a_hold_details" => EventDetails::LegalHoldsActivateAHoldDetails(LegalHoldsActivateAHoldDetails::internal_deserialize(&mut map)?), + "legal_holds_add_members_details" => EventDetails::LegalHoldsAddMembersDetails(LegalHoldsAddMembersDetails::internal_deserialize(&mut map)?), + "legal_holds_change_hold_details_details" => EventDetails::LegalHoldsChangeHoldDetailsDetails(LegalHoldsChangeHoldDetailsDetails::internal_deserialize(&mut map)?), + "legal_holds_change_hold_name_details" => EventDetails::LegalHoldsChangeHoldNameDetails(LegalHoldsChangeHoldNameDetails::internal_deserialize(&mut map)?), + "legal_holds_export_a_hold_details" => EventDetails::LegalHoldsExportAHoldDetails(LegalHoldsExportAHoldDetails::internal_deserialize(&mut map)?), + "legal_holds_export_cancelled_details" => EventDetails::LegalHoldsExportCancelledDetails(LegalHoldsExportCancelledDetails::internal_deserialize(&mut map)?), + "legal_holds_export_downloaded_details" => EventDetails::LegalHoldsExportDownloadedDetails(LegalHoldsExportDownloadedDetails::internal_deserialize(&mut map)?), + "legal_holds_export_removed_details" => EventDetails::LegalHoldsExportRemovedDetails(LegalHoldsExportRemovedDetails::internal_deserialize(&mut map)?), + "legal_holds_release_a_hold_details" => EventDetails::LegalHoldsReleaseAHoldDetails(LegalHoldsReleaseAHoldDetails::internal_deserialize(&mut map)?), + "legal_holds_remove_members_details" => EventDetails::LegalHoldsRemoveMembersDetails(LegalHoldsRemoveMembersDetails::internal_deserialize(&mut map)?), + "legal_holds_report_a_hold_details" => EventDetails::LegalHoldsReportAHoldDetails(LegalHoldsReportAHoldDetails::internal_deserialize(&mut map)?), + "device_change_ip_desktop_details" => EventDetails::DeviceChangeIpDesktopDetails(DeviceChangeIpDesktopDetails::internal_deserialize(&mut map)?), + "device_change_ip_mobile_details" => EventDetails::DeviceChangeIpMobileDetails(DeviceChangeIpMobileDetails::internal_deserialize(&mut map)?), + "device_change_ip_web_details" => EventDetails::DeviceChangeIpWebDetails(DeviceChangeIpWebDetails::internal_deserialize(&mut map)?), + "device_delete_on_unlink_fail_details" => EventDetails::DeviceDeleteOnUnlinkFailDetails(DeviceDeleteOnUnlinkFailDetails::internal_deserialize(&mut map)?), + "device_delete_on_unlink_success_details" => EventDetails::DeviceDeleteOnUnlinkSuccessDetails(DeviceDeleteOnUnlinkSuccessDetails::internal_deserialize(&mut map)?), + "device_link_fail_details" => EventDetails::DeviceLinkFailDetails(DeviceLinkFailDetails::internal_deserialize(&mut map)?), + "device_link_success_details" => EventDetails::DeviceLinkSuccessDetails(DeviceLinkSuccessDetails::internal_deserialize(&mut map)?), + "device_management_disabled_details" => EventDetails::DeviceManagementDisabledDetails(DeviceManagementDisabledDetails::internal_deserialize(&mut map)?), + "device_management_enabled_details" => EventDetails::DeviceManagementEnabledDetails(DeviceManagementEnabledDetails::internal_deserialize(&mut map)?), + "device_sync_backup_status_changed_details" => EventDetails::DeviceSyncBackupStatusChangedDetails(DeviceSyncBackupStatusChangedDetails::internal_deserialize(&mut map)?), + "device_unlink_details" => EventDetails::DeviceUnlinkDetails(DeviceUnlinkDetails::internal_deserialize(&mut map)?), + "dropbox_passwords_exported_details" => EventDetails::DropboxPasswordsExportedDetails(DropboxPasswordsExportedDetails::internal_deserialize(&mut map)?), + "dropbox_passwords_new_device_enrolled_details" => EventDetails::DropboxPasswordsNewDeviceEnrolledDetails(DropboxPasswordsNewDeviceEnrolledDetails::internal_deserialize(&mut map)?), + "emm_refresh_auth_token_details" => EventDetails::EmmRefreshAuthTokenDetails(EmmRefreshAuthTokenDetails::internal_deserialize(&mut map)?), + "external_drive_backup_eligibility_status_checked_details" => EventDetails::ExternalDriveBackupEligibilityStatusCheckedDetails(ExternalDriveBackupEligibilityStatusCheckedDetails::internal_deserialize(&mut map)?), + "external_drive_backup_status_changed_details" => EventDetails::ExternalDriveBackupStatusChangedDetails(ExternalDriveBackupStatusChangedDetails::internal_deserialize(&mut map)?), + "account_capture_change_availability_details" => EventDetails::AccountCaptureChangeAvailabilityDetails(AccountCaptureChangeAvailabilityDetails::internal_deserialize(&mut map)?), + "account_capture_migrate_account_details" => EventDetails::AccountCaptureMigrateAccountDetails(AccountCaptureMigrateAccountDetails::internal_deserialize(&mut map)?), + "account_capture_notification_emails_sent_details" => EventDetails::AccountCaptureNotificationEmailsSentDetails(AccountCaptureNotificationEmailsSentDetails::internal_deserialize(&mut map)?), + "account_capture_relinquish_account_details" => EventDetails::AccountCaptureRelinquishAccountDetails(AccountCaptureRelinquishAccountDetails::internal_deserialize(&mut map)?), + "disabled_domain_invites_details" => EventDetails::DisabledDomainInvitesDetails(DisabledDomainInvitesDetails::internal_deserialize(&mut map)?), + "domain_invites_approve_request_to_join_team_details" => EventDetails::DomainInvitesApproveRequestToJoinTeamDetails(DomainInvitesApproveRequestToJoinTeamDetails::internal_deserialize(&mut map)?), + "domain_invites_decline_request_to_join_team_details" => EventDetails::DomainInvitesDeclineRequestToJoinTeamDetails(DomainInvitesDeclineRequestToJoinTeamDetails::internal_deserialize(&mut map)?), + "domain_invites_email_existing_users_details" => EventDetails::DomainInvitesEmailExistingUsersDetails(DomainInvitesEmailExistingUsersDetails::internal_deserialize(&mut map)?), + "domain_invites_request_to_join_team_details" => EventDetails::DomainInvitesRequestToJoinTeamDetails(DomainInvitesRequestToJoinTeamDetails::internal_deserialize(&mut map)?), + "domain_invites_set_invite_new_user_pref_to_no_details" => EventDetails::DomainInvitesSetInviteNewUserPrefToNoDetails(DomainInvitesSetInviteNewUserPrefToNoDetails::internal_deserialize(&mut map)?), + "domain_invites_set_invite_new_user_pref_to_yes_details" => EventDetails::DomainInvitesSetInviteNewUserPrefToYesDetails(DomainInvitesSetInviteNewUserPrefToYesDetails::internal_deserialize(&mut map)?), + "domain_verification_add_domain_fail_details" => EventDetails::DomainVerificationAddDomainFailDetails(DomainVerificationAddDomainFailDetails::internal_deserialize(&mut map)?), + "domain_verification_add_domain_success_details" => EventDetails::DomainVerificationAddDomainSuccessDetails(DomainVerificationAddDomainSuccessDetails::internal_deserialize(&mut map)?), + "domain_verification_remove_domain_details" => EventDetails::DomainVerificationRemoveDomainDetails(DomainVerificationRemoveDomainDetails::internal_deserialize(&mut map)?), + "enabled_domain_invites_details" => EventDetails::EnabledDomainInvitesDetails(EnabledDomainInvitesDetails::internal_deserialize(&mut map)?), + "encrypted_folder_cancel_team_key_rotation_details" => EventDetails::EncryptedFolderCancelTeamKeyRotationDetails(EncryptedFolderCancelTeamKeyRotationDetails::internal_deserialize(&mut map)?), + "encrypted_folder_enroll_backup_key_details" => EventDetails::EncryptedFolderEnrollBackupKeyDetails(EncryptedFolderEnrollBackupKeyDetails::internal_deserialize(&mut map)?), + "encrypted_folder_enroll_client_details" => EventDetails::EncryptedFolderEnrollClientDetails(EncryptedFolderEnrollClientDetails::internal_deserialize(&mut map)?), + "encrypted_folder_enroll_team_details" => EventDetails::EncryptedFolderEnrollTeamDetails(EncryptedFolderEnrollTeamDetails::internal_deserialize(&mut map)?), + "encrypted_folder_finish_team_unenrollment_details" => EventDetails::EncryptedFolderFinishTeamUnenrollmentDetails(EncryptedFolderFinishTeamUnenrollmentDetails::internal_deserialize(&mut map)?), + "encrypted_folder_init_team_key_rotation_details" => EventDetails::EncryptedFolderInitTeamKeyRotationDetails(EncryptedFolderInitTeamKeyRotationDetails::internal_deserialize(&mut map)?), + "encrypted_folder_init_team_unenrollment_details" => EventDetails::EncryptedFolderInitTeamUnenrollmentDetails(EncryptedFolderInitTeamUnenrollmentDetails::internal_deserialize(&mut map)?), + "encrypted_folder_remove_backup_key_details" => EventDetails::EncryptedFolderRemoveBackupKeyDetails(EncryptedFolderRemoveBackupKeyDetails::internal_deserialize(&mut map)?), + "encrypted_folder_rotate_team_key_details" => EventDetails::EncryptedFolderRotateTeamKeyDetails(EncryptedFolderRotateTeamKeyDetails::internal_deserialize(&mut map)?), + "encrypted_folder_unenroll_client_details" => EventDetails::EncryptedFolderUnenrollClientDetails(EncryptedFolderUnenrollClientDetails::internal_deserialize(&mut map)?), + "team_encryption_key_activate_key_details" => EventDetails::TeamEncryptionKeyActivateKeyDetails(TeamEncryptionKeyActivateKeyDetails::internal_deserialize(&mut map)?), + "team_encryption_key_cancel_key_deletion_details" => EventDetails::TeamEncryptionKeyCancelKeyDeletionDetails(TeamEncryptionKeyCancelKeyDeletionDetails::internal_deserialize(&mut map)?), + "team_encryption_key_create_key_details" => EventDetails::TeamEncryptionKeyCreateKeyDetails(TeamEncryptionKeyCreateKeyDetails::internal_deserialize(&mut map)?), + "team_encryption_key_deactivate_key_details" => EventDetails::TeamEncryptionKeyDeactivateKeyDetails(TeamEncryptionKeyDeactivateKeyDetails::internal_deserialize(&mut map)?), + "team_encryption_key_delete_key_details" => EventDetails::TeamEncryptionKeyDeleteKeyDetails(TeamEncryptionKeyDeleteKeyDetails::internal_deserialize(&mut map)?), + "team_encryption_key_disable_key_details" => EventDetails::TeamEncryptionKeyDisableKeyDetails(TeamEncryptionKeyDisableKeyDetails::internal_deserialize(&mut map)?), + "team_encryption_key_enable_key_details" => EventDetails::TeamEncryptionKeyEnableKeyDetails(TeamEncryptionKeyEnableKeyDetails::internal_deserialize(&mut map)?), + "team_encryption_key_rotate_key_details" => EventDetails::TeamEncryptionKeyRotateKeyDetails(TeamEncryptionKeyRotateKeyDetails::internal_deserialize(&mut map)?), + "team_encryption_key_schedule_key_deletion_details" => EventDetails::TeamEncryptionKeyScheduleKeyDeletionDetails(TeamEncryptionKeyScheduleKeyDeletionDetails::internal_deserialize(&mut map)?), + "apply_naming_convention_details" => EventDetails::ApplyNamingConventionDetails(ApplyNamingConventionDetails::internal_deserialize(&mut map)?), + "create_folder_details" => EventDetails::CreateFolderDetails(CreateFolderDetails::internal_deserialize(&mut map)?), + "file_add_details" => EventDetails::FileAddDetails(FileAddDetails::internal_deserialize(&mut map)?), + "file_add_from_automation_details" => EventDetails::FileAddFromAutomationDetails(FileAddFromAutomationDetails::internal_deserialize(&mut map)?), + "file_copy_details" => EventDetails::FileCopyDetails(FileCopyDetails::internal_deserialize(&mut map)?), + "file_delete_details" => EventDetails::FileDeleteDetails(FileDeleteDetails::internal_deserialize(&mut map)?), + "file_download_details" => EventDetails::FileDownloadDetails(FileDownloadDetails::internal_deserialize(&mut map)?), + "file_edit_details" => EventDetails::FileEditDetails(FileEditDetails::internal_deserialize(&mut map)?), + "file_get_copy_reference_details" => EventDetails::FileGetCopyReferenceDetails(FileGetCopyReferenceDetails::internal_deserialize(&mut map)?), + "file_locking_lock_status_changed_details" => EventDetails::FileLockingLockStatusChangedDetails(FileLockingLockStatusChangedDetails::internal_deserialize(&mut map)?), + "file_move_details" => EventDetails::FileMoveDetails(FileMoveDetails::internal_deserialize(&mut map)?), + "file_permanently_delete_details" => EventDetails::FilePermanentlyDeleteDetails(FilePermanentlyDeleteDetails::internal_deserialize(&mut map)?), + "file_preview_details" => EventDetails::FilePreviewDetails(FilePreviewDetails::internal_deserialize(&mut map)?), + "file_rename_details" => EventDetails::FileRenameDetails(FileRenameDetails::internal_deserialize(&mut map)?), + "file_restore_details" => EventDetails::FileRestoreDetails(FileRestoreDetails::internal_deserialize(&mut map)?), + "file_revert_details" => EventDetails::FileRevertDetails(FileRevertDetails::internal_deserialize(&mut map)?), + "file_rollback_changes_details" => EventDetails::FileRollbackChangesDetails(FileRollbackChangesDetails::internal_deserialize(&mut map)?), + "file_save_copy_reference_details" => EventDetails::FileSaveCopyReferenceDetails(FileSaveCopyReferenceDetails::internal_deserialize(&mut map)?), + "folder_overview_description_changed_details" => EventDetails::FolderOverviewDescriptionChangedDetails(FolderOverviewDescriptionChangedDetails::internal_deserialize(&mut map)?), + "folder_overview_item_pinned_details" => EventDetails::FolderOverviewItemPinnedDetails(FolderOverviewItemPinnedDetails::internal_deserialize(&mut map)?), + "folder_overview_item_unpinned_details" => EventDetails::FolderOverviewItemUnpinnedDetails(FolderOverviewItemUnpinnedDetails::internal_deserialize(&mut map)?), + "object_label_added_details" => EventDetails::ObjectLabelAddedDetails(ObjectLabelAddedDetails::internal_deserialize(&mut map)?), + "object_label_removed_details" => EventDetails::ObjectLabelRemovedDetails(ObjectLabelRemovedDetails::internal_deserialize(&mut map)?), + "object_label_updated_value_details" => EventDetails::ObjectLabelUpdatedValueDetails(ObjectLabelUpdatedValueDetails::internal_deserialize(&mut map)?), + "organize_folder_with_tidy_details" => EventDetails::OrganizeFolderWithTidyDetails(OrganizeFolderWithTidyDetails::internal_deserialize(&mut map)?), + "replay_file_delete_details" => EventDetails::ReplayFileDeleteDetails(ReplayFileDeleteDetails::internal_deserialize(&mut map)?), + "replay_file_downloaded_details" => EventDetails::ReplayFileDownloadedDetails(ReplayFileDownloadedDetails::internal_deserialize(&mut map)?), + "replay_team_project_created_details" => EventDetails::ReplayTeamProjectCreatedDetails(ReplayTeamProjectCreatedDetails::internal_deserialize(&mut map)?), + "rewind_folder_details" => EventDetails::RewindFolderDetails(RewindFolderDetails::internal_deserialize(&mut map)?), + "undo_naming_convention_details" => EventDetails::UndoNamingConventionDetails(UndoNamingConventionDetails::internal_deserialize(&mut map)?), + "undo_organize_folder_with_tidy_details" => EventDetails::UndoOrganizeFolderWithTidyDetails(UndoOrganizeFolderWithTidyDetails::internal_deserialize(&mut map)?), + "user_tags_added_details" => EventDetails::UserTagsAddedDetails(UserTagsAddedDetails::internal_deserialize(&mut map)?), + "user_tags_removed_details" => EventDetails::UserTagsRemovedDetails(UserTagsRemovedDetails::internal_deserialize(&mut map)?), + "email_ingest_receive_file_details" => EventDetails::EmailIngestReceiveFileDetails(EmailIngestReceiveFileDetails::internal_deserialize(&mut map)?), + "file_request_auto_close_details" => EventDetails::FileRequestAutoCloseDetails(FileRequestAutoCloseDetails::internal_deserialize(&mut map)?), + "file_request_change_details" => EventDetails::FileRequestChangeDetails(FileRequestChangeDetails::internal_deserialize(&mut map)?), + "file_request_close_details" => EventDetails::FileRequestCloseDetails(FileRequestCloseDetails::internal_deserialize(&mut map)?), + "file_request_create_details" => EventDetails::FileRequestCreateDetails(FileRequestCreateDetails::internal_deserialize(&mut map)?), + "file_request_delete_details" => EventDetails::FileRequestDeleteDetails(FileRequestDeleteDetails::internal_deserialize(&mut map)?), + "file_request_receive_file_details" => EventDetails::FileRequestReceiveFileDetails(FileRequestReceiveFileDetails::internal_deserialize(&mut map)?), + "group_add_external_id_details" => EventDetails::GroupAddExternalIdDetails(GroupAddExternalIdDetails::internal_deserialize(&mut map)?), + "group_add_member_details" => EventDetails::GroupAddMemberDetails(GroupAddMemberDetails::internal_deserialize(&mut map)?), + "group_change_external_id_details" => EventDetails::GroupChangeExternalIdDetails(GroupChangeExternalIdDetails::internal_deserialize(&mut map)?), + "group_change_management_type_details" => EventDetails::GroupChangeManagementTypeDetails(GroupChangeManagementTypeDetails::internal_deserialize(&mut map)?), + "group_change_member_role_details" => EventDetails::GroupChangeMemberRoleDetails(GroupChangeMemberRoleDetails::internal_deserialize(&mut map)?), + "group_create_details" => EventDetails::GroupCreateDetails(GroupCreateDetails::internal_deserialize(&mut map)?), + "group_delete_details" => EventDetails::GroupDeleteDetails(GroupDeleteDetails::internal_deserialize(&mut map)?), + "group_description_updated_details" => EventDetails::GroupDescriptionUpdatedDetails(GroupDescriptionUpdatedDetails::internal_deserialize(&mut map)?), + "group_external_sharing_setting_override_changed_details" => EventDetails::GroupExternalSharingSettingOverrideChangedDetails(GroupExternalSharingSettingOverrideChangedDetails::internal_deserialize(&mut map)?), + "group_join_policy_updated_details" => EventDetails::GroupJoinPolicyUpdatedDetails(GroupJoinPolicyUpdatedDetails::internal_deserialize(&mut map)?), + "group_moved_details" => EventDetails::GroupMovedDetails(GroupMovedDetails::internal_deserialize(&mut map)?), + "group_remove_external_id_details" => EventDetails::GroupRemoveExternalIdDetails(GroupRemoveExternalIdDetails::internal_deserialize(&mut map)?), + "group_remove_member_details" => EventDetails::GroupRemoveMemberDetails(GroupRemoveMemberDetails::internal_deserialize(&mut map)?), + "group_rename_details" => EventDetails::GroupRenameDetails(GroupRenameDetails::internal_deserialize(&mut map)?), + "account_lock_or_unlocked_details" => EventDetails::AccountLockOrUnlockedDetails(AccountLockOrUnlockedDetails::internal_deserialize(&mut map)?), + "emm_error_details" => EventDetails::EmmErrorDetails(EmmErrorDetails::internal_deserialize(&mut map)?), + "guest_admin_signed_in_via_trusted_teams_details" => EventDetails::GuestAdminSignedInViaTrustedTeamsDetails(GuestAdminSignedInViaTrustedTeamsDetails::internal_deserialize(&mut map)?), + "guest_admin_signed_out_via_trusted_teams_details" => EventDetails::GuestAdminSignedOutViaTrustedTeamsDetails(GuestAdminSignedOutViaTrustedTeamsDetails::internal_deserialize(&mut map)?), + "login_fail_details" => EventDetails::LoginFailDetails(LoginFailDetails::internal_deserialize(&mut map)?), + "login_success_details" => EventDetails::LoginSuccessDetails(LoginSuccessDetails::internal_deserialize(&mut map)?), + "logout_details" => EventDetails::LogoutDetails(LogoutDetails::internal_deserialize(&mut map)?), + "reseller_support_session_end_details" => EventDetails::ResellerSupportSessionEndDetails(ResellerSupportSessionEndDetails::internal_deserialize(&mut map)?), + "reseller_support_session_start_details" => EventDetails::ResellerSupportSessionStartDetails(ResellerSupportSessionStartDetails::internal_deserialize(&mut map)?), + "sign_in_as_session_end_details" => EventDetails::SignInAsSessionEndDetails(SignInAsSessionEndDetails::internal_deserialize(&mut map)?), + "sign_in_as_session_start_details" => EventDetails::SignInAsSessionStartDetails(SignInAsSessionStartDetails::internal_deserialize(&mut map)?), + "sso_error_details" => EventDetails::SsoErrorDetails(SsoErrorDetails::internal_deserialize(&mut map)?), + "addon_assigned_details" => EventDetails::AddonAssignedDetails(AddonAssignedDetails::internal_deserialize(&mut map)?), + "addon_removed_details" => EventDetails::AddonRemovedDetails(AddonRemovedDetails::internal_deserialize(&mut map)?), + "backup_admin_invitation_sent_details" => EventDetails::BackupAdminInvitationSentDetails(BackupAdminInvitationSentDetails::internal_deserialize(&mut map)?), + "backup_invitation_opened_details" => EventDetails::BackupInvitationOpenedDetails(BackupInvitationOpenedDetails::internal_deserialize(&mut map)?), + "create_team_invite_link_details" => EventDetails::CreateTeamInviteLinkDetails(CreateTeamInviteLinkDetails::internal_deserialize(&mut map)?), + "delete_team_invite_link_details" => EventDetails::DeleteTeamInviteLinkDetails(DeleteTeamInviteLinkDetails::internal_deserialize(&mut map)?), + "member_add_external_id_details" => EventDetails::MemberAddExternalIdDetails(MemberAddExternalIdDetails::internal_deserialize(&mut map)?), + "member_add_name_details" => EventDetails::MemberAddNameDetails(MemberAddNameDetails::internal_deserialize(&mut map)?), + "member_change_admin_role_details" => EventDetails::MemberChangeAdminRoleDetails(MemberChangeAdminRoleDetails::internal_deserialize(&mut map)?), + "member_change_email_details" => EventDetails::MemberChangeEmailDetails(MemberChangeEmailDetails::internal_deserialize(&mut map)?), + "member_change_external_id_details" => EventDetails::MemberChangeExternalIdDetails(MemberChangeExternalIdDetails::internal_deserialize(&mut map)?), + "member_change_membership_type_details" => EventDetails::MemberChangeMembershipTypeDetails(MemberChangeMembershipTypeDetails::internal_deserialize(&mut map)?), + "member_change_name_details" => EventDetails::MemberChangeNameDetails(MemberChangeNameDetails::internal_deserialize(&mut map)?), + "member_change_reseller_role_details" => EventDetails::MemberChangeResellerRoleDetails(MemberChangeResellerRoleDetails::internal_deserialize(&mut map)?), + "member_change_status_details" => EventDetails::MemberChangeStatusDetails(MemberChangeStatusDetails::internal_deserialize(&mut map)?), + "member_delete_manual_contacts_details" => EventDetails::MemberDeleteManualContactsDetails(MemberDeleteManualContactsDetails::internal_deserialize(&mut map)?), + "member_delete_profile_photo_details" => EventDetails::MemberDeleteProfilePhotoDetails(MemberDeleteProfilePhotoDetails::internal_deserialize(&mut map)?), + "member_permanently_delete_account_contents_details" => EventDetails::MemberPermanentlyDeleteAccountContentsDetails(MemberPermanentlyDeleteAccountContentsDetails::internal_deserialize(&mut map)?), + "member_remove_external_id_details" => EventDetails::MemberRemoveExternalIdDetails(MemberRemoveExternalIdDetails::internal_deserialize(&mut map)?), + "member_set_profile_photo_details" => EventDetails::MemberSetProfilePhotoDetails(MemberSetProfilePhotoDetails::internal_deserialize(&mut map)?), + "member_space_limits_add_custom_quota_details" => EventDetails::MemberSpaceLimitsAddCustomQuotaDetails(MemberSpaceLimitsAddCustomQuotaDetails::internal_deserialize(&mut map)?), + "member_space_limits_change_custom_quota_details" => EventDetails::MemberSpaceLimitsChangeCustomQuotaDetails(MemberSpaceLimitsChangeCustomQuotaDetails::internal_deserialize(&mut map)?), + "member_space_limits_change_status_details" => EventDetails::MemberSpaceLimitsChangeStatusDetails(MemberSpaceLimitsChangeStatusDetails::internal_deserialize(&mut map)?), + "member_space_limits_remove_custom_quota_details" => EventDetails::MemberSpaceLimitsRemoveCustomQuotaDetails(MemberSpaceLimitsRemoveCustomQuotaDetails::internal_deserialize(&mut map)?), + "member_suggest_details" => EventDetails::MemberSuggestDetails(MemberSuggestDetails::internal_deserialize(&mut map)?), + "member_transfer_account_contents_details" => EventDetails::MemberTransferAccountContentsDetails(MemberTransferAccountContentsDetails::internal_deserialize(&mut map)?), + "pending_secondary_email_added_details" => EventDetails::PendingSecondaryEmailAddedDetails(PendingSecondaryEmailAddedDetails::internal_deserialize(&mut map)?), + "product_assigned_to_member_details" => EventDetails::ProductAssignedToMemberDetails(ProductAssignedToMemberDetails::internal_deserialize(&mut map)?), + "product_removed_from_member_details" => EventDetails::ProductRemovedFromMemberDetails(ProductRemovedFromMemberDetails::internal_deserialize(&mut map)?), + "secondary_email_deleted_details" => EventDetails::SecondaryEmailDeletedDetails(SecondaryEmailDeletedDetails::internal_deserialize(&mut map)?), + "secondary_email_verified_details" => EventDetails::SecondaryEmailVerifiedDetails(SecondaryEmailVerifiedDetails::internal_deserialize(&mut map)?), + "secondary_mails_policy_changed_details" => EventDetails::SecondaryMailsPolicyChangedDetails(SecondaryMailsPolicyChangedDetails::internal_deserialize(&mut map)?), + "binder_add_page_details" => EventDetails::BinderAddPageDetails(BinderAddPageDetails::internal_deserialize(&mut map)?), + "binder_add_section_details" => EventDetails::BinderAddSectionDetails(BinderAddSectionDetails::internal_deserialize(&mut map)?), + "binder_remove_page_details" => EventDetails::BinderRemovePageDetails(BinderRemovePageDetails::internal_deserialize(&mut map)?), + "binder_remove_section_details" => EventDetails::BinderRemoveSectionDetails(BinderRemoveSectionDetails::internal_deserialize(&mut map)?), + "binder_rename_page_details" => EventDetails::BinderRenamePageDetails(BinderRenamePageDetails::internal_deserialize(&mut map)?), + "binder_rename_section_details" => EventDetails::BinderRenameSectionDetails(BinderRenameSectionDetails::internal_deserialize(&mut map)?), + "binder_reorder_page_details" => EventDetails::BinderReorderPageDetails(BinderReorderPageDetails::internal_deserialize(&mut map)?), + "binder_reorder_section_details" => EventDetails::BinderReorderSectionDetails(BinderReorderSectionDetails::internal_deserialize(&mut map)?), + "paper_content_add_member_details" => EventDetails::PaperContentAddMemberDetails(PaperContentAddMemberDetails::internal_deserialize(&mut map)?), + "paper_content_add_to_folder_details" => EventDetails::PaperContentAddToFolderDetails(PaperContentAddToFolderDetails::internal_deserialize(&mut map)?), + "paper_content_archive_details" => EventDetails::PaperContentArchiveDetails(PaperContentArchiveDetails::internal_deserialize(&mut map)?), + "paper_content_create_details" => EventDetails::PaperContentCreateDetails(PaperContentCreateDetails::internal_deserialize(&mut map)?), + "paper_content_permanently_delete_details" => EventDetails::PaperContentPermanentlyDeleteDetails(PaperContentPermanentlyDeleteDetails::internal_deserialize(&mut map)?), + "paper_content_remove_from_folder_details" => EventDetails::PaperContentRemoveFromFolderDetails(PaperContentRemoveFromFolderDetails::internal_deserialize(&mut map)?), + "paper_content_remove_member_details" => EventDetails::PaperContentRemoveMemberDetails(PaperContentRemoveMemberDetails::internal_deserialize(&mut map)?), + "paper_content_rename_details" => EventDetails::PaperContentRenameDetails(PaperContentRenameDetails::internal_deserialize(&mut map)?), + "paper_content_restore_details" => EventDetails::PaperContentRestoreDetails(PaperContentRestoreDetails::internal_deserialize(&mut map)?), + "paper_doc_add_comment_details" => EventDetails::PaperDocAddCommentDetails(PaperDocAddCommentDetails::internal_deserialize(&mut map)?), + "paper_doc_change_member_role_details" => EventDetails::PaperDocChangeMemberRoleDetails(PaperDocChangeMemberRoleDetails::internal_deserialize(&mut map)?), + "paper_doc_change_sharing_policy_details" => EventDetails::PaperDocChangeSharingPolicyDetails(PaperDocChangeSharingPolicyDetails::internal_deserialize(&mut map)?), + "paper_doc_change_subscription_details" => EventDetails::PaperDocChangeSubscriptionDetails(PaperDocChangeSubscriptionDetails::internal_deserialize(&mut map)?), + "paper_doc_deleted_details" => EventDetails::PaperDocDeletedDetails(PaperDocDeletedDetails::internal_deserialize(&mut map)?), + "paper_doc_delete_comment_details" => EventDetails::PaperDocDeleteCommentDetails(PaperDocDeleteCommentDetails::internal_deserialize(&mut map)?), + "paper_doc_download_details" => EventDetails::PaperDocDownloadDetails(PaperDocDownloadDetails::internal_deserialize(&mut map)?), + "paper_doc_edit_details" => EventDetails::PaperDocEditDetails(PaperDocEditDetails::internal_deserialize(&mut map)?), + "paper_doc_edit_comment_details" => EventDetails::PaperDocEditCommentDetails(PaperDocEditCommentDetails::internal_deserialize(&mut map)?), + "paper_doc_followed_details" => EventDetails::PaperDocFollowedDetails(PaperDocFollowedDetails::internal_deserialize(&mut map)?), + "paper_doc_mention_details" => EventDetails::PaperDocMentionDetails(PaperDocMentionDetails::internal_deserialize(&mut map)?), + "paper_doc_ownership_changed_details" => EventDetails::PaperDocOwnershipChangedDetails(PaperDocOwnershipChangedDetails::internal_deserialize(&mut map)?), + "paper_doc_request_access_details" => EventDetails::PaperDocRequestAccessDetails(PaperDocRequestAccessDetails::internal_deserialize(&mut map)?), + "paper_doc_resolve_comment_details" => EventDetails::PaperDocResolveCommentDetails(PaperDocResolveCommentDetails::internal_deserialize(&mut map)?), + "paper_doc_revert_details" => EventDetails::PaperDocRevertDetails(PaperDocRevertDetails::internal_deserialize(&mut map)?), + "paper_doc_slack_share_details" => EventDetails::PaperDocSlackShareDetails(PaperDocSlackShareDetails::internal_deserialize(&mut map)?), + "paper_doc_team_invite_details" => EventDetails::PaperDocTeamInviteDetails(PaperDocTeamInviteDetails::internal_deserialize(&mut map)?), + "paper_doc_trashed_details" => EventDetails::PaperDocTrashedDetails(PaperDocTrashedDetails::internal_deserialize(&mut map)?), + "paper_doc_unresolve_comment_details" => EventDetails::PaperDocUnresolveCommentDetails(PaperDocUnresolveCommentDetails::internal_deserialize(&mut map)?), + "paper_doc_untrashed_details" => EventDetails::PaperDocUntrashedDetails(PaperDocUntrashedDetails::internal_deserialize(&mut map)?), + "paper_doc_view_details" => EventDetails::PaperDocViewDetails(PaperDocViewDetails::internal_deserialize(&mut map)?), + "paper_external_view_allow_details" => EventDetails::PaperExternalViewAllowDetails(PaperExternalViewAllowDetails::internal_deserialize(&mut map)?), + "paper_external_view_default_team_details" => EventDetails::PaperExternalViewDefaultTeamDetails(PaperExternalViewDefaultTeamDetails::internal_deserialize(&mut map)?), + "paper_external_view_forbid_details" => EventDetails::PaperExternalViewForbidDetails(PaperExternalViewForbidDetails::internal_deserialize(&mut map)?), + "paper_folder_change_subscription_details" => EventDetails::PaperFolderChangeSubscriptionDetails(PaperFolderChangeSubscriptionDetails::internal_deserialize(&mut map)?), + "paper_folder_deleted_details" => EventDetails::PaperFolderDeletedDetails(PaperFolderDeletedDetails::internal_deserialize(&mut map)?), + "paper_folder_followed_details" => EventDetails::PaperFolderFollowedDetails(PaperFolderFollowedDetails::internal_deserialize(&mut map)?), + "paper_folder_team_invite_details" => EventDetails::PaperFolderTeamInviteDetails(PaperFolderTeamInviteDetails::internal_deserialize(&mut map)?), + "paper_published_link_change_permission_details" => EventDetails::PaperPublishedLinkChangePermissionDetails(PaperPublishedLinkChangePermissionDetails::internal_deserialize(&mut map)?), + "paper_published_link_create_details" => EventDetails::PaperPublishedLinkCreateDetails(PaperPublishedLinkCreateDetails::internal_deserialize(&mut map)?), + "paper_published_link_disabled_details" => EventDetails::PaperPublishedLinkDisabledDetails(PaperPublishedLinkDisabledDetails::internal_deserialize(&mut map)?), + "paper_published_link_view_details" => EventDetails::PaperPublishedLinkViewDetails(PaperPublishedLinkViewDetails::internal_deserialize(&mut map)?), + "password_change_details" => EventDetails::PasswordChangeDetails(PasswordChangeDetails::internal_deserialize(&mut map)?), + "password_reset_details" => EventDetails::PasswordResetDetails(PasswordResetDetails::internal_deserialize(&mut map)?), + "password_reset_all_details" => EventDetails::PasswordResetAllDetails(PasswordResetAllDetails::internal_deserialize(&mut map)?), + "classification_create_report_details" => EventDetails::ClassificationCreateReportDetails(ClassificationCreateReportDetails::internal_deserialize(&mut map)?), + "classification_create_report_fail_details" => EventDetails::ClassificationCreateReportFailDetails(ClassificationCreateReportFailDetails::internal_deserialize(&mut map)?), + "emm_create_exceptions_report_details" => EventDetails::EmmCreateExceptionsReportDetails(EmmCreateExceptionsReportDetails::internal_deserialize(&mut map)?), + "emm_create_usage_report_details" => EventDetails::EmmCreateUsageReportDetails(EmmCreateUsageReportDetails::internal_deserialize(&mut map)?), + "export_members_report_details" => EventDetails::ExportMembersReportDetails(ExportMembersReportDetails::internal_deserialize(&mut map)?), + "export_members_report_fail_details" => EventDetails::ExportMembersReportFailDetails(ExportMembersReportFailDetails::internal_deserialize(&mut map)?), + "external_sharing_create_report_details" => EventDetails::ExternalSharingCreateReportDetails(ExternalSharingCreateReportDetails::internal_deserialize(&mut map)?), + "external_sharing_report_failed_details" => EventDetails::ExternalSharingReportFailedDetails(ExternalSharingReportFailedDetails::internal_deserialize(&mut map)?), + "member_access_details_create_report_details" => EventDetails::MemberAccessDetailsCreateReportDetails(MemberAccessDetailsCreateReportDetails::internal_deserialize(&mut map)?), + "member_access_details_create_report_failed_details" => EventDetails::MemberAccessDetailsCreateReportFailedDetails(MemberAccessDetailsCreateReportFailedDetails::internal_deserialize(&mut map)?), + "no_expiration_link_gen_create_report_details" => EventDetails::NoExpirationLinkGenCreateReportDetails(NoExpirationLinkGenCreateReportDetails::internal_deserialize(&mut map)?), + "no_expiration_link_gen_report_failed_details" => EventDetails::NoExpirationLinkGenReportFailedDetails(NoExpirationLinkGenReportFailedDetails::internal_deserialize(&mut map)?), + "no_password_link_gen_create_report_details" => EventDetails::NoPasswordLinkGenCreateReportDetails(NoPasswordLinkGenCreateReportDetails::internal_deserialize(&mut map)?), + "no_password_link_gen_report_failed_details" => EventDetails::NoPasswordLinkGenReportFailedDetails(NoPasswordLinkGenReportFailedDetails::internal_deserialize(&mut map)?), + "no_password_link_view_create_report_details" => EventDetails::NoPasswordLinkViewCreateReportDetails(NoPasswordLinkViewCreateReportDetails::internal_deserialize(&mut map)?), + "no_password_link_view_report_failed_details" => EventDetails::NoPasswordLinkViewReportFailedDetails(NoPasswordLinkViewReportFailedDetails::internal_deserialize(&mut map)?), + "outdated_link_view_create_report_details" => EventDetails::OutdatedLinkViewCreateReportDetails(OutdatedLinkViewCreateReportDetails::internal_deserialize(&mut map)?), + "outdated_link_view_report_failed_details" => EventDetails::OutdatedLinkViewReportFailedDetails(OutdatedLinkViewReportFailedDetails::internal_deserialize(&mut map)?), + "paper_admin_export_start_details" => EventDetails::PaperAdminExportStartDetails(PaperAdminExportStartDetails::internal_deserialize(&mut map)?), + "ransomware_alert_create_report_details" => EventDetails::RansomwareAlertCreateReportDetails(RansomwareAlertCreateReportDetails::internal_deserialize(&mut map)?), + "ransomware_alert_create_report_failed_details" => EventDetails::RansomwareAlertCreateReportFailedDetails(RansomwareAlertCreateReportFailedDetails::internal_deserialize(&mut map)?), + "shared_folders_create_report_details" => EventDetails::SharedFoldersCreateReportDetails(SharedFoldersCreateReportDetails::internal_deserialize(&mut map)?), + "shared_folders_create_report_failed_details" => EventDetails::SharedFoldersCreateReportFailedDetails(SharedFoldersCreateReportFailedDetails::internal_deserialize(&mut map)?), + "smart_sync_create_admin_privilege_report_details" => EventDetails::SmartSyncCreateAdminPrivilegeReportDetails(SmartSyncCreateAdminPrivilegeReportDetails::internal_deserialize(&mut map)?), + "team_activity_create_report_details" => EventDetails::TeamActivityCreateReportDetails(TeamActivityCreateReportDetails::internal_deserialize(&mut map)?), + "team_activity_create_report_fail_details" => EventDetails::TeamActivityCreateReportFailDetails(TeamActivityCreateReportFailDetails::internal_deserialize(&mut map)?), + "team_folders_create_report_details" => EventDetails::TeamFoldersCreateReportDetails(TeamFoldersCreateReportDetails::internal_deserialize(&mut map)?), + "team_folders_create_report_failed_details" => EventDetails::TeamFoldersCreateReportFailedDetails(TeamFoldersCreateReportFailedDetails::internal_deserialize(&mut map)?), + "team_storage_create_report_details" => EventDetails::TeamStorageCreateReportDetails(TeamStorageCreateReportDetails::internal_deserialize(&mut map)?), + "team_storage_create_report_failed_details" => EventDetails::TeamStorageCreateReportFailedDetails(TeamStorageCreateReportFailedDetails::internal_deserialize(&mut map)?), + "collection_share_details" => EventDetails::CollectionShareDetails(CollectionShareDetails::internal_deserialize(&mut map)?), + "file_transfers_file_add_details" => EventDetails::FileTransfersFileAddDetails(FileTransfersFileAddDetails::internal_deserialize(&mut map)?), + "file_transfers_transfer_delete_details" => EventDetails::FileTransfersTransferDeleteDetails(FileTransfersTransferDeleteDetails::internal_deserialize(&mut map)?), + "file_transfers_transfer_download_details" => EventDetails::FileTransfersTransferDownloadDetails(FileTransfersTransferDownloadDetails::internal_deserialize(&mut map)?), + "file_transfers_transfer_send_details" => EventDetails::FileTransfersTransferSendDetails(FileTransfersTransferSendDetails::internal_deserialize(&mut map)?), + "file_transfers_transfer_view_details" => EventDetails::FileTransfersTransferViewDetails(FileTransfersTransferViewDetails::internal_deserialize(&mut map)?), + "note_acl_invite_only_details" => EventDetails::NoteAclInviteOnlyDetails(NoteAclInviteOnlyDetails::internal_deserialize(&mut map)?), + "note_acl_link_details" => EventDetails::NoteAclLinkDetails(NoteAclLinkDetails::internal_deserialize(&mut map)?), + "note_acl_team_link_details" => EventDetails::NoteAclTeamLinkDetails(NoteAclTeamLinkDetails::internal_deserialize(&mut map)?), + "note_shared_details" => EventDetails::NoteSharedDetails(NoteSharedDetails::internal_deserialize(&mut map)?), + "note_share_receive_details" => EventDetails::NoteShareReceiveDetails(NoteShareReceiveDetails::internal_deserialize(&mut map)?), + "open_note_shared_details" => EventDetails::OpenNoteSharedDetails(OpenNoteSharedDetails::internal_deserialize(&mut map)?), + "replay_file_shared_link_created_details" => EventDetails::ReplayFileSharedLinkCreatedDetails(ReplayFileSharedLinkCreatedDetails::internal_deserialize(&mut map)?), + "replay_file_shared_link_modified_details" => EventDetails::ReplayFileSharedLinkModifiedDetails(ReplayFileSharedLinkModifiedDetails::internal_deserialize(&mut map)?), + "replay_project_team_add_details" => EventDetails::ReplayProjectTeamAddDetails(ReplayProjectTeamAddDetails::internal_deserialize(&mut map)?), + "replay_project_team_delete_details" => EventDetails::ReplayProjectTeamDeleteDetails(ReplayProjectTeamDeleteDetails::internal_deserialize(&mut map)?), + "send_and_track_file_added_details" => EventDetails::SendAndTrackFileAddedDetails(SendAndTrackFileAddedDetails::internal_deserialize(&mut map)?), + "send_and_track_file_renamed_details" => EventDetails::SendAndTrackFileRenamedDetails(SendAndTrackFileRenamedDetails::internal_deserialize(&mut map)?), + "send_and_track_file_updated_details" => EventDetails::SendAndTrackFileUpdatedDetails(SendAndTrackFileUpdatedDetails::internal_deserialize(&mut map)?), + "send_and_track_link_created_details" => EventDetails::SendAndTrackLinkCreatedDetails(SendAndTrackLinkCreatedDetails::internal_deserialize(&mut map)?), + "send_and_track_link_deleted_details" => EventDetails::SendAndTrackLinkDeletedDetails(SendAndTrackLinkDeletedDetails::internal_deserialize(&mut map)?), + "send_and_track_link_updated_details" => EventDetails::SendAndTrackLinkUpdatedDetails(SendAndTrackLinkUpdatedDetails::internal_deserialize(&mut map)?), + "send_and_track_link_viewed_details" => EventDetails::SendAndTrackLinkViewedDetails(SendAndTrackLinkViewedDetails::internal_deserialize(&mut map)?), + "send_and_track_removed_file_and_associated_links_details" => EventDetails::SendAndTrackRemovedFileAndAssociatedLinksDetails(SendAndTrackRemovedFileAndAssociatedLinksDetails::internal_deserialize(&mut map)?), + "sf_add_group_details" => EventDetails::SfAddGroupDetails(SfAddGroupDetails::internal_deserialize(&mut map)?), + "sf_allow_non_members_to_view_shared_links_details" => EventDetails::SfAllowNonMembersToViewSharedLinksDetails(SfAllowNonMembersToViewSharedLinksDetails::internal_deserialize(&mut map)?), + "sf_external_invite_warn_details" => EventDetails::SfExternalInviteWarnDetails(SfExternalInviteWarnDetails::internal_deserialize(&mut map)?), + "sf_fb_invite_details" => EventDetails::SfFbInviteDetails(SfFbInviteDetails::internal_deserialize(&mut map)?), + "sf_fb_invite_change_role_details" => EventDetails::SfFbInviteChangeRoleDetails(SfFbInviteChangeRoleDetails::internal_deserialize(&mut map)?), + "sf_fb_uninvite_details" => EventDetails::SfFbUninviteDetails(SfFbUninviteDetails::internal_deserialize(&mut map)?), + "sf_invite_group_details" => EventDetails::SfInviteGroupDetails(SfInviteGroupDetails::internal_deserialize(&mut map)?), + "sf_team_grant_access_details" => EventDetails::SfTeamGrantAccessDetails(SfTeamGrantAccessDetails::internal_deserialize(&mut map)?), + "sf_team_invite_details" => EventDetails::SfTeamInviteDetails(SfTeamInviteDetails::internal_deserialize(&mut map)?), + "sf_team_invite_change_role_details" => EventDetails::SfTeamInviteChangeRoleDetails(SfTeamInviteChangeRoleDetails::internal_deserialize(&mut map)?), + "sf_team_join_details" => EventDetails::SfTeamJoinDetails(SfTeamJoinDetails::internal_deserialize(&mut map)?), + "sf_team_join_from_oob_link_details" => EventDetails::SfTeamJoinFromOobLinkDetails(SfTeamJoinFromOobLinkDetails::internal_deserialize(&mut map)?), + "sf_team_uninvite_details" => EventDetails::SfTeamUninviteDetails(SfTeamUninviteDetails::internal_deserialize(&mut map)?), + "shared_content_add_invitees_details" => EventDetails::SharedContentAddInviteesDetails(SharedContentAddInviteesDetails::internal_deserialize(&mut map)?), + "shared_content_add_link_expiry_details" => EventDetails::SharedContentAddLinkExpiryDetails(SharedContentAddLinkExpiryDetails::internal_deserialize(&mut map)?), + "shared_content_add_link_password_details" => EventDetails::SharedContentAddLinkPasswordDetails(SharedContentAddLinkPasswordDetails::internal_deserialize(&mut map)?), + "shared_content_add_member_details" => EventDetails::SharedContentAddMemberDetails(SharedContentAddMemberDetails::internal_deserialize(&mut map)?), + "shared_content_change_downloads_policy_details" => EventDetails::SharedContentChangeDownloadsPolicyDetails(SharedContentChangeDownloadsPolicyDetails::internal_deserialize(&mut map)?), + "shared_content_change_invitee_role_details" => EventDetails::SharedContentChangeInviteeRoleDetails(SharedContentChangeInviteeRoleDetails::internal_deserialize(&mut map)?), + "shared_content_change_link_audience_details" => EventDetails::SharedContentChangeLinkAudienceDetails(SharedContentChangeLinkAudienceDetails::internal_deserialize(&mut map)?), + "shared_content_change_link_expiry_details" => EventDetails::SharedContentChangeLinkExpiryDetails(SharedContentChangeLinkExpiryDetails::internal_deserialize(&mut map)?), + "shared_content_change_link_password_details" => EventDetails::SharedContentChangeLinkPasswordDetails(SharedContentChangeLinkPasswordDetails::internal_deserialize(&mut map)?), + "shared_content_change_member_role_details" => EventDetails::SharedContentChangeMemberRoleDetails(SharedContentChangeMemberRoleDetails::internal_deserialize(&mut map)?), + "shared_content_change_viewer_info_policy_details" => EventDetails::SharedContentChangeViewerInfoPolicyDetails(SharedContentChangeViewerInfoPolicyDetails::internal_deserialize(&mut map)?), + "shared_content_claim_invitation_details" => EventDetails::SharedContentClaimInvitationDetails(SharedContentClaimInvitationDetails::internal_deserialize(&mut map)?), + "shared_content_copy_details" => EventDetails::SharedContentCopyDetails(SharedContentCopyDetails::internal_deserialize(&mut map)?), + "shared_content_download_details" => EventDetails::SharedContentDownloadDetails(SharedContentDownloadDetails::internal_deserialize(&mut map)?), + "shared_content_relinquish_membership_details" => EventDetails::SharedContentRelinquishMembershipDetails(SharedContentRelinquishMembershipDetails::internal_deserialize(&mut map)?), + "shared_content_remove_invitees_details" => EventDetails::SharedContentRemoveInviteesDetails(SharedContentRemoveInviteesDetails::internal_deserialize(&mut map)?), + "shared_content_remove_link_expiry_details" => EventDetails::SharedContentRemoveLinkExpiryDetails(SharedContentRemoveLinkExpiryDetails::internal_deserialize(&mut map)?), + "shared_content_remove_link_password_details" => EventDetails::SharedContentRemoveLinkPasswordDetails(SharedContentRemoveLinkPasswordDetails::internal_deserialize(&mut map)?), + "shared_content_remove_member_details" => EventDetails::SharedContentRemoveMemberDetails(SharedContentRemoveMemberDetails::internal_deserialize(&mut map)?), + "shared_content_request_access_details" => EventDetails::SharedContentRequestAccessDetails(SharedContentRequestAccessDetails::internal_deserialize(&mut map)?), + "shared_content_restore_invitees_details" => EventDetails::SharedContentRestoreInviteesDetails(SharedContentRestoreInviteesDetails::internal_deserialize(&mut map)?), + "shared_content_restore_member_details" => EventDetails::SharedContentRestoreMemberDetails(SharedContentRestoreMemberDetails::internal_deserialize(&mut map)?), + "shared_content_unshare_details" => EventDetails::SharedContentUnshareDetails(SharedContentUnshareDetails::internal_deserialize(&mut map)?), + "shared_content_view_details" => EventDetails::SharedContentViewDetails(SharedContentViewDetails::internal_deserialize(&mut map)?), + "shared_folder_change_link_policy_details" => EventDetails::SharedFolderChangeLinkPolicyDetails(SharedFolderChangeLinkPolicyDetails::internal_deserialize(&mut map)?), + "shared_folder_change_members_inheritance_policy_details" => EventDetails::SharedFolderChangeMembersInheritancePolicyDetails(SharedFolderChangeMembersInheritancePolicyDetails::internal_deserialize(&mut map)?), + "shared_folder_change_members_management_policy_details" => EventDetails::SharedFolderChangeMembersManagementPolicyDetails(SharedFolderChangeMembersManagementPolicyDetails::internal_deserialize(&mut map)?), + "shared_folder_change_members_policy_details" => EventDetails::SharedFolderChangeMembersPolicyDetails(SharedFolderChangeMembersPolicyDetails::internal_deserialize(&mut map)?), + "shared_folder_create_details" => EventDetails::SharedFolderCreateDetails(SharedFolderCreateDetails::internal_deserialize(&mut map)?), + "shared_folder_decline_invitation_details" => EventDetails::SharedFolderDeclineInvitationDetails(SharedFolderDeclineInvitationDetails::internal_deserialize(&mut map)?), + "shared_folder_mount_details" => EventDetails::SharedFolderMountDetails(SharedFolderMountDetails::internal_deserialize(&mut map)?), + "shared_folder_nest_details" => EventDetails::SharedFolderNestDetails(SharedFolderNestDetails::internal_deserialize(&mut map)?), + "shared_folder_transfer_ownership_details" => EventDetails::SharedFolderTransferOwnershipDetails(SharedFolderTransferOwnershipDetails::internal_deserialize(&mut map)?), + "shared_folder_unmount_details" => EventDetails::SharedFolderUnmountDetails(SharedFolderUnmountDetails::internal_deserialize(&mut map)?), + "shared_link_add_expiry_details" => EventDetails::SharedLinkAddExpiryDetails(SharedLinkAddExpiryDetails::internal_deserialize(&mut map)?), + "shared_link_change_expiry_details" => EventDetails::SharedLinkChangeExpiryDetails(SharedLinkChangeExpiryDetails::internal_deserialize(&mut map)?), + "shared_link_change_visibility_details" => EventDetails::SharedLinkChangeVisibilityDetails(SharedLinkChangeVisibilityDetails::internal_deserialize(&mut map)?), + "shared_link_copy_details" => EventDetails::SharedLinkCopyDetails(SharedLinkCopyDetails::internal_deserialize(&mut map)?), + "shared_link_create_details" => EventDetails::SharedLinkCreateDetails(SharedLinkCreateDetails::internal_deserialize(&mut map)?), + "shared_link_disable_details" => EventDetails::SharedLinkDisableDetails(SharedLinkDisableDetails::internal_deserialize(&mut map)?), + "shared_link_download_details" => EventDetails::SharedLinkDownloadDetails(SharedLinkDownloadDetails::internal_deserialize(&mut map)?), + "shared_link_remove_expiry_details" => EventDetails::SharedLinkRemoveExpiryDetails(SharedLinkRemoveExpiryDetails::internal_deserialize(&mut map)?), + "shared_link_remove_visitor_details" => EventDetails::SharedLinkRemoveVisitorDetails(SharedLinkRemoveVisitorDetails::internal_deserialize(&mut map)?), + "shared_link_settings_add_expiration_details" => EventDetails::SharedLinkSettingsAddExpirationDetails(SharedLinkSettingsAddExpirationDetails::internal_deserialize(&mut map)?), + "shared_link_settings_add_password_details" => EventDetails::SharedLinkSettingsAddPasswordDetails(SharedLinkSettingsAddPasswordDetails::internal_deserialize(&mut map)?), + "shared_link_settings_allow_download_disabled_details" => EventDetails::SharedLinkSettingsAllowDownloadDisabledDetails(SharedLinkSettingsAllowDownloadDisabledDetails::internal_deserialize(&mut map)?), + "shared_link_settings_allow_download_enabled_details" => EventDetails::SharedLinkSettingsAllowDownloadEnabledDetails(SharedLinkSettingsAllowDownloadEnabledDetails::internal_deserialize(&mut map)?), + "shared_link_settings_change_audience_details" => EventDetails::SharedLinkSettingsChangeAudienceDetails(SharedLinkSettingsChangeAudienceDetails::internal_deserialize(&mut map)?), + "shared_link_settings_change_expiration_details" => EventDetails::SharedLinkSettingsChangeExpirationDetails(SharedLinkSettingsChangeExpirationDetails::internal_deserialize(&mut map)?), + "shared_link_settings_change_password_details" => EventDetails::SharedLinkSettingsChangePasswordDetails(SharedLinkSettingsChangePasswordDetails::internal_deserialize(&mut map)?), + "shared_link_settings_remove_expiration_details" => EventDetails::SharedLinkSettingsRemoveExpirationDetails(SharedLinkSettingsRemoveExpirationDetails::internal_deserialize(&mut map)?), + "shared_link_settings_remove_password_details" => EventDetails::SharedLinkSettingsRemovePasswordDetails(SharedLinkSettingsRemovePasswordDetails::internal_deserialize(&mut map)?), + "shared_link_share_details" => EventDetails::SharedLinkShareDetails(SharedLinkShareDetails::internal_deserialize(&mut map)?), + "shared_link_view_details" => EventDetails::SharedLinkViewDetails(SharedLinkViewDetails::internal_deserialize(&mut map)?), + "shared_note_opened_details" => EventDetails::SharedNoteOpenedDetails(SharedNoteOpenedDetails::internal_deserialize(&mut map)?), + "shmodel_disable_downloads_details" => EventDetails::ShmodelDisableDownloadsDetails(ShmodelDisableDownloadsDetails::internal_deserialize(&mut map)?), + "shmodel_enable_downloads_details" => EventDetails::ShmodelEnableDownloadsDetails(ShmodelEnableDownloadsDetails::internal_deserialize(&mut map)?), + "shmodel_group_share_details" => EventDetails::ShmodelGroupShareDetails(ShmodelGroupShareDetails::internal_deserialize(&mut map)?), + "showcase_access_granted_details" => EventDetails::ShowcaseAccessGrantedDetails(ShowcaseAccessGrantedDetails::internal_deserialize(&mut map)?), + "showcase_add_member_details" => EventDetails::ShowcaseAddMemberDetails(ShowcaseAddMemberDetails::internal_deserialize(&mut map)?), + "showcase_archived_details" => EventDetails::ShowcaseArchivedDetails(ShowcaseArchivedDetails::internal_deserialize(&mut map)?), + "showcase_created_details" => EventDetails::ShowcaseCreatedDetails(ShowcaseCreatedDetails::internal_deserialize(&mut map)?), + "showcase_delete_comment_details" => EventDetails::ShowcaseDeleteCommentDetails(ShowcaseDeleteCommentDetails::internal_deserialize(&mut map)?), + "showcase_edited_details" => EventDetails::ShowcaseEditedDetails(ShowcaseEditedDetails::internal_deserialize(&mut map)?), + "showcase_edit_comment_details" => EventDetails::ShowcaseEditCommentDetails(ShowcaseEditCommentDetails::internal_deserialize(&mut map)?), + "showcase_file_added_details" => EventDetails::ShowcaseFileAddedDetails(ShowcaseFileAddedDetails::internal_deserialize(&mut map)?), + "showcase_file_download_details" => EventDetails::ShowcaseFileDownloadDetails(ShowcaseFileDownloadDetails::internal_deserialize(&mut map)?), + "showcase_file_removed_details" => EventDetails::ShowcaseFileRemovedDetails(ShowcaseFileRemovedDetails::internal_deserialize(&mut map)?), + "showcase_file_view_details" => EventDetails::ShowcaseFileViewDetails(ShowcaseFileViewDetails::internal_deserialize(&mut map)?), + "showcase_permanently_deleted_details" => EventDetails::ShowcasePermanentlyDeletedDetails(ShowcasePermanentlyDeletedDetails::internal_deserialize(&mut map)?), + "showcase_post_comment_details" => EventDetails::ShowcasePostCommentDetails(ShowcasePostCommentDetails::internal_deserialize(&mut map)?), + "showcase_remove_member_details" => EventDetails::ShowcaseRemoveMemberDetails(ShowcaseRemoveMemberDetails::internal_deserialize(&mut map)?), + "showcase_renamed_details" => EventDetails::ShowcaseRenamedDetails(ShowcaseRenamedDetails::internal_deserialize(&mut map)?), + "showcase_request_access_details" => EventDetails::ShowcaseRequestAccessDetails(ShowcaseRequestAccessDetails::internal_deserialize(&mut map)?), + "showcase_resolve_comment_details" => EventDetails::ShowcaseResolveCommentDetails(ShowcaseResolveCommentDetails::internal_deserialize(&mut map)?), + "showcase_restored_details" => EventDetails::ShowcaseRestoredDetails(ShowcaseRestoredDetails::internal_deserialize(&mut map)?), + "showcase_trashed_details" => EventDetails::ShowcaseTrashedDetails(ShowcaseTrashedDetails::internal_deserialize(&mut map)?), + "showcase_trashed_deprecated_details" => EventDetails::ShowcaseTrashedDeprecatedDetails(ShowcaseTrashedDeprecatedDetails::internal_deserialize(&mut map)?), + "showcase_unresolve_comment_details" => EventDetails::ShowcaseUnresolveCommentDetails(ShowcaseUnresolveCommentDetails::internal_deserialize(&mut map)?), + "showcase_untrashed_details" => EventDetails::ShowcaseUntrashedDetails(ShowcaseUntrashedDetails::internal_deserialize(&mut map)?), + "showcase_untrashed_deprecated_details" => EventDetails::ShowcaseUntrashedDeprecatedDetails(ShowcaseUntrashedDeprecatedDetails::internal_deserialize(&mut map)?), + "showcase_view_details" => EventDetails::ShowcaseViewDetails(ShowcaseViewDetails::internal_deserialize(&mut map)?), + "sign_signature_request_canceled_details" => EventDetails::SignSignatureRequestCanceledDetails(SignSignatureRequestCanceledDetails::internal_deserialize(&mut map)?), + "sign_signature_request_completed_details" => EventDetails::SignSignatureRequestCompletedDetails(SignSignatureRequestCompletedDetails::internal_deserialize(&mut map)?), + "sign_signature_request_declined_details" => EventDetails::SignSignatureRequestDeclinedDetails(SignSignatureRequestDeclinedDetails::internal_deserialize(&mut map)?), + "sign_signature_request_opened_details" => EventDetails::SignSignatureRequestOpenedDetails(SignSignatureRequestOpenedDetails::internal_deserialize(&mut map)?), + "sign_signature_request_reminder_sent_details" => EventDetails::SignSignatureRequestReminderSentDetails(SignSignatureRequestReminderSentDetails::internal_deserialize(&mut map)?), + "sign_signature_request_sent_details" => EventDetails::SignSignatureRequestSentDetails(SignSignatureRequestSentDetails::internal_deserialize(&mut map)?), + "sign_template_created_details" => EventDetails::SignTemplateCreatedDetails(SignTemplateCreatedDetails::internal_deserialize(&mut map)?), + "sign_template_shared_details" => EventDetails::SignTemplateSharedDetails(SignTemplateSharedDetails::internal_deserialize(&mut map)?), + "risc_security_event_details" => EventDetails::RiscSecurityEventDetails(RiscSecurityEventDetails::internal_deserialize(&mut map)?), + "sso_add_cert_details" => EventDetails::SsoAddCertDetails(SsoAddCertDetails::internal_deserialize(&mut map)?), + "sso_add_login_url_details" => EventDetails::SsoAddLoginUrlDetails(SsoAddLoginUrlDetails::internal_deserialize(&mut map)?), + "sso_add_logout_url_details" => EventDetails::SsoAddLogoutUrlDetails(SsoAddLogoutUrlDetails::internal_deserialize(&mut map)?), + "sso_change_cert_details" => EventDetails::SsoChangeCertDetails(SsoChangeCertDetails::internal_deserialize(&mut map)?), + "sso_change_login_url_details" => EventDetails::SsoChangeLoginUrlDetails(SsoChangeLoginUrlDetails::internal_deserialize(&mut map)?), + "sso_change_logout_url_details" => EventDetails::SsoChangeLogoutUrlDetails(SsoChangeLogoutUrlDetails::internal_deserialize(&mut map)?), + "sso_change_saml_identity_mode_details" => EventDetails::SsoChangeSamlIdentityModeDetails(SsoChangeSamlIdentityModeDetails::internal_deserialize(&mut map)?), + "sso_remove_cert_details" => EventDetails::SsoRemoveCertDetails(SsoRemoveCertDetails::internal_deserialize(&mut map)?), + "sso_remove_login_url_details" => EventDetails::SsoRemoveLoginUrlDetails(SsoRemoveLoginUrlDetails::internal_deserialize(&mut map)?), + "sso_remove_logout_url_details" => EventDetails::SsoRemoveLogoutUrlDetails(SsoRemoveLogoutUrlDetails::internal_deserialize(&mut map)?), + "team_folder_change_status_details" => EventDetails::TeamFolderChangeStatusDetails(TeamFolderChangeStatusDetails::internal_deserialize(&mut map)?), + "team_folder_create_details" => EventDetails::TeamFolderCreateDetails(TeamFolderCreateDetails::internal_deserialize(&mut map)?), + "team_folder_downgrade_details" => EventDetails::TeamFolderDowngradeDetails(TeamFolderDowngradeDetails::internal_deserialize(&mut map)?), + "team_folder_permanently_delete_details" => EventDetails::TeamFolderPermanentlyDeleteDetails(TeamFolderPermanentlyDeleteDetails::internal_deserialize(&mut map)?), + "team_folder_rename_details" => EventDetails::TeamFolderRenameDetails(TeamFolderRenameDetails::internal_deserialize(&mut map)?), + "team_selective_sync_settings_changed_details" => EventDetails::TeamSelectiveSyncSettingsChangedDetails(TeamSelectiveSyncSettingsChangedDetails::internal_deserialize(&mut map)?), + "account_capture_change_policy_details" => EventDetails::AccountCaptureChangePolicyDetails(AccountCaptureChangePolicyDetails::internal_deserialize(&mut map)?), + "admin_email_reminders_changed_details" => EventDetails::AdminEmailRemindersChangedDetails(AdminEmailRemindersChangedDetails::internal_deserialize(&mut map)?), + "ai_third_party_sharing_dropbox_base_policy_changed_details" => EventDetails::AiThirdPartySharingDropboxBasePolicyChangedDetails(AiThirdPartySharingDropboxBasePolicyChangedDetails::internal_deserialize(&mut map)?), + "allow_download_disabled_details" => EventDetails::AllowDownloadDisabledDetails(AllowDownloadDisabledDetails::internal_deserialize(&mut map)?), + "allow_download_enabled_details" => EventDetails::AllowDownloadEnabledDetails(AllowDownloadEnabledDetails::internal_deserialize(&mut map)?), + "apple_login_change_policy_details" => EventDetails::AppleLoginChangePolicyDetails(AppleLoginChangePolicyDetails::internal_deserialize(&mut map)?), + "app_permissions_changed_details" => EventDetails::AppPermissionsChangedDetails(AppPermissionsChangedDetails::internal_deserialize(&mut map)?), + "camera_uploads_policy_changed_details" => EventDetails::CameraUploadsPolicyChangedDetails(CameraUploadsPolicyChangedDetails::internal_deserialize(&mut map)?), + "capture_team_space_policy_changed_details" => EventDetails::CaptureTeamSpacePolicyChangedDetails(CaptureTeamSpacePolicyChangedDetails::internal_deserialize(&mut map)?), + "capture_transcript_policy_changed_details" => EventDetails::CaptureTranscriptPolicyChangedDetails(CaptureTranscriptPolicyChangedDetails::internal_deserialize(&mut map)?), + "classification_change_policy_details" => EventDetails::ClassificationChangePolicyDetails(ClassificationChangePolicyDetails::internal_deserialize(&mut map)?), + "computer_backup_policy_changed_details" => EventDetails::ComputerBackupPolicyChangedDetails(ComputerBackupPolicyChangedDetails::internal_deserialize(&mut map)?), + "content_administration_policy_changed_details" => EventDetails::ContentAdministrationPolicyChangedDetails(ContentAdministrationPolicyChangedDetails::internal_deserialize(&mut map)?), + "content_deletion_protection_change_policy_details" => EventDetails::ContentDeletionProtectionChangePolicyDetails(ContentDeletionProtectionChangePolicyDetails::internal_deserialize(&mut map)?), + "dash_external_sharing_policy_changed_details" => EventDetails::DashExternalSharingPolicyChangedDetails(DashExternalSharingPolicyChangedDetails::internal_deserialize(&mut map)?), + "data_placement_restriction_change_policy_details" => EventDetails::DataPlacementRestrictionChangePolicyDetails(DataPlacementRestrictionChangePolicyDetails::internal_deserialize(&mut map)?), + "data_placement_restriction_satisfy_policy_details" => EventDetails::DataPlacementRestrictionSatisfyPolicyDetails(DataPlacementRestrictionSatisfyPolicyDetails::internal_deserialize(&mut map)?), + "device_approvals_add_exception_details" => EventDetails::DeviceApprovalsAddExceptionDetails(DeviceApprovalsAddExceptionDetails::internal_deserialize(&mut map)?), + "device_approvals_change_desktop_policy_details" => EventDetails::DeviceApprovalsChangeDesktopPolicyDetails(DeviceApprovalsChangeDesktopPolicyDetails::internal_deserialize(&mut map)?), + "device_approvals_change_mobile_policy_details" => EventDetails::DeviceApprovalsChangeMobilePolicyDetails(DeviceApprovalsChangeMobilePolicyDetails::internal_deserialize(&mut map)?), + "device_approvals_change_overage_action_details" => EventDetails::DeviceApprovalsChangeOverageActionDetails(DeviceApprovalsChangeOverageActionDetails::internal_deserialize(&mut map)?), + "device_approvals_change_unlink_action_details" => EventDetails::DeviceApprovalsChangeUnlinkActionDetails(DeviceApprovalsChangeUnlinkActionDetails::internal_deserialize(&mut map)?), + "device_approvals_remove_exception_details" => EventDetails::DeviceApprovalsRemoveExceptionDetails(DeviceApprovalsRemoveExceptionDetails::internal_deserialize(&mut map)?), + "directory_restrictions_add_members_details" => EventDetails::DirectoryRestrictionsAddMembersDetails(DirectoryRestrictionsAddMembersDetails::internal_deserialize(&mut map)?), + "directory_restrictions_remove_members_details" => EventDetails::DirectoryRestrictionsRemoveMembersDetails(DirectoryRestrictionsRemoveMembersDetails::internal_deserialize(&mut map)?), + "dropbox_passwords_policy_changed_details" => EventDetails::DropboxPasswordsPolicyChangedDetails(DropboxPasswordsPolicyChangedDetails::internal_deserialize(&mut map)?), + "email_ingest_policy_changed_details" => EventDetails::EmailIngestPolicyChangedDetails(EmailIngestPolicyChangedDetails::internal_deserialize(&mut map)?), + "emm_add_exception_details" => EventDetails::EmmAddExceptionDetails(EmmAddExceptionDetails::internal_deserialize(&mut map)?), + "emm_change_policy_details" => EventDetails::EmmChangePolicyDetails(EmmChangePolicyDetails::internal_deserialize(&mut map)?), + "emm_remove_exception_details" => EventDetails::EmmRemoveExceptionDetails(EmmRemoveExceptionDetails::internal_deserialize(&mut map)?), + "extended_version_history_change_policy_details" => EventDetails::ExtendedVersionHistoryChangePolicyDetails(ExtendedVersionHistoryChangePolicyDetails::internal_deserialize(&mut map)?), + "external_drive_backup_policy_changed_details" => EventDetails::ExternalDriveBackupPolicyChangedDetails(ExternalDriveBackupPolicyChangedDetails::internal_deserialize(&mut map)?), + "file_comments_change_policy_details" => EventDetails::FileCommentsChangePolicyDetails(FileCommentsChangePolicyDetails::internal_deserialize(&mut map)?), + "file_locking_policy_changed_details" => EventDetails::FileLockingPolicyChangedDetails(FileLockingPolicyChangedDetails::internal_deserialize(&mut map)?), + "file_provider_migration_policy_changed_details" => EventDetails::FileProviderMigrationPolicyChangedDetails(FileProviderMigrationPolicyChangedDetails::internal_deserialize(&mut map)?), + "file_requests_change_policy_details" => EventDetails::FileRequestsChangePolicyDetails(FileRequestsChangePolicyDetails::internal_deserialize(&mut map)?), + "file_requests_emails_enabled_details" => EventDetails::FileRequestsEmailsEnabledDetails(FileRequestsEmailsEnabledDetails::internal_deserialize(&mut map)?), + "file_requests_emails_restricted_to_team_only_details" => EventDetails::FileRequestsEmailsRestrictedToTeamOnlyDetails(FileRequestsEmailsRestrictedToTeamOnlyDetails::internal_deserialize(&mut map)?), + "file_transfers_policy_changed_details" => EventDetails::FileTransfersPolicyChangedDetails(FileTransfersPolicyChangedDetails::internal_deserialize(&mut map)?), + "flexible_file_names_policy_changed_details" => EventDetails::FlexibleFileNamesPolicyChangedDetails(FlexibleFileNamesPolicyChangedDetails::internal_deserialize(&mut map)?), + "folder_link_restriction_policy_changed_details" => EventDetails::FolderLinkRestrictionPolicyChangedDetails(FolderLinkRestrictionPolicyChangedDetails::internal_deserialize(&mut map)?), + "google_sso_change_policy_details" => EventDetails::GoogleSsoChangePolicyDetails(GoogleSsoChangePolicyDetails::internal_deserialize(&mut map)?), + "group_user_management_change_policy_details" => EventDetails::GroupUserManagementChangePolicyDetails(GroupUserManagementChangePolicyDetails::internal_deserialize(&mut map)?), + "integration_policy_changed_details" => EventDetails::IntegrationPolicyChangedDetails(IntegrationPolicyChangedDetails::internal_deserialize(&mut map)?), + "invite_acceptance_email_policy_changed_details" => EventDetails::InviteAcceptanceEmailPolicyChangedDetails(InviteAcceptanceEmailPolicyChangedDetails::internal_deserialize(&mut map)?), + "member_requests_change_policy_details" => EventDetails::MemberRequestsChangePolicyDetails(MemberRequestsChangePolicyDetails::internal_deserialize(&mut map)?), + "member_send_invite_policy_changed_details" => EventDetails::MemberSendInvitePolicyChangedDetails(MemberSendInvitePolicyChangedDetails::internal_deserialize(&mut map)?), + "member_space_limits_add_exception_details" => EventDetails::MemberSpaceLimitsAddExceptionDetails(MemberSpaceLimitsAddExceptionDetails::internal_deserialize(&mut map)?), + "member_space_limits_change_caps_type_policy_details" => EventDetails::MemberSpaceLimitsChangeCapsTypePolicyDetails(MemberSpaceLimitsChangeCapsTypePolicyDetails::internal_deserialize(&mut map)?), + "member_space_limits_change_policy_details" => EventDetails::MemberSpaceLimitsChangePolicyDetails(MemberSpaceLimitsChangePolicyDetails::internal_deserialize(&mut map)?), + "member_space_limits_remove_exception_details" => EventDetails::MemberSpaceLimitsRemoveExceptionDetails(MemberSpaceLimitsRemoveExceptionDetails::internal_deserialize(&mut map)?), + "member_suggestions_change_policy_details" => EventDetails::MemberSuggestionsChangePolicyDetails(MemberSuggestionsChangePolicyDetails::internal_deserialize(&mut map)?), + "microsoft_login_change_policy_details" => EventDetails::MicrosoftLoginChangePolicyDetails(MicrosoftLoginChangePolicyDetails::internal_deserialize(&mut map)?), + "microsoft_office_addin_change_policy_details" => EventDetails::MicrosoftOfficeAddinChangePolicyDetails(MicrosoftOfficeAddinChangePolicyDetails::internal_deserialize(&mut map)?), + "network_control_change_policy_details" => EventDetails::NetworkControlChangePolicyDetails(NetworkControlChangePolicyDetails::internal_deserialize(&mut map)?), + "paper_change_deployment_policy_details" => EventDetails::PaperChangeDeploymentPolicyDetails(PaperChangeDeploymentPolicyDetails::internal_deserialize(&mut map)?), + "paper_change_member_link_policy_details" => EventDetails::PaperChangeMemberLinkPolicyDetails(PaperChangeMemberLinkPolicyDetails::internal_deserialize(&mut map)?), + "paper_change_member_policy_details" => EventDetails::PaperChangeMemberPolicyDetails(PaperChangeMemberPolicyDetails::internal_deserialize(&mut map)?), + "paper_change_policy_details" => EventDetails::PaperChangePolicyDetails(PaperChangePolicyDetails::internal_deserialize(&mut map)?), + "paper_default_folder_policy_changed_details" => EventDetails::PaperDefaultFolderPolicyChangedDetails(PaperDefaultFolderPolicyChangedDetails::internal_deserialize(&mut map)?), + "paper_desktop_policy_changed_details" => EventDetails::PaperDesktopPolicyChangedDetails(PaperDesktopPolicyChangedDetails::internal_deserialize(&mut map)?), + "paper_enabled_users_group_addition_details" => EventDetails::PaperEnabledUsersGroupAdditionDetails(PaperEnabledUsersGroupAdditionDetails::internal_deserialize(&mut map)?), + "paper_enabled_users_group_removal_details" => EventDetails::PaperEnabledUsersGroupRemovalDetails(PaperEnabledUsersGroupRemovalDetails::internal_deserialize(&mut map)?), + "passkey_login_policy_changed_details" => EventDetails::PasskeyLoginPolicyChangedDetails(PasskeyLoginPolicyChangedDetails::internal_deserialize(&mut map)?), + "password_strength_requirements_change_policy_details" => EventDetails::PasswordStrengthRequirementsChangePolicyDetails(PasswordStrengthRequirementsChangePolicyDetails::internal_deserialize(&mut map)?), + "permanent_delete_change_policy_details" => EventDetails::PermanentDeleteChangePolicyDetails(PermanentDeleteChangePolicyDetails::internal_deserialize(&mut map)?), + "previews_ai_policy_changed_details" => EventDetails::PreviewsAiPolicyChangedDetails(PreviewsAiPolicyChangedDetails::internal_deserialize(&mut map)?), + "replay_adding_people_policy_changed_details" => EventDetails::ReplayAddingPeoplePolicyChangedDetails(ReplayAddingPeoplePolicyChangedDetails::internal_deserialize(&mut map)?), + "replay_sharing_policy_changed_details" => EventDetails::ReplaySharingPolicyChangedDetails(ReplaySharingPolicyChangedDetails::internal_deserialize(&mut map)?), + "reseller_support_change_policy_details" => EventDetails::ResellerSupportChangePolicyDetails(ResellerSupportChangePolicyDetails::internal_deserialize(&mut map)?), + "rewind_policy_changed_details" => EventDetails::RewindPolicyChangedDetails(RewindPolicyChangedDetails::internal_deserialize(&mut map)?), + "send_and_track_policy_changed_details" => EventDetails::SendAndTrackPolicyChangedDetails(SendAndTrackPolicyChangedDetails::internal_deserialize(&mut map)?), + "send_external_sharing_policy_changed_details" => EventDetails::SendExternalSharingPolicyChangedDetails(SendExternalSharingPolicyChangedDetails::internal_deserialize(&mut map)?), + "send_for_signature_policy_changed_details" => EventDetails::SendForSignaturePolicyChangedDetails(SendForSignaturePolicyChangedDetails::internal_deserialize(&mut map)?), + "shared_link_default_permissions_policy_changed_details" => EventDetails::SharedLinkDefaultPermissionsPolicyChangedDetails(SharedLinkDefaultPermissionsPolicyChangedDetails::internal_deserialize(&mut map)?), + "sharing_change_folder_join_policy_details" => EventDetails::SharingChangeFolderJoinPolicyDetails(SharingChangeFolderJoinPolicyDetails::internal_deserialize(&mut map)?), + "sharing_change_link_allow_change_expiration_policy_details" => EventDetails::SharingChangeLinkAllowChangeExpirationPolicyDetails(SharingChangeLinkAllowChangeExpirationPolicyDetails::internal_deserialize(&mut map)?), + "sharing_change_link_default_expiration_policy_details" => EventDetails::SharingChangeLinkDefaultExpirationPolicyDetails(SharingChangeLinkDefaultExpirationPolicyDetails::internal_deserialize(&mut map)?), + "sharing_change_link_enforce_password_policy_details" => EventDetails::SharingChangeLinkEnforcePasswordPolicyDetails(SharingChangeLinkEnforcePasswordPolicyDetails::internal_deserialize(&mut map)?), + "sharing_change_link_policy_details" => EventDetails::SharingChangeLinkPolicyDetails(SharingChangeLinkPolicyDetails::internal_deserialize(&mut map)?), + "sharing_change_member_policy_details" => EventDetails::SharingChangeMemberPolicyDetails(SharingChangeMemberPolicyDetails::internal_deserialize(&mut map)?), + "showcase_change_download_policy_details" => EventDetails::ShowcaseChangeDownloadPolicyDetails(ShowcaseChangeDownloadPolicyDetails::internal_deserialize(&mut map)?), + "showcase_change_enabled_policy_details" => EventDetails::ShowcaseChangeEnabledPolicyDetails(ShowcaseChangeEnabledPolicyDetails::internal_deserialize(&mut map)?), + "showcase_change_external_sharing_policy_details" => EventDetails::ShowcaseChangeExternalSharingPolicyDetails(ShowcaseChangeExternalSharingPolicyDetails::internal_deserialize(&mut map)?), + "sign_external_sharing_policy_changed_details" => EventDetails::SignExternalSharingPolicyChangedDetails(SignExternalSharingPolicyChangedDetails::internal_deserialize(&mut map)?), + "sign_template_creation_permission_changed_details" => EventDetails::SignTemplateCreationPermissionChangedDetails(SignTemplateCreationPermissionChangedDetails::internal_deserialize(&mut map)?), + "smarter_smart_sync_policy_changed_details" => EventDetails::SmarterSmartSyncPolicyChangedDetails(SmarterSmartSyncPolicyChangedDetails::internal_deserialize(&mut map)?), + "smart_sync_change_policy_details" => EventDetails::SmartSyncChangePolicyDetails(SmartSyncChangePolicyDetails::internal_deserialize(&mut map)?), + "smart_sync_not_opt_out_details" => EventDetails::SmartSyncNotOptOutDetails(SmartSyncNotOptOutDetails::internal_deserialize(&mut map)?), + "smart_sync_opt_out_details" => EventDetails::SmartSyncOptOutDetails(SmartSyncOptOutDetails::internal_deserialize(&mut map)?), + "sso_change_policy_details" => EventDetails::SsoChangePolicyDetails(SsoChangePolicyDetails::internal_deserialize(&mut map)?), + "stack_cross_team_access_policy_changed_details" => EventDetails::StackCrossTeamAccessPolicyChangedDetails(StackCrossTeamAccessPolicyChangedDetails::internal_deserialize(&mut map)?), + "team_branding_policy_changed_details" => EventDetails::TeamBrandingPolicyChangedDetails(TeamBrandingPolicyChangedDetails::internal_deserialize(&mut map)?), + "team_extensions_policy_changed_details" => EventDetails::TeamExtensionsPolicyChangedDetails(TeamExtensionsPolicyChangedDetails::internal_deserialize(&mut map)?), + "team_member_storage_request_policy_changed_details" => EventDetails::TeamMemberStorageRequestPolicyChangedDetails(TeamMemberStorageRequestPolicyChangedDetails::internal_deserialize(&mut map)?), + "team_selective_sync_policy_changed_details" => EventDetails::TeamSelectiveSyncPolicyChangedDetails(TeamSelectiveSyncPolicyChangedDetails::internal_deserialize(&mut map)?), + "team_sharing_whitelist_subjects_changed_details" => EventDetails::TeamSharingWhitelistSubjectsChangedDetails(TeamSharingWhitelistSubjectsChangedDetails::internal_deserialize(&mut map)?), + "tfa_add_exception_details" => EventDetails::TfaAddExceptionDetails(TfaAddExceptionDetails::internal_deserialize(&mut map)?), + "tfa_change_policy_details" => EventDetails::TfaChangePolicyDetails(TfaChangePolicyDetails::internal_deserialize(&mut map)?), + "tfa_remove_exception_details" => EventDetails::TfaRemoveExceptionDetails(TfaRemoveExceptionDetails::internal_deserialize(&mut map)?), + "top_level_content_policy_changed_details" => EventDetails::TopLevelContentPolicyChangedDetails(TopLevelContentPolicyChangedDetails::internal_deserialize(&mut map)?), + "two_account_change_policy_details" => EventDetails::TwoAccountChangePolicyDetails(TwoAccountChangePolicyDetails::internal_deserialize(&mut map)?), + "viewer_info_policy_changed_details" => EventDetails::ViewerInfoPolicyChangedDetails(ViewerInfoPolicyChangedDetails::internal_deserialize(&mut map)?), + "watermarking_policy_changed_details" => EventDetails::WatermarkingPolicyChangedDetails(WatermarkingPolicyChangedDetails::internal_deserialize(&mut map)?), + "web_sessions_change_active_session_limit_details" => EventDetails::WebSessionsChangeActiveSessionLimitDetails(WebSessionsChangeActiveSessionLimitDetails::internal_deserialize(&mut map)?), + "web_sessions_change_fixed_length_policy_details" => EventDetails::WebSessionsChangeFixedLengthPolicyDetails(WebSessionsChangeFixedLengthPolicyDetails::internal_deserialize(&mut map)?), + "web_sessions_change_idle_length_policy_details" => EventDetails::WebSessionsChangeIdleLengthPolicyDetails(WebSessionsChangeIdleLengthPolicyDetails::internal_deserialize(&mut map)?), + "data_residency_migration_request_successful_details" => EventDetails::DataResidencyMigrationRequestSuccessfulDetails(DataResidencyMigrationRequestSuccessfulDetails::internal_deserialize(&mut map)?), + "data_residency_migration_request_unsuccessful_details" => EventDetails::DataResidencyMigrationRequestUnsuccessfulDetails(DataResidencyMigrationRequestUnsuccessfulDetails::internal_deserialize(&mut map)?), + "team_merge_from_details" => EventDetails::TeamMergeFromDetails(TeamMergeFromDetails::internal_deserialize(&mut map)?), + "team_merge_to_details" => EventDetails::TeamMergeToDetails(TeamMergeToDetails::internal_deserialize(&mut map)?), + "team_profile_add_background_details" => EventDetails::TeamProfileAddBackgroundDetails(TeamProfileAddBackgroundDetails::internal_deserialize(&mut map)?), + "team_profile_add_logo_details" => EventDetails::TeamProfileAddLogoDetails(TeamProfileAddLogoDetails::internal_deserialize(&mut map)?), + "team_profile_change_background_details" => EventDetails::TeamProfileChangeBackgroundDetails(TeamProfileChangeBackgroundDetails::internal_deserialize(&mut map)?), + "team_profile_change_default_language_details" => EventDetails::TeamProfileChangeDefaultLanguageDetails(TeamProfileChangeDefaultLanguageDetails::internal_deserialize(&mut map)?), + "team_profile_change_logo_details" => EventDetails::TeamProfileChangeLogoDetails(TeamProfileChangeLogoDetails::internal_deserialize(&mut map)?), + "team_profile_change_name_details" => EventDetails::TeamProfileChangeNameDetails(TeamProfileChangeNameDetails::internal_deserialize(&mut map)?), + "team_profile_remove_background_details" => EventDetails::TeamProfileRemoveBackgroundDetails(TeamProfileRemoveBackgroundDetails::internal_deserialize(&mut map)?), + "team_profile_remove_logo_details" => EventDetails::TeamProfileRemoveLogoDetails(TeamProfileRemoveLogoDetails::internal_deserialize(&mut map)?), + "passkey_add_details" => EventDetails::PasskeyAddDetails(PasskeyAddDetails::internal_deserialize(&mut map)?), + "passkey_remove_details" => EventDetails::PasskeyRemoveDetails(PasskeyRemoveDetails::internal_deserialize(&mut map)?), + "tfa_add_backup_phone_details" => EventDetails::TfaAddBackupPhoneDetails(TfaAddBackupPhoneDetails::internal_deserialize(&mut map)?), + "tfa_add_security_key_details" => EventDetails::TfaAddSecurityKeyDetails(TfaAddSecurityKeyDetails::internal_deserialize(&mut map)?), + "tfa_change_backup_phone_details" => EventDetails::TfaChangeBackupPhoneDetails(TfaChangeBackupPhoneDetails::internal_deserialize(&mut map)?), + "tfa_change_status_details" => EventDetails::TfaChangeStatusDetails(TfaChangeStatusDetails::internal_deserialize(&mut map)?), + "tfa_remove_backup_phone_details" => EventDetails::TfaRemoveBackupPhoneDetails(TfaRemoveBackupPhoneDetails::internal_deserialize(&mut map)?), + "tfa_remove_security_key_details" => EventDetails::TfaRemoveSecurityKeyDetails(TfaRemoveSecurityKeyDetails::internal_deserialize(&mut map)?), + "tfa_reset_details" => EventDetails::TfaResetDetails(TfaResetDetails::internal_deserialize(&mut map)?), + "changed_enterprise_admin_role_details" => EventDetails::ChangedEnterpriseAdminRoleDetails(ChangedEnterpriseAdminRoleDetails::internal_deserialize(&mut map)?), + "changed_enterprise_connected_team_status_details" => EventDetails::ChangedEnterpriseConnectedTeamStatusDetails(ChangedEnterpriseConnectedTeamStatusDetails::internal_deserialize(&mut map)?), + "ended_enterprise_admin_session_details" => EventDetails::EndedEnterpriseAdminSessionDetails(EndedEnterpriseAdminSessionDetails::internal_deserialize(&mut map)?), + "ended_enterprise_admin_session_deprecated_details" => EventDetails::EndedEnterpriseAdminSessionDeprecatedDetails(EndedEnterpriseAdminSessionDeprecatedDetails::internal_deserialize(&mut map)?), + "enterprise_settings_locking_details" => EventDetails::EnterpriseSettingsLockingDetails(EnterpriseSettingsLockingDetails::internal_deserialize(&mut map)?), + "guest_admin_change_status_details" => EventDetails::GuestAdminChangeStatusDetails(GuestAdminChangeStatusDetails::internal_deserialize(&mut map)?), + "started_enterprise_admin_session_details" => EventDetails::StartedEnterpriseAdminSessionDetails(StartedEnterpriseAdminSessionDetails::internal_deserialize(&mut map)?), + "team_merge_request_accepted_details" => EventDetails::TeamMergeRequestAcceptedDetails(TeamMergeRequestAcceptedDetails::internal_deserialize(&mut map)?), + "team_merge_request_accepted_shown_to_primary_team_details" => EventDetails::TeamMergeRequestAcceptedShownToPrimaryTeamDetails(TeamMergeRequestAcceptedShownToPrimaryTeamDetails::internal_deserialize(&mut map)?), + "team_merge_request_accepted_shown_to_secondary_team_details" => EventDetails::TeamMergeRequestAcceptedShownToSecondaryTeamDetails(TeamMergeRequestAcceptedShownToSecondaryTeamDetails::internal_deserialize(&mut map)?), + "team_merge_request_auto_canceled_details" => EventDetails::TeamMergeRequestAutoCanceledDetails(TeamMergeRequestAutoCanceledDetails::internal_deserialize(&mut map)?), + "team_merge_request_canceled_details" => EventDetails::TeamMergeRequestCanceledDetails(TeamMergeRequestCanceledDetails::internal_deserialize(&mut map)?), + "team_merge_request_canceled_shown_to_primary_team_details" => EventDetails::TeamMergeRequestCanceledShownToPrimaryTeamDetails(TeamMergeRequestCanceledShownToPrimaryTeamDetails::internal_deserialize(&mut map)?), + "team_merge_request_canceled_shown_to_secondary_team_details" => EventDetails::TeamMergeRequestCanceledShownToSecondaryTeamDetails(TeamMergeRequestCanceledShownToSecondaryTeamDetails::internal_deserialize(&mut map)?), + "team_merge_request_expired_details" => EventDetails::TeamMergeRequestExpiredDetails(TeamMergeRequestExpiredDetails::internal_deserialize(&mut map)?), + "team_merge_request_expired_shown_to_primary_team_details" => EventDetails::TeamMergeRequestExpiredShownToPrimaryTeamDetails(TeamMergeRequestExpiredShownToPrimaryTeamDetails::internal_deserialize(&mut map)?), + "team_merge_request_expired_shown_to_secondary_team_details" => EventDetails::TeamMergeRequestExpiredShownToSecondaryTeamDetails(TeamMergeRequestExpiredShownToSecondaryTeamDetails::internal_deserialize(&mut map)?), + "team_merge_request_rejected_shown_to_primary_team_details" => EventDetails::TeamMergeRequestRejectedShownToPrimaryTeamDetails(TeamMergeRequestRejectedShownToPrimaryTeamDetails::internal_deserialize(&mut map)?), + "team_merge_request_rejected_shown_to_secondary_team_details" => EventDetails::TeamMergeRequestRejectedShownToSecondaryTeamDetails(TeamMergeRequestRejectedShownToSecondaryTeamDetails::internal_deserialize(&mut map)?), + "team_merge_request_reminder_details" => EventDetails::TeamMergeRequestReminderDetails(TeamMergeRequestReminderDetails::internal_deserialize(&mut map)?), + "team_merge_request_reminder_shown_to_primary_team_details" => EventDetails::TeamMergeRequestReminderShownToPrimaryTeamDetails(TeamMergeRequestReminderShownToPrimaryTeamDetails::internal_deserialize(&mut map)?), + "team_merge_request_reminder_shown_to_secondary_team_details" => EventDetails::TeamMergeRequestReminderShownToSecondaryTeamDetails(TeamMergeRequestReminderShownToSecondaryTeamDetails::internal_deserialize(&mut map)?), + "team_merge_request_revoked_details" => EventDetails::TeamMergeRequestRevokedDetails(TeamMergeRequestRevokedDetails::internal_deserialize(&mut map)?), + "team_merge_request_sent_shown_to_primary_team_details" => EventDetails::TeamMergeRequestSentShownToPrimaryTeamDetails(TeamMergeRequestSentShownToPrimaryTeamDetails::internal_deserialize(&mut map)?), + "team_merge_request_sent_shown_to_secondary_team_details" => EventDetails::TeamMergeRequestSentShownToSecondaryTeamDetails(TeamMergeRequestSentShownToSecondaryTeamDetails::internal_deserialize(&mut map)?), + "missing_details" => EventDetails::MissingDetails(MissingDetails::internal_deserialize(&mut map)?), + _ => EventDetails::Other, + }; + crate::eat_json_fields(&mut map)?; + Ok(value) + } + } + const VARIANTS: &[&str] = &["admin_alerting_alert_state_changed_details", + "admin_alerting_changed_alert_config_details", + "admin_alerting_triggered_alert_details", + "ransomware_restore_process_completed_details", + "ransomware_restore_process_started_details", + "app_blocked_by_permissions_details", + "app_link_team_details", + "app_link_user_details", + "app_unlink_team_details", + "app_unlink_user_details", + "integration_connected_details", + "integration_disconnected_details", + "file_add_comment_details", + "file_change_comment_subscription_details", + "file_delete_comment_details", + "file_edit_comment_details", + "file_like_comment_details", + "file_resolve_comment_details", + "file_unlike_comment_details", + "file_unresolve_comment_details", + "dash_added_comment_to_stack_details", + "dash_added_connector_details", + "dash_added_link_to_stack_details", + "dash_added_team_email_domain_allowlist_details", + "dash_admin_added_org_wide_connector_details", + "dash_admin_disabled_connector_details", + "dash_admin_enabled_connector_details", + "dash_admin_removed_org_wide_connector_details", + "dash_archived_stack_details", + "dash_changed_audience_of_shared_link_to_stack_details", + "dash_cloned_stack_details", + "dash_connector_tools_call_details", + "dash_created_stack_details", + "dash_deleted_comment_from_stack_details", + "dash_deleted_stack_details", + "dash_edited_comment_in_stack_details", + "dash_external_user_opened_stack_details", + "dash_first_launched_desktop_details", + "dash_first_launched_extension_details", + "dash_first_launched_web_start_page_details", + "dash_opened_shared_link_to_stack_details", + "dash_opened_stack_details", + "dash_preview_opt_out_status_changed_details", + "dash_removed_connector_details", + "dash_removed_link_from_stack_details", + "dash_removed_shared_link_to_stack_details", + "dash_removed_team_email_domain_allowlist_details", + "dash_renamed_stack_details", + "dash_shared_link_to_stack_details", + "dash_unarchived_stack_details", + "dash_viewed_company_stack_details", + "dash_viewed_external_ai_activity_report_details", + "governance_policy_add_folders_details", + "governance_policy_add_folder_failed_details", + "governance_policy_content_disposed_details", + "governance_policy_create_details", + "governance_policy_delete_details", + "governance_policy_edit_details_details", + "governance_policy_edit_duration_details", + "governance_policy_export_created_details", + "governance_policy_export_removed_details", + "governance_policy_remove_folders_details", + "governance_policy_report_created_details", + "governance_policy_zip_part_downloaded_details", + "legal_holds_activate_a_hold_details", + "legal_holds_add_members_details", + "legal_holds_change_hold_details_details", + "legal_holds_change_hold_name_details", + "legal_holds_export_a_hold_details", + "legal_holds_export_cancelled_details", + "legal_holds_export_downloaded_details", + "legal_holds_export_removed_details", + "legal_holds_release_a_hold_details", + "legal_holds_remove_members_details", + "legal_holds_report_a_hold_details", + "device_change_ip_desktop_details", + "device_change_ip_mobile_details", + "device_change_ip_web_details", + "device_delete_on_unlink_fail_details", + "device_delete_on_unlink_success_details", + "device_link_fail_details", + "device_link_success_details", + "device_management_disabled_details", + "device_management_enabled_details", + "device_sync_backup_status_changed_details", + "device_unlink_details", + "dropbox_passwords_exported_details", + "dropbox_passwords_new_device_enrolled_details", + "emm_refresh_auth_token_details", + "external_drive_backup_eligibility_status_checked_details", + "external_drive_backup_status_changed_details", + "account_capture_change_availability_details", + "account_capture_migrate_account_details", + "account_capture_notification_emails_sent_details", + "account_capture_relinquish_account_details", + "disabled_domain_invites_details", + "domain_invites_approve_request_to_join_team_details", + "domain_invites_decline_request_to_join_team_details", + "domain_invites_email_existing_users_details", + "domain_invites_request_to_join_team_details", + "domain_invites_set_invite_new_user_pref_to_no_details", + "domain_invites_set_invite_new_user_pref_to_yes_details", + "domain_verification_add_domain_fail_details", + "domain_verification_add_domain_success_details", + "domain_verification_remove_domain_details", + "enabled_domain_invites_details", + "encrypted_folder_cancel_team_key_rotation_details", + "encrypted_folder_enroll_backup_key_details", + "encrypted_folder_enroll_client_details", + "encrypted_folder_enroll_team_details", + "encrypted_folder_finish_team_unenrollment_details", + "encrypted_folder_init_team_key_rotation_details", + "encrypted_folder_init_team_unenrollment_details", + "encrypted_folder_remove_backup_key_details", + "encrypted_folder_rotate_team_key_details", + "encrypted_folder_unenroll_client_details", + "team_encryption_key_activate_key_details", + "team_encryption_key_cancel_key_deletion_details", + "team_encryption_key_create_key_details", + "team_encryption_key_deactivate_key_details", + "team_encryption_key_delete_key_details", + "team_encryption_key_disable_key_details", + "team_encryption_key_enable_key_details", + "team_encryption_key_rotate_key_details", + "team_encryption_key_schedule_key_deletion_details", + "apply_naming_convention_details", + "create_folder_details", + "file_add_details", + "file_add_from_automation_details", + "file_copy_details", + "file_delete_details", + "file_download_details", + "file_edit_details", + "file_get_copy_reference_details", + "file_locking_lock_status_changed_details", + "file_move_details", + "file_permanently_delete_details", + "file_preview_details", + "file_rename_details", + "file_restore_details", + "file_revert_details", + "file_rollback_changes_details", + "file_save_copy_reference_details", + "folder_overview_description_changed_details", + "folder_overview_item_pinned_details", + "folder_overview_item_unpinned_details", + "object_label_added_details", + "object_label_removed_details", + "object_label_updated_value_details", + "organize_folder_with_tidy_details", + "replay_file_delete_details", + "replay_file_downloaded_details", + "replay_team_project_created_details", + "rewind_folder_details", + "undo_naming_convention_details", + "undo_organize_folder_with_tidy_details", + "user_tags_added_details", + "user_tags_removed_details", + "email_ingest_receive_file_details", + "file_request_auto_close_details", + "file_request_change_details", + "file_request_close_details", + "file_request_create_details", + "file_request_delete_details", + "file_request_receive_file_details", + "group_add_external_id_details", + "group_add_member_details", + "group_change_external_id_details", + "group_change_management_type_details", + "group_change_member_role_details", + "group_create_details", + "group_delete_details", + "group_description_updated_details", + "group_external_sharing_setting_override_changed_details", + "group_join_policy_updated_details", + "group_moved_details", + "group_remove_external_id_details", + "group_remove_member_details", + "group_rename_details", + "account_lock_or_unlocked_details", + "emm_error_details", + "guest_admin_signed_in_via_trusted_teams_details", + "guest_admin_signed_out_via_trusted_teams_details", + "login_fail_details", + "login_success_details", + "logout_details", + "reseller_support_session_end_details", + "reseller_support_session_start_details", + "sign_in_as_session_end_details", + "sign_in_as_session_start_details", + "sso_error_details", + "addon_assigned_details", + "addon_removed_details", + "backup_admin_invitation_sent_details", + "backup_invitation_opened_details", + "create_team_invite_link_details", + "delete_team_invite_link_details", + "member_add_external_id_details", + "member_add_name_details", + "member_change_admin_role_details", + "member_change_email_details", + "member_change_external_id_details", + "member_change_membership_type_details", + "member_change_name_details", + "member_change_reseller_role_details", + "member_change_status_details", + "member_delete_manual_contacts_details", + "member_delete_profile_photo_details", + "member_permanently_delete_account_contents_details", + "member_remove_external_id_details", + "member_set_profile_photo_details", + "member_space_limits_add_custom_quota_details", + "member_space_limits_change_custom_quota_details", + "member_space_limits_change_status_details", + "member_space_limits_remove_custom_quota_details", + "member_suggest_details", + "member_transfer_account_contents_details", + "pending_secondary_email_added_details", + "product_assigned_to_member_details", + "product_removed_from_member_details", + "secondary_email_deleted_details", + "secondary_email_verified_details", + "secondary_mails_policy_changed_details", + "binder_add_page_details", + "binder_add_section_details", + "binder_remove_page_details", + "binder_remove_section_details", + "binder_rename_page_details", + "binder_rename_section_details", + "binder_reorder_page_details", + "binder_reorder_section_details", + "paper_content_add_member_details", + "paper_content_add_to_folder_details", + "paper_content_archive_details", + "paper_content_create_details", + "paper_content_permanently_delete_details", + "paper_content_remove_from_folder_details", + "paper_content_remove_member_details", + "paper_content_rename_details", + "paper_content_restore_details", + "paper_doc_add_comment_details", + "paper_doc_change_member_role_details", + "paper_doc_change_sharing_policy_details", + "paper_doc_change_subscription_details", + "paper_doc_deleted_details", + "paper_doc_delete_comment_details", + "paper_doc_download_details", + "paper_doc_edit_details", + "paper_doc_edit_comment_details", + "paper_doc_followed_details", + "paper_doc_mention_details", + "paper_doc_ownership_changed_details", + "paper_doc_request_access_details", + "paper_doc_resolve_comment_details", + "paper_doc_revert_details", + "paper_doc_slack_share_details", + "paper_doc_team_invite_details", + "paper_doc_trashed_details", + "paper_doc_unresolve_comment_details", + "paper_doc_untrashed_details", + "paper_doc_view_details", + "paper_external_view_allow_details", + "paper_external_view_default_team_details", + "paper_external_view_forbid_details", + "paper_folder_change_subscription_details", + "paper_folder_deleted_details", + "paper_folder_followed_details", + "paper_folder_team_invite_details", + "paper_published_link_change_permission_details", + "paper_published_link_create_details", + "paper_published_link_disabled_details", + "paper_published_link_view_details", + "password_change_details", + "password_reset_details", + "password_reset_all_details", + "classification_create_report_details", + "classification_create_report_fail_details", + "emm_create_exceptions_report_details", + "emm_create_usage_report_details", + "export_members_report_details", + "export_members_report_fail_details", + "external_sharing_create_report_details", + "external_sharing_report_failed_details", + "member_access_details_create_report_details", + "member_access_details_create_report_failed_details", + "no_expiration_link_gen_create_report_details", + "no_expiration_link_gen_report_failed_details", + "no_password_link_gen_create_report_details", + "no_password_link_gen_report_failed_details", + "no_password_link_view_create_report_details", + "no_password_link_view_report_failed_details", + "outdated_link_view_create_report_details", + "outdated_link_view_report_failed_details", + "paper_admin_export_start_details", + "ransomware_alert_create_report_details", + "ransomware_alert_create_report_failed_details", + "shared_folders_create_report_details", + "shared_folders_create_report_failed_details", + "smart_sync_create_admin_privilege_report_details", + "team_activity_create_report_details", + "team_activity_create_report_fail_details", + "team_folders_create_report_details", + "team_folders_create_report_failed_details", + "team_storage_create_report_details", + "team_storage_create_report_failed_details", + "collection_share_details", + "file_transfers_file_add_details", + "file_transfers_transfer_delete_details", + "file_transfers_transfer_download_details", + "file_transfers_transfer_send_details", + "file_transfers_transfer_view_details", + "note_acl_invite_only_details", + "note_acl_link_details", + "note_acl_team_link_details", + "note_shared_details", + "note_share_receive_details", + "open_note_shared_details", + "replay_file_shared_link_created_details", + "replay_file_shared_link_modified_details", + "replay_project_team_add_details", + "replay_project_team_delete_details", + "send_and_track_file_added_details", + "send_and_track_file_renamed_details", + "send_and_track_file_updated_details", + "send_and_track_link_created_details", + "send_and_track_link_deleted_details", + "send_and_track_link_updated_details", + "send_and_track_link_viewed_details", + "send_and_track_removed_file_and_associated_links_details", + "sf_add_group_details", + "sf_allow_non_members_to_view_shared_links_details", + "sf_external_invite_warn_details", + "sf_fb_invite_details", + "sf_fb_invite_change_role_details", + "sf_fb_uninvite_details", + "sf_invite_group_details", + "sf_team_grant_access_details", + "sf_team_invite_details", + "sf_team_invite_change_role_details", + "sf_team_join_details", + "sf_team_join_from_oob_link_details", + "sf_team_uninvite_details", + "shared_content_add_invitees_details", + "shared_content_add_link_expiry_details", + "shared_content_add_link_password_details", + "shared_content_add_member_details", + "shared_content_change_downloads_policy_details", + "shared_content_change_invitee_role_details", + "shared_content_change_link_audience_details", + "shared_content_change_link_expiry_details", + "shared_content_change_link_password_details", + "shared_content_change_member_role_details", + "shared_content_change_viewer_info_policy_details", + "shared_content_claim_invitation_details", + "shared_content_copy_details", + "shared_content_download_details", + "shared_content_relinquish_membership_details", + "shared_content_remove_invitees_details", + "shared_content_remove_link_expiry_details", + "shared_content_remove_link_password_details", + "shared_content_remove_member_details", + "shared_content_request_access_details", + "shared_content_restore_invitees_details", + "shared_content_restore_member_details", + "shared_content_unshare_details", + "shared_content_view_details", + "shared_folder_change_link_policy_details", + "shared_folder_change_members_inheritance_policy_details", + "shared_folder_change_members_management_policy_details", + "shared_folder_change_members_policy_details", + "shared_folder_create_details", + "shared_folder_decline_invitation_details", + "shared_folder_mount_details", + "shared_folder_nest_details", + "shared_folder_transfer_ownership_details", + "shared_folder_unmount_details", + "shared_link_add_expiry_details", + "shared_link_change_expiry_details", + "shared_link_change_visibility_details", + "shared_link_copy_details", + "shared_link_create_details", + "shared_link_disable_details", + "shared_link_download_details", + "shared_link_remove_expiry_details", + "shared_link_remove_visitor_details", + "shared_link_settings_add_expiration_details", + "shared_link_settings_add_password_details", + "shared_link_settings_allow_download_disabled_details", + "shared_link_settings_allow_download_enabled_details", + "shared_link_settings_change_audience_details", + "shared_link_settings_change_expiration_details", + "shared_link_settings_change_password_details", + "shared_link_settings_remove_expiration_details", + "shared_link_settings_remove_password_details", + "shared_link_share_details", + "shared_link_view_details", + "shared_note_opened_details", + "shmodel_disable_downloads_details", + "shmodel_enable_downloads_details", + "shmodel_group_share_details", + "showcase_access_granted_details", + "showcase_add_member_details", + "showcase_archived_details", + "showcase_created_details", + "showcase_delete_comment_details", + "showcase_edited_details", + "showcase_edit_comment_details", + "showcase_file_added_details", + "showcase_file_download_details", + "showcase_file_removed_details", + "showcase_file_view_details", + "showcase_permanently_deleted_details", + "showcase_post_comment_details", + "showcase_remove_member_details", + "showcase_renamed_details", + "showcase_request_access_details", + "showcase_resolve_comment_details", + "showcase_restored_details", + "showcase_trashed_details", + "showcase_trashed_deprecated_details", + "showcase_unresolve_comment_details", + "showcase_untrashed_details", + "showcase_untrashed_deprecated_details", + "showcase_view_details", + "sign_signature_request_canceled_details", + "sign_signature_request_completed_details", + "sign_signature_request_declined_details", + "sign_signature_request_opened_details", + "sign_signature_request_reminder_sent_details", + "sign_signature_request_sent_details", + "sign_template_created_details", + "sign_template_shared_details", + "risc_security_event_details", + "sso_add_cert_details", + "sso_add_login_url_details", + "sso_add_logout_url_details", + "sso_change_cert_details", + "sso_change_login_url_details", + "sso_change_logout_url_details", + "sso_change_saml_identity_mode_details", + "sso_remove_cert_details", + "sso_remove_login_url_details", + "sso_remove_logout_url_details", + "team_folder_change_status_details", + "team_folder_create_details", + "team_folder_downgrade_details", + "team_folder_permanently_delete_details", + "team_folder_rename_details", + "team_selective_sync_settings_changed_details", + "account_capture_change_policy_details", + "admin_email_reminders_changed_details", + "ai_third_party_sharing_dropbox_base_policy_changed_details", + "allow_download_disabled_details", + "allow_download_enabled_details", + "apple_login_change_policy_details", + "app_permissions_changed_details", + "camera_uploads_policy_changed_details", + "capture_team_space_policy_changed_details", + "capture_transcript_policy_changed_details", + "classification_change_policy_details", + "computer_backup_policy_changed_details", + "content_administration_policy_changed_details", + "content_deletion_protection_change_policy_details", + "dash_external_sharing_policy_changed_details", + "data_placement_restriction_change_policy_details", + "data_placement_restriction_satisfy_policy_details", + "device_approvals_add_exception_details", + "device_approvals_change_desktop_policy_details", + "device_approvals_change_mobile_policy_details", + "device_approvals_change_overage_action_details", + "device_approvals_change_unlink_action_details", + "device_approvals_remove_exception_details", + "directory_restrictions_add_members_details", + "directory_restrictions_remove_members_details", + "dropbox_passwords_policy_changed_details", + "email_ingest_policy_changed_details", + "emm_add_exception_details", + "emm_change_policy_details", + "emm_remove_exception_details", + "extended_version_history_change_policy_details", + "external_drive_backup_policy_changed_details", + "file_comments_change_policy_details", + "file_locking_policy_changed_details", + "file_provider_migration_policy_changed_details", + "file_requests_change_policy_details", + "file_requests_emails_enabled_details", + "file_requests_emails_restricted_to_team_only_details", + "file_transfers_policy_changed_details", + "flexible_file_names_policy_changed_details", + "folder_link_restriction_policy_changed_details", + "google_sso_change_policy_details", + "group_user_management_change_policy_details", + "integration_policy_changed_details", + "invite_acceptance_email_policy_changed_details", + "member_requests_change_policy_details", + "member_send_invite_policy_changed_details", + "member_space_limits_add_exception_details", + "member_space_limits_change_caps_type_policy_details", + "member_space_limits_change_policy_details", + "member_space_limits_remove_exception_details", + "member_suggestions_change_policy_details", + "microsoft_login_change_policy_details", + "microsoft_office_addin_change_policy_details", + "network_control_change_policy_details", + "paper_change_deployment_policy_details", + "paper_change_member_link_policy_details", + "paper_change_member_policy_details", + "paper_change_policy_details", + "paper_default_folder_policy_changed_details", + "paper_desktop_policy_changed_details", + "paper_enabled_users_group_addition_details", + "paper_enabled_users_group_removal_details", + "passkey_login_policy_changed_details", + "password_strength_requirements_change_policy_details", + "permanent_delete_change_policy_details", + "previews_ai_policy_changed_details", + "replay_adding_people_policy_changed_details", + "replay_sharing_policy_changed_details", + "reseller_support_change_policy_details", + "rewind_policy_changed_details", + "send_and_track_policy_changed_details", + "send_external_sharing_policy_changed_details", + "send_for_signature_policy_changed_details", + "shared_link_default_permissions_policy_changed_details", + "sharing_change_folder_join_policy_details", + "sharing_change_link_allow_change_expiration_policy_details", + "sharing_change_link_default_expiration_policy_details", + "sharing_change_link_enforce_password_policy_details", + "sharing_change_link_policy_details", + "sharing_change_member_policy_details", + "showcase_change_download_policy_details", + "showcase_change_enabled_policy_details", + "showcase_change_external_sharing_policy_details", + "sign_external_sharing_policy_changed_details", + "sign_template_creation_permission_changed_details", + "smarter_smart_sync_policy_changed_details", + "smart_sync_change_policy_details", + "smart_sync_not_opt_out_details", + "smart_sync_opt_out_details", + "sso_change_policy_details", + "stack_cross_team_access_policy_changed_details", + "team_branding_policy_changed_details", + "team_extensions_policy_changed_details", + "team_member_storage_request_policy_changed_details", + "team_selective_sync_policy_changed_details", + "team_sharing_whitelist_subjects_changed_details", + "tfa_add_exception_details", + "tfa_change_policy_details", + "tfa_remove_exception_details", + "top_level_content_policy_changed_details", + "two_account_change_policy_details", + "viewer_info_policy_changed_details", + "watermarking_policy_changed_details", + "web_sessions_change_active_session_limit_details", + "web_sessions_change_fixed_length_policy_details", + "web_sessions_change_idle_length_policy_details", + "data_residency_migration_request_successful_details", + "data_residency_migration_request_unsuccessful_details", + "team_merge_from_details", + "team_merge_to_details", + "team_profile_add_background_details", + "team_profile_add_logo_details", + "team_profile_change_background_details", + "team_profile_change_default_language_details", + "team_profile_change_logo_details", + "team_profile_change_name_details", + "team_profile_remove_background_details", + "team_profile_remove_logo_details", + "passkey_add_details", + "passkey_remove_details", + "tfa_add_backup_phone_details", + "tfa_add_security_key_details", + "tfa_change_backup_phone_details", + "tfa_change_status_details", + "tfa_remove_backup_phone_details", + "tfa_remove_security_key_details", + "tfa_reset_details", + "changed_enterprise_admin_role_details", + "changed_enterprise_connected_team_status_details", + "ended_enterprise_admin_session_details", + "ended_enterprise_admin_session_deprecated_details", + "enterprise_settings_locking_details", + "guest_admin_change_status_details", + "started_enterprise_admin_session_details", + "team_merge_request_accepted_details", + "team_merge_request_accepted_shown_to_primary_team_details", + "team_merge_request_accepted_shown_to_secondary_team_details", + "team_merge_request_auto_canceled_details", + "team_merge_request_canceled_details", + "team_merge_request_canceled_shown_to_primary_team_details", + "team_merge_request_canceled_shown_to_secondary_team_details", + "team_merge_request_expired_details", + "team_merge_request_expired_shown_to_primary_team_details", + "team_merge_request_expired_shown_to_secondary_team_details", + "team_merge_request_rejected_shown_to_primary_team_details", + "team_merge_request_rejected_shown_to_secondary_team_details", + "team_merge_request_reminder_details", + "team_merge_request_reminder_shown_to_primary_team_details", + "team_merge_request_reminder_shown_to_secondary_team_details", + "team_merge_request_revoked_details", + "team_merge_request_sent_shown_to_primary_team_details", + "team_merge_request_sent_shown_to_secondary_team_details", + "missing_details", + "other"]; + deserializer.deserialize_struct("EventDetails", VARIANTS, EnumVisitor) + } +} + +impl ::serde::ser::Serialize for EventDetails { + fn serialize(&self, serializer: S) -> Result { + // union serializer + use serde::ser::SerializeStruct; + match self { + EventDetails::AdminAlertingAlertStateChangedDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 7)?; + s.serialize_field(".tag", "admin_alerting_alert_state_changed_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::AdminAlertingChangedAlertConfigDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 4)?; + s.serialize_field(".tag", "admin_alerting_changed_alert_config_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::AdminAlertingTriggeredAlertDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 5)?; + s.serialize_field(".tag", "admin_alerting_triggered_alert_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::RansomwareRestoreProcessCompletedDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 4)?; + s.serialize_field(".tag", "ransomware_restore_process_completed_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::RansomwareRestoreProcessStartedDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "ransomware_restore_process_started_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::AppBlockedByPermissionsDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "app_blocked_by_permissions_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::AppLinkTeamDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "app_link_team_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::AppLinkUserDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "app_link_user_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::AppUnlinkTeamDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "app_unlink_team_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::AppUnlinkUserDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "app_unlink_user_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::IntegrationConnectedDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "integration_connected_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::IntegrationDisconnectedDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "integration_disconnected_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::FileAddCommentDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "file_add_comment_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::FileChangeCommentSubscriptionDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "file_change_comment_subscription_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::FileDeleteCommentDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "file_delete_comment_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::FileEditCommentDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "file_edit_comment_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::FileLikeCommentDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "file_like_comment_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::FileResolveCommentDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "file_resolve_comment_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::FileUnlikeCommentDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "file_unlike_comment_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::FileUnresolveCommentDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "file_unresolve_comment_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::DashAddedCommentToStackDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 5)?; + s.serialize_field(".tag", "dash_added_comment_to_stack_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::DashAddedConnectorDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "dash_added_connector_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::DashAddedLinkToStackDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 4)?; + s.serialize_field(".tag", "dash_added_link_to_stack_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::DashAddedTeamEmailDomainAllowlistDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "dash_added_team_email_domain_allowlist_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::DashAdminAddedOrgWideConnectorDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "dash_admin_added_org_wide_connector_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::DashAdminDisabledConnectorDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "dash_admin_disabled_connector_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::DashAdminEnabledConnectorDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "dash_admin_enabled_connector_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::DashAdminRemovedOrgWideConnectorDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "dash_admin_removed_org_wide_connector_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::DashArchivedStackDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "dash_archived_stack_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::DashChangedAudienceOfSharedLinkToStackDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "dash_changed_audience_of_shared_link_to_stack_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::DashClonedStackDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 5)?; + s.serialize_field(".tag", "dash_cloned_stack_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::DashConnectorToolsCallDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 4)?; + s.serialize_field(".tag", "dash_connector_tools_call_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::DashCreatedStackDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "dash_created_stack_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::DashDeletedCommentFromStackDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 4)?; + s.serialize_field(".tag", "dash_deleted_comment_from_stack_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::DashDeletedStackDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "dash_deleted_stack_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::DashEditedCommentInStackDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 5)?; + s.serialize_field(".tag", "dash_edited_comment_in_stack_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::DashExternalUserOpenedStackDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 7)?; + s.serialize_field(".tag", "dash_external_user_opened_stack_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::DashFirstLaunchedDesktopDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "dash_first_launched_desktop_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::DashFirstLaunchedExtensionDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "dash_first_launched_extension_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::DashFirstLaunchedWebStartPageDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "dash_first_launched_web_start_page_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::DashOpenedSharedLinkToStackDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "dash_opened_shared_link_to_stack_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::DashOpenedStackDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "dash_opened_stack_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::DashPreviewOptOutStatusChangedDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "dash_preview_opt_out_status_changed_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::DashRemovedConnectorDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "dash_removed_connector_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::DashRemovedLinkFromStackDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 4)?; + s.serialize_field(".tag", "dash_removed_link_from_stack_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::DashRemovedSharedLinkToStackDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "dash_removed_shared_link_to_stack_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::DashRemovedTeamEmailDomainAllowlistDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "dash_removed_team_email_domain_allowlist_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::DashRenamedStackDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 4)?; + s.serialize_field(".tag", "dash_renamed_stack_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::DashSharedLinkToStackDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "dash_shared_link_to_stack_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::DashUnarchivedStackDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "dash_unarchived_stack_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::DashViewedCompanyStackDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "dash_viewed_company_stack_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::DashViewedExternalAiActivityReportDetails(_) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 1)?; + s.serialize_field(".tag", "dash_viewed_external_ai_activity_report_details")?; + s.end() + } + EventDetails::GovernancePolicyAddFoldersDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 5)?; + s.serialize_field(".tag", "governance_policy_add_folders_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::GovernancePolicyAddFolderFailedDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 6)?; + s.serialize_field(".tag", "governance_policy_add_folder_failed_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::GovernancePolicyContentDisposedDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 5)?; + s.serialize_field(".tag", "governance_policy_content_disposed_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::GovernancePolicyCreateDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 6)?; + s.serialize_field(".tag", "governance_policy_create_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::GovernancePolicyDeleteDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 4)?; + s.serialize_field(".tag", "governance_policy_delete_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::GovernancePolicyEditDetailsDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 7)?; + s.serialize_field(".tag", "governance_policy_edit_details_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::GovernancePolicyEditDurationDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 6)?; + s.serialize_field(".tag", "governance_policy_edit_duration_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::GovernancePolicyExportCreatedDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 5)?; + s.serialize_field(".tag", "governance_policy_export_created_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::GovernancePolicyExportRemovedDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 5)?; + s.serialize_field(".tag", "governance_policy_export_removed_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::GovernancePolicyRemoveFoldersDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 6)?; + s.serialize_field(".tag", "governance_policy_remove_folders_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::GovernancePolicyReportCreatedDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 4)?; + s.serialize_field(".tag", "governance_policy_report_created_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::GovernancePolicyZipPartDownloadedDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 6)?; + s.serialize_field(".tag", "governance_policy_zip_part_downloaded_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::LegalHoldsActivateAHoldDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 5)?; + s.serialize_field(".tag", "legal_holds_activate_a_hold_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::LegalHoldsAddMembersDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "legal_holds_add_members_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::LegalHoldsChangeHoldDetailsDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 5)?; + s.serialize_field(".tag", "legal_holds_change_hold_details_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::LegalHoldsChangeHoldNameDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 4)?; + s.serialize_field(".tag", "legal_holds_change_hold_name_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::LegalHoldsExportAHoldDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 4)?; + s.serialize_field(".tag", "legal_holds_export_a_hold_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::LegalHoldsExportCancelledDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 4)?; + s.serialize_field(".tag", "legal_holds_export_cancelled_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::LegalHoldsExportDownloadedDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 6)?; + s.serialize_field(".tag", "legal_holds_export_downloaded_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::LegalHoldsExportRemovedDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 4)?; + s.serialize_field(".tag", "legal_holds_export_removed_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::LegalHoldsReleaseAHoldDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "legal_holds_release_a_hold_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::LegalHoldsRemoveMembersDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "legal_holds_remove_members_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::LegalHoldsReportAHoldDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "legal_holds_report_a_hold_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::DeviceChangeIpDesktopDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "device_change_ip_desktop_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::DeviceChangeIpMobileDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "device_change_ip_mobile_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::DeviceChangeIpWebDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "device_change_ip_web_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::DeviceDeleteOnUnlinkFailDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 4)?; + s.serialize_field(".tag", "device_delete_on_unlink_fail_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::DeviceDeleteOnUnlinkSuccessDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "device_delete_on_unlink_success_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::DeviceLinkFailDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "device_link_fail_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::DeviceLinkSuccessDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "device_link_success_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::DeviceManagementDisabledDetails(_) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 1)?; + s.serialize_field(".tag", "device_management_disabled_details")?; + s.end() + } + EventDetails::DeviceManagementEnabledDetails(_) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 1)?; + s.serialize_field(".tag", "device_management_enabled_details")?; + s.end() + } + EventDetails::DeviceSyncBackupStatusChangedDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 4)?; + s.serialize_field(".tag", "device_sync_backup_status_changed_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::DeviceUnlinkDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 4)?; + s.serialize_field(".tag", "device_unlink_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::DropboxPasswordsExportedDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "dropbox_passwords_exported_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::DropboxPasswordsNewDeviceEnrolledDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "dropbox_passwords_new_device_enrolled_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::EmmRefreshAuthTokenDetails(_) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 1)?; + s.serialize_field(".tag", "emm_refresh_auth_token_details")?; + s.end() + } + EventDetails::ExternalDriveBackupEligibilityStatusCheckedDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 4)?; + s.serialize_field(".tag", "external_drive_backup_eligibility_status_checked_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::ExternalDriveBackupStatusChangedDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 4)?; + s.serialize_field(".tag", "external_drive_backup_status_changed_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::AccountCaptureChangeAvailabilityDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "account_capture_change_availability_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::AccountCaptureMigrateAccountDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "account_capture_migrate_account_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::AccountCaptureNotificationEmailsSentDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "account_capture_notification_emails_sent_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::AccountCaptureRelinquishAccountDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "account_capture_relinquish_account_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::DisabledDomainInvitesDetails(_) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 1)?; + s.serialize_field(".tag", "disabled_domain_invites_details")?; + s.end() + } + EventDetails::DomainInvitesApproveRequestToJoinTeamDetails(_) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 1)?; + s.serialize_field(".tag", "domain_invites_approve_request_to_join_team_details")?; + s.end() + } + EventDetails::DomainInvitesDeclineRequestToJoinTeamDetails(_) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 1)?; + s.serialize_field(".tag", "domain_invites_decline_request_to_join_team_details")?; + s.end() + } + EventDetails::DomainInvitesEmailExistingUsersDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "domain_invites_email_existing_users_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::DomainInvitesRequestToJoinTeamDetails(_) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 1)?; + s.serialize_field(".tag", "domain_invites_request_to_join_team_details")?; + s.end() + } + EventDetails::DomainInvitesSetInviteNewUserPrefToNoDetails(_) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 1)?; + s.serialize_field(".tag", "domain_invites_set_invite_new_user_pref_to_no_details")?; + s.end() + } + EventDetails::DomainInvitesSetInviteNewUserPrefToYesDetails(_) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 1)?; + s.serialize_field(".tag", "domain_invites_set_invite_new_user_pref_to_yes_details")?; + s.end() + } + EventDetails::DomainVerificationAddDomainFailDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "domain_verification_add_domain_fail_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::DomainVerificationAddDomainSuccessDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "domain_verification_add_domain_success_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::DomainVerificationRemoveDomainDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "domain_verification_remove_domain_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::EnabledDomainInvitesDetails(_) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 1)?; + s.serialize_field(".tag", "enabled_domain_invites_details")?; + s.end() + } + EventDetails::EncryptedFolderCancelTeamKeyRotationDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "encrypted_folder_cancel_team_key_rotation_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::EncryptedFolderEnrollBackupKeyDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "encrypted_folder_enroll_backup_key_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::EncryptedFolderEnrollClientDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "encrypted_folder_enroll_client_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::EncryptedFolderEnrollTeamDetails(_) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 1)?; + s.serialize_field(".tag", "encrypted_folder_enroll_team_details")?; + s.end() + } + EventDetails::EncryptedFolderFinishTeamUnenrollmentDetails(_) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 1)?; + s.serialize_field(".tag", "encrypted_folder_finish_team_unenrollment_details")?; + s.end() + } + EventDetails::EncryptedFolderInitTeamKeyRotationDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "encrypted_folder_init_team_key_rotation_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::EncryptedFolderInitTeamUnenrollmentDetails(_) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 1)?; + s.serialize_field(".tag", "encrypted_folder_init_team_unenrollment_details")?; + s.end() + } + EventDetails::EncryptedFolderRemoveBackupKeyDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "encrypted_folder_remove_backup_key_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::EncryptedFolderRotateTeamKeyDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "encrypted_folder_rotate_team_key_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::EncryptedFolderUnenrollClientDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "encrypted_folder_unenroll_client_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::TeamEncryptionKeyActivateKeyDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "team_encryption_key_activate_key_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::TeamEncryptionKeyCancelKeyDeletionDetails(_) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 1)?; + s.serialize_field(".tag", "team_encryption_key_cancel_key_deletion_details")?; + s.end() + } + EventDetails::TeamEncryptionKeyCreateKeyDetails(_) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 1)?; + s.serialize_field(".tag", "team_encryption_key_create_key_details")?; + s.end() + } + EventDetails::TeamEncryptionKeyDeactivateKeyDetails(_) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 1)?; + s.serialize_field(".tag", "team_encryption_key_deactivate_key_details")?; + s.end() + } + EventDetails::TeamEncryptionKeyDeleteKeyDetails(_) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 1)?; + s.serialize_field(".tag", "team_encryption_key_delete_key_details")?; + s.end() + } + EventDetails::TeamEncryptionKeyDisableKeyDetails(_) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 1)?; + s.serialize_field(".tag", "team_encryption_key_disable_key_details")?; + s.end() + } + EventDetails::TeamEncryptionKeyEnableKeyDetails(_) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 1)?; + s.serialize_field(".tag", "team_encryption_key_enable_key_details")?; + s.end() + } + EventDetails::TeamEncryptionKeyRotateKeyDetails(_) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 1)?; + s.serialize_field(".tag", "team_encryption_key_rotate_key_details")?; + s.end() + } + EventDetails::TeamEncryptionKeyScheduleKeyDeletionDetails(_) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 1)?; + s.serialize_field(".tag", "team_encryption_key_schedule_key_deletion_details")?; + s.end() + } + EventDetails::ApplyNamingConventionDetails(_) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 1)?; + s.serialize_field(".tag", "apply_naming_convention_details")?; + s.end() + } + EventDetails::CreateFolderDetails(_) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 1)?; + s.serialize_field(".tag", "create_folder_details")?; + s.end() + } + EventDetails::FileAddDetails(_) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 1)?; + s.serialize_field(".tag", "file_add_details")?; + s.end() + } + EventDetails::FileAddFromAutomationDetails(_) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 1)?; + s.serialize_field(".tag", "file_add_from_automation_details")?; + s.end() + } + EventDetails::FileCopyDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "file_copy_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::FileDeleteDetails(_) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 1)?; + s.serialize_field(".tag", "file_delete_details")?; + s.end() + } + EventDetails::FileDownloadDetails(_) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 1)?; + s.serialize_field(".tag", "file_download_details")?; + s.end() + } + EventDetails::FileEditDetails(_) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 1)?; + s.serialize_field(".tag", "file_edit_details")?; + s.end() + } + EventDetails::FileGetCopyReferenceDetails(_) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 1)?; + s.serialize_field(".tag", "file_get_copy_reference_details")?; + s.end() + } + EventDetails::FileLockingLockStatusChangedDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "file_locking_lock_status_changed_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::FileMoveDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "file_move_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::FilePermanentlyDeleteDetails(_) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 1)?; + s.serialize_field(".tag", "file_permanently_delete_details")?; + s.end() + } + EventDetails::FilePreviewDetails(_) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 1)?; + s.serialize_field(".tag", "file_preview_details")?; + s.end() + } + EventDetails::FileRenameDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "file_rename_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::FileRestoreDetails(_) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 1)?; + s.serialize_field(".tag", "file_restore_details")?; + s.end() + } + EventDetails::FileRevertDetails(_) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 1)?; + s.serialize_field(".tag", "file_revert_details")?; + s.end() + } + EventDetails::FileRollbackChangesDetails(_) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 1)?; + s.serialize_field(".tag", "file_rollback_changes_details")?; + s.end() + } + EventDetails::FileSaveCopyReferenceDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "file_save_copy_reference_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::FolderOverviewDescriptionChangedDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "folder_overview_description_changed_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::FolderOverviewItemPinnedDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "folder_overview_item_pinned_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::FolderOverviewItemUnpinnedDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "folder_overview_item_unpinned_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::ObjectLabelAddedDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "object_label_added_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::ObjectLabelRemovedDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "object_label_removed_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::ObjectLabelUpdatedValueDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "object_label_updated_value_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::OrganizeFolderWithTidyDetails(_) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 1)?; + s.serialize_field(".tag", "organize_folder_with_tidy_details")?; + s.end() + } + EventDetails::ReplayFileDeleteDetails(_) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 1)?; + s.serialize_field(".tag", "replay_file_delete_details")?; + s.end() + } + EventDetails::ReplayFileDownloadedDetails(_) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 1)?; + s.serialize_field(".tag", "replay_file_downloaded_details")?; + s.end() + } + EventDetails::ReplayTeamProjectCreatedDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "replay_team_project_created_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::RewindFolderDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "rewind_folder_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::UndoNamingConventionDetails(_) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 1)?; + s.serialize_field(".tag", "undo_naming_convention_details")?; + s.end() + } + EventDetails::UndoOrganizeFolderWithTidyDetails(_) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 1)?; + s.serialize_field(".tag", "undo_organize_folder_with_tidy_details")?; + s.end() + } + EventDetails::UserTagsAddedDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "user_tags_added_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::UserTagsRemovedDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "user_tags_removed_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::EmailIngestReceiveFileDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 6)?; + s.serialize_field(".tag", "email_ingest_receive_file_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::FileRequestAutoCloseDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 4)?; + s.serialize_field(".tag", "file_request_auto_close_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::FileRequestChangeDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 4)?; + s.serialize_field(".tag", "file_request_change_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::FileRequestCloseDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "file_request_close_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::FileRequestCreateDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "file_request_create_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::FileRequestDeleteDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "file_request_delete_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::FileRequestReceiveFileDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 6)?; + s.serialize_field(".tag", "file_request_receive_file_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::GroupAddExternalIdDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "group_add_external_id_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::GroupAddMemberDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "group_add_member_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::GroupChangeExternalIdDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "group_change_external_id_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::GroupChangeManagementTypeDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "group_change_management_type_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::GroupChangeMemberRoleDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "group_change_member_role_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::GroupCreateDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "group_create_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::GroupDeleteDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "group_delete_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::GroupDescriptionUpdatedDetails(_) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 1)?; + s.serialize_field(".tag", "group_description_updated_details")?; + s.end() + } + EventDetails::GroupExternalSharingSettingOverrideChangedDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "group_external_sharing_setting_override_changed_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::GroupJoinPolicyUpdatedDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "group_join_policy_updated_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::GroupMovedDetails(_) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 1)?; + s.serialize_field(".tag", "group_moved_details")?; + s.end() + } + EventDetails::GroupRemoveExternalIdDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "group_remove_external_id_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::GroupRemoveMemberDetails(_) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 1)?; + s.serialize_field(".tag", "group_remove_member_details")?; + s.end() + } + EventDetails::GroupRenameDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "group_rename_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::AccountLockOrUnlockedDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "account_lock_or_unlocked_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::EmmErrorDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "emm_error_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::GuestAdminSignedInViaTrustedTeamsDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "guest_admin_signed_in_via_trusted_teams_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::GuestAdminSignedOutViaTrustedTeamsDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "guest_admin_signed_out_via_trusted_teams_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::LoginFailDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 4)?; + s.serialize_field(".tag", "login_fail_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::LoginSuccessDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "login_success_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::LogoutDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "logout_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::ResellerSupportSessionEndDetails(_) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 1)?; + s.serialize_field(".tag", "reseller_support_session_end_details")?; + s.end() + } + EventDetails::ResellerSupportSessionStartDetails(_) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 1)?; + s.serialize_field(".tag", "reseller_support_session_start_details")?; + s.end() + } + EventDetails::SignInAsSessionEndDetails(_) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 1)?; + s.serialize_field(".tag", "sign_in_as_session_end_details")?; + s.end() + } + EventDetails::SignInAsSessionStartDetails(_) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 1)?; + s.serialize_field(".tag", "sign_in_as_session_start_details")?; + s.end() + } + EventDetails::SsoErrorDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "sso_error_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::AddonAssignedDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "addon_assigned_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::AddonRemovedDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "addon_removed_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::BackupAdminInvitationSentDetails(_) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 1)?; + s.serialize_field(".tag", "backup_admin_invitation_sent_details")?; + s.end() + } + EventDetails::BackupInvitationOpenedDetails(_) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 1)?; + s.serialize_field(".tag", "backup_invitation_opened_details")?; + s.end() + } + EventDetails::CreateTeamInviteLinkDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "create_team_invite_link_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::DeleteTeamInviteLinkDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "delete_team_invite_link_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::MemberAddExternalIdDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "member_add_external_id_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::MemberAddNameDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "member_add_name_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::MemberChangeAdminRoleDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "member_change_admin_role_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::MemberChangeEmailDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "member_change_email_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::MemberChangeExternalIdDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "member_change_external_id_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::MemberChangeMembershipTypeDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "member_change_membership_type_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::MemberChangeNameDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "member_change_name_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::MemberChangeResellerRoleDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "member_change_reseller_role_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::MemberChangeStatusDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 6)?; + s.serialize_field(".tag", "member_change_status_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::MemberDeleteManualContactsDetails(_) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 1)?; + s.serialize_field(".tag", "member_delete_manual_contacts_details")?; + s.end() + } + EventDetails::MemberDeleteProfilePhotoDetails(_) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 1)?; + s.serialize_field(".tag", "member_delete_profile_photo_details")?; + s.end() + } + EventDetails::MemberPermanentlyDeleteAccountContentsDetails(_) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 1)?; + s.serialize_field(".tag", "member_permanently_delete_account_contents_details")?; + s.end() + } + EventDetails::MemberRemoveExternalIdDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "member_remove_external_id_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::MemberSetProfilePhotoDetails(_) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 1)?; + s.serialize_field(".tag", "member_set_profile_photo_details")?; + s.end() + } + EventDetails::MemberSpaceLimitsAddCustomQuotaDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "member_space_limits_add_custom_quota_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::MemberSpaceLimitsChangeCustomQuotaDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "member_space_limits_change_custom_quota_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::MemberSpaceLimitsChangeStatusDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "member_space_limits_change_status_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::MemberSpaceLimitsRemoveCustomQuotaDetails(_) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 1)?; + s.serialize_field(".tag", "member_space_limits_remove_custom_quota_details")?; + s.end() + } + EventDetails::MemberSuggestDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "member_suggest_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::MemberTransferAccountContentsDetails(_) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 1)?; + s.serialize_field(".tag", "member_transfer_account_contents_details")?; + s.end() + } + EventDetails::PendingSecondaryEmailAddedDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "pending_secondary_email_added_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::ProductAssignedToMemberDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "product_assigned_to_member_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::ProductRemovedFromMemberDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "product_removed_from_member_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::SecondaryEmailDeletedDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "secondary_email_deleted_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::SecondaryEmailVerifiedDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "secondary_email_verified_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::SecondaryMailsPolicyChangedDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "secondary_mails_policy_changed_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::BinderAddPageDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 4)?; + s.serialize_field(".tag", "binder_add_page_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::BinderAddSectionDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 4)?; + s.serialize_field(".tag", "binder_add_section_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::BinderRemovePageDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 4)?; + s.serialize_field(".tag", "binder_remove_page_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::BinderRemoveSectionDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 4)?; + s.serialize_field(".tag", "binder_remove_section_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::BinderRenamePageDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 5)?; + s.serialize_field(".tag", "binder_rename_page_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::BinderRenameSectionDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 5)?; + s.serialize_field(".tag", "binder_rename_section_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::BinderReorderPageDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 4)?; + s.serialize_field(".tag", "binder_reorder_page_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::BinderReorderSectionDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 4)?; + s.serialize_field(".tag", "binder_reorder_section_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::PaperContentAddMemberDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "paper_content_add_member_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::PaperContentAddToFolderDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 4)?; + s.serialize_field(".tag", "paper_content_add_to_folder_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::PaperContentArchiveDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "paper_content_archive_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::PaperContentCreateDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "paper_content_create_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::PaperContentPermanentlyDeleteDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "paper_content_permanently_delete_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::PaperContentRemoveFromFolderDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 4)?; + s.serialize_field(".tag", "paper_content_remove_from_folder_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::PaperContentRemoveMemberDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "paper_content_remove_member_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::PaperContentRenameDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "paper_content_rename_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::PaperContentRestoreDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "paper_content_restore_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::PaperDocAddCommentDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "paper_doc_add_comment_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::PaperDocChangeMemberRoleDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "paper_doc_change_member_role_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::PaperDocChangeSharingPolicyDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 4)?; + s.serialize_field(".tag", "paper_doc_change_sharing_policy_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::PaperDocChangeSubscriptionDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 4)?; + s.serialize_field(".tag", "paper_doc_change_subscription_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::PaperDocDeletedDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "paper_doc_deleted_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::PaperDocDeleteCommentDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "paper_doc_delete_comment_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::PaperDocDownloadDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "paper_doc_download_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::PaperDocEditDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "paper_doc_edit_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::PaperDocEditCommentDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "paper_doc_edit_comment_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::PaperDocFollowedDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "paper_doc_followed_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::PaperDocMentionDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "paper_doc_mention_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::PaperDocOwnershipChangedDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 4)?; + s.serialize_field(".tag", "paper_doc_ownership_changed_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::PaperDocRequestAccessDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "paper_doc_request_access_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::PaperDocResolveCommentDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "paper_doc_resolve_comment_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::PaperDocRevertDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "paper_doc_revert_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::PaperDocSlackShareDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "paper_doc_slack_share_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::PaperDocTeamInviteDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "paper_doc_team_invite_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::PaperDocTrashedDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "paper_doc_trashed_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::PaperDocUnresolveCommentDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "paper_doc_unresolve_comment_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::PaperDocUntrashedDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "paper_doc_untrashed_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::PaperDocViewDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "paper_doc_view_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::PaperExternalViewAllowDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "paper_external_view_allow_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::PaperExternalViewDefaultTeamDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "paper_external_view_default_team_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::PaperExternalViewForbidDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "paper_external_view_forbid_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::PaperFolderChangeSubscriptionDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 4)?; + s.serialize_field(".tag", "paper_folder_change_subscription_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::PaperFolderDeletedDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "paper_folder_deleted_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::PaperFolderFollowedDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "paper_folder_followed_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::PaperFolderTeamInviteDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "paper_folder_team_invite_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::PaperPublishedLinkChangePermissionDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 4)?; + s.serialize_field(".tag", "paper_published_link_change_permission_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::PaperPublishedLinkCreateDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "paper_published_link_create_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::PaperPublishedLinkDisabledDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "paper_published_link_disabled_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::PaperPublishedLinkViewDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "paper_published_link_view_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::PasswordChangeDetails(_) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 1)?; + s.serialize_field(".tag", "password_change_details")?; + s.end() + } + EventDetails::PasswordResetDetails(_) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 1)?; + s.serialize_field(".tag", "password_reset_details")?; + s.end() + } + EventDetails::PasswordResetAllDetails(_) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 1)?; + s.serialize_field(".tag", "password_reset_all_details")?; + s.end() + } + EventDetails::ClassificationCreateReportDetails(_) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 1)?; + s.serialize_field(".tag", "classification_create_report_details")?; + s.end() + } + EventDetails::ClassificationCreateReportFailDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "classification_create_report_fail_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::EmmCreateExceptionsReportDetails(_) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 1)?; + s.serialize_field(".tag", "emm_create_exceptions_report_details")?; + s.end() + } + EventDetails::EmmCreateUsageReportDetails(_) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 1)?; + s.serialize_field(".tag", "emm_create_usage_report_details")?; + s.end() + } + EventDetails::ExportMembersReportDetails(_) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 1)?; + s.serialize_field(".tag", "export_members_report_details")?; + s.end() + } + EventDetails::ExportMembersReportFailDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "export_members_report_fail_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::ExternalSharingCreateReportDetails(_) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 1)?; + s.serialize_field(".tag", "external_sharing_create_report_details")?; + s.end() + } + EventDetails::ExternalSharingReportFailedDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "external_sharing_report_failed_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::MemberAccessDetailsCreateReportDetails(_) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 1)?; + s.serialize_field(".tag", "member_access_details_create_report_details")?; + s.end() + } + EventDetails::MemberAccessDetailsCreateReportFailedDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "member_access_details_create_report_failed_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::NoExpirationLinkGenCreateReportDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "no_expiration_link_gen_create_report_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::NoExpirationLinkGenReportFailedDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "no_expiration_link_gen_report_failed_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::NoPasswordLinkGenCreateReportDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "no_password_link_gen_create_report_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::NoPasswordLinkGenReportFailedDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "no_password_link_gen_report_failed_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::NoPasswordLinkViewCreateReportDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "no_password_link_view_create_report_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::NoPasswordLinkViewReportFailedDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "no_password_link_view_report_failed_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::OutdatedLinkViewCreateReportDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "outdated_link_view_create_report_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::OutdatedLinkViewReportFailedDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "outdated_link_view_report_failed_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::PaperAdminExportStartDetails(_) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 1)?; + s.serialize_field(".tag", "paper_admin_export_start_details")?; + s.end() + } + EventDetails::RansomwareAlertCreateReportDetails(_) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 1)?; + s.serialize_field(".tag", "ransomware_alert_create_report_details")?; + s.end() + } + EventDetails::RansomwareAlertCreateReportFailedDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "ransomware_alert_create_report_failed_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::SharedFoldersCreateReportDetails(_) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 1)?; + s.serialize_field(".tag", "shared_folders_create_report_details")?; + s.end() + } + EventDetails::SharedFoldersCreateReportFailedDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "shared_folders_create_report_failed_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::SmartSyncCreateAdminPrivilegeReportDetails(_) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 1)?; + s.serialize_field(".tag", "smart_sync_create_admin_privilege_report_details")?; + s.end() + } + EventDetails::TeamActivityCreateReportDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "team_activity_create_report_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::TeamActivityCreateReportFailDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "team_activity_create_report_fail_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::TeamFoldersCreateReportDetails(_) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 1)?; + s.serialize_field(".tag", "team_folders_create_report_details")?; + s.end() + } + EventDetails::TeamFoldersCreateReportFailedDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "team_folders_create_report_failed_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::TeamStorageCreateReportDetails(_) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 1)?; + s.serialize_field(".tag", "team_storage_create_report_details")?; + s.end() + } + EventDetails::TeamStorageCreateReportFailedDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "team_storage_create_report_failed_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::CollectionShareDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "collection_share_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::FileTransfersFileAddDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "file_transfers_file_add_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::FileTransfersTransferDeleteDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "file_transfers_transfer_delete_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::FileTransfersTransferDownloadDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "file_transfers_transfer_download_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::FileTransfersTransferSendDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "file_transfers_transfer_send_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::FileTransfersTransferViewDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "file_transfers_transfer_view_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::NoteAclInviteOnlyDetails(_) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 1)?; + s.serialize_field(".tag", "note_acl_invite_only_details")?; + s.end() + } + EventDetails::NoteAclLinkDetails(_) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 1)?; + s.serialize_field(".tag", "note_acl_link_details")?; + s.end() + } + EventDetails::NoteAclTeamLinkDetails(_) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 1)?; + s.serialize_field(".tag", "note_acl_team_link_details")?; + s.end() + } + EventDetails::NoteSharedDetails(_) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 1)?; + s.serialize_field(".tag", "note_shared_details")?; + s.end() + } + EventDetails::NoteShareReceiveDetails(_) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 1)?; + s.serialize_field(".tag", "note_share_receive_details")?; + s.end() + } + EventDetails::OpenNoteSharedDetails(_) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 1)?; + s.serialize_field(".tag", "open_note_shared_details")?; + s.end() + } + EventDetails::ReplayFileSharedLinkCreatedDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "replay_file_shared_link_created_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::ReplayFileSharedLinkModifiedDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "replay_file_shared_link_modified_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::ReplayProjectTeamAddDetails(_) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 1)?; + s.serialize_field(".tag", "replay_project_team_add_details")?; + s.end() + } + EventDetails::ReplayProjectTeamDeleteDetails(_) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 1)?; + s.serialize_field(".tag", "replay_project_team_delete_details")?; + s.end() + } + EventDetails::SendAndTrackFileAddedDetails(_) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 1)?; + s.serialize_field(".tag", "send_and_track_file_added_details")?; + s.end() + } + EventDetails::SendAndTrackFileRenamedDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "send_and_track_file_renamed_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::SendAndTrackFileUpdatedDetails(_) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 1)?; + s.serialize_field(".tag", "send_and_track_file_updated_details")?; + s.end() + } + EventDetails::SendAndTrackLinkCreatedDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "send_and_track_link_created_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::SendAndTrackLinkDeletedDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "send_and_track_link_deleted_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::SendAndTrackLinkUpdatedDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "send_and_track_link_updated_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::SendAndTrackLinkViewedDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 4)?; + s.serialize_field(".tag", "send_and_track_link_viewed_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::SendAndTrackRemovedFileAndAssociatedLinksDetails(_) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 1)?; + s.serialize_field(".tag", "send_and_track_removed_file_and_associated_links_details")?; + s.end() + } + EventDetails::SfAddGroupDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 5)?; + s.serialize_field(".tag", "sf_add_group_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::SfAllowNonMembersToViewSharedLinksDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 4)?; + s.serialize_field(".tag", "sf_allow_non_members_to_view_shared_links_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::SfExternalInviteWarnDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 5)?; + s.serialize_field(".tag", "sf_external_invite_warn_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::SfFbInviteDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 4)?; + s.serialize_field(".tag", "sf_fb_invite_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::SfFbInviteChangeRoleDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 5)?; + s.serialize_field(".tag", "sf_fb_invite_change_role_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::SfFbUninviteDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "sf_fb_uninvite_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::SfInviteGroupDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "sf_invite_group_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::SfTeamGrantAccessDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "sf_team_grant_access_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::SfTeamInviteDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 4)?; + s.serialize_field(".tag", "sf_team_invite_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::SfTeamInviteChangeRoleDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 5)?; + s.serialize_field(".tag", "sf_team_invite_change_role_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::SfTeamJoinDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "sf_team_join_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::SfTeamJoinFromOobLinkDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 5)?; + s.serialize_field(".tag", "sf_team_join_from_oob_link_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::SfTeamUninviteDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "sf_team_uninvite_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::SharedContentAddInviteesDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "shared_content_add_invitees_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::SharedContentAddLinkExpiryDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "shared_content_add_link_expiry_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::SharedContentAddLinkPasswordDetails(_) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 1)?; + s.serialize_field(".tag", "shared_content_add_link_password_details")?; + s.end() + } + EventDetails::SharedContentAddMemberDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "shared_content_add_member_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::SharedContentChangeDownloadsPolicyDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "shared_content_change_downloads_policy_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::SharedContentChangeInviteeRoleDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 4)?; + s.serialize_field(".tag", "shared_content_change_invitee_role_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::SharedContentChangeLinkAudienceDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "shared_content_change_link_audience_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::SharedContentChangeLinkExpiryDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "shared_content_change_link_expiry_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::SharedContentChangeLinkPasswordDetails(_) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 1)?; + s.serialize_field(".tag", "shared_content_change_link_password_details")?; + s.end() + } + EventDetails::SharedContentChangeMemberRoleDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "shared_content_change_member_role_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::SharedContentChangeViewerInfoPolicyDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "shared_content_change_viewer_info_policy_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::SharedContentClaimInvitationDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "shared_content_claim_invitation_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::SharedContentCopyDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 5)?; + s.serialize_field(".tag", "shared_content_copy_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::SharedContentDownloadDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 4)?; + s.serialize_field(".tag", "shared_content_download_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::SharedContentRelinquishMembershipDetails(_) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 1)?; + s.serialize_field(".tag", "shared_content_relinquish_membership_details")?; + s.end() + } + EventDetails::SharedContentRemoveInviteesDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "shared_content_remove_invitees_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::SharedContentRemoveLinkExpiryDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "shared_content_remove_link_expiry_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::SharedContentRemoveLinkPasswordDetails(_) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 1)?; + s.serialize_field(".tag", "shared_content_remove_link_password_details")?; + s.end() + } + EventDetails::SharedContentRemoveMemberDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "shared_content_remove_member_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::SharedContentRequestAccessDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "shared_content_request_access_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::SharedContentRestoreInviteesDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "shared_content_restore_invitees_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::SharedContentRestoreMemberDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "shared_content_restore_member_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::SharedContentUnshareDetails(_) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 1)?; + s.serialize_field(".tag", "shared_content_unshare_details")?; + s.end() + } + EventDetails::SharedContentViewDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 4)?; + s.serialize_field(".tag", "shared_content_view_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::SharedFolderChangeLinkPolicyDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "shared_folder_change_link_policy_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::SharedFolderChangeMembersInheritancePolicyDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "shared_folder_change_members_inheritance_policy_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::SharedFolderChangeMembersManagementPolicyDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "shared_folder_change_members_management_policy_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::SharedFolderChangeMembersPolicyDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "shared_folder_change_members_policy_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::SharedFolderCreateDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "shared_folder_create_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::SharedFolderDeclineInvitationDetails(_) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 1)?; + s.serialize_field(".tag", "shared_folder_decline_invitation_details")?; + s.end() + } + EventDetails::SharedFolderMountDetails(_) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 1)?; + s.serialize_field(".tag", "shared_folder_mount_details")?; + s.end() + } + EventDetails::SharedFolderNestDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 5)?; + s.serialize_field(".tag", "shared_folder_nest_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::SharedFolderTransferOwnershipDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "shared_folder_transfer_ownership_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::SharedFolderUnmountDetails(_) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 1)?; + s.serialize_field(".tag", "shared_folder_unmount_details")?; + s.end() + } + EventDetails::SharedLinkAddExpiryDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "shared_link_add_expiry_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::SharedLinkChangeExpiryDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 4)?; + s.serialize_field(".tag", "shared_link_change_expiry_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::SharedLinkChangeVisibilityDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 4)?; + s.serialize_field(".tag", "shared_link_change_visibility_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::SharedLinkCopyDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "shared_link_copy_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::SharedLinkCreateDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "shared_link_create_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::SharedLinkDisableDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "shared_link_disable_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::SharedLinkDownloadDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "shared_link_download_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::SharedLinkRemoveExpiryDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "shared_link_remove_expiry_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::SharedLinkRemoveVisitorDetails(_) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 1)?; + s.serialize_field(".tag", "shared_link_remove_visitor_details")?; + s.end() + } + EventDetails::SharedLinkSettingsAddExpirationDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 4)?; + s.serialize_field(".tag", "shared_link_settings_add_expiration_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::SharedLinkSettingsAddPasswordDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "shared_link_settings_add_password_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::SharedLinkSettingsAllowDownloadDisabledDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "shared_link_settings_allow_download_disabled_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::SharedLinkSettingsAllowDownloadEnabledDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "shared_link_settings_allow_download_enabled_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::SharedLinkSettingsChangeAudienceDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 5)?; + s.serialize_field(".tag", "shared_link_settings_change_audience_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::SharedLinkSettingsChangeExpirationDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 5)?; + s.serialize_field(".tag", "shared_link_settings_change_expiration_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::SharedLinkSettingsChangePasswordDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "shared_link_settings_change_password_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::SharedLinkSettingsRemoveExpirationDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 4)?; + s.serialize_field(".tag", "shared_link_settings_remove_expiration_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::SharedLinkSettingsRemovePasswordDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "shared_link_settings_remove_password_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::SharedLinkShareDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "shared_link_share_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::SharedLinkViewDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "shared_link_view_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::SharedNoteOpenedDetails(_) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 1)?; + s.serialize_field(".tag", "shared_note_opened_details")?; + s.end() + } + EventDetails::ShmodelDisableDownloadsDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "shmodel_disable_downloads_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::ShmodelEnableDownloadsDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "shmodel_enable_downloads_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::ShmodelGroupShareDetails(_) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 1)?; + s.serialize_field(".tag", "shmodel_group_share_details")?; + s.end() + } + EventDetails::ShowcaseAccessGrantedDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "showcase_access_granted_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::ShowcaseAddMemberDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "showcase_add_member_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::ShowcaseArchivedDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "showcase_archived_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::ShowcaseCreatedDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "showcase_created_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::ShowcaseDeleteCommentDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "showcase_delete_comment_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::ShowcaseEditedDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "showcase_edited_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::ShowcaseEditCommentDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "showcase_edit_comment_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::ShowcaseFileAddedDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "showcase_file_added_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::ShowcaseFileDownloadDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "showcase_file_download_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::ShowcaseFileRemovedDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "showcase_file_removed_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::ShowcaseFileViewDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "showcase_file_view_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::ShowcasePermanentlyDeletedDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "showcase_permanently_deleted_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::ShowcasePostCommentDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "showcase_post_comment_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::ShowcaseRemoveMemberDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "showcase_remove_member_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::ShowcaseRenamedDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "showcase_renamed_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::ShowcaseRequestAccessDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "showcase_request_access_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::ShowcaseResolveCommentDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "showcase_resolve_comment_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::ShowcaseRestoredDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "showcase_restored_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::ShowcaseTrashedDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "showcase_trashed_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::ShowcaseTrashedDeprecatedDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "showcase_trashed_deprecated_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::ShowcaseUnresolveCommentDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "showcase_unresolve_comment_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::ShowcaseUntrashedDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "showcase_untrashed_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::ShowcaseUntrashedDeprecatedDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "showcase_untrashed_deprecated_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::ShowcaseViewDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "showcase_view_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::SignSignatureRequestCanceledDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "sign_signature_request_canceled_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::SignSignatureRequestCompletedDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "sign_signature_request_completed_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::SignSignatureRequestDeclinedDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "sign_signature_request_declined_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::SignSignatureRequestOpenedDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "sign_signature_request_opened_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::SignSignatureRequestReminderSentDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "sign_signature_request_reminder_sent_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::SignSignatureRequestSentDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "sign_signature_request_sent_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::SignTemplateCreatedDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "sign_template_created_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::SignTemplateSharedDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "sign_template_shared_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::RiscSecurityEventDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 4)?; + s.serialize_field(".tag", "risc_security_event_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::SsoAddCertDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "sso_add_cert_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::SsoAddLoginUrlDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "sso_add_login_url_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::SsoAddLogoutUrlDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "sso_add_logout_url_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::SsoChangeCertDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "sso_change_cert_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::SsoChangeLoginUrlDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "sso_change_login_url_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::SsoChangeLogoutUrlDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "sso_change_logout_url_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::SsoChangeSamlIdentityModeDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "sso_change_saml_identity_mode_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::SsoRemoveCertDetails(_) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 1)?; + s.serialize_field(".tag", "sso_remove_cert_details")?; + s.end() + } + EventDetails::SsoRemoveLoginUrlDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "sso_remove_login_url_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::SsoRemoveLogoutUrlDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "sso_remove_logout_url_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::TeamFolderChangeStatusDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "team_folder_change_status_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::TeamFolderCreateDetails(_) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 1)?; + s.serialize_field(".tag", "team_folder_create_details")?; + s.end() + } + EventDetails::TeamFolderDowngradeDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "team_folder_downgrade_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::TeamFolderPermanentlyDeleteDetails(_) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 1)?; + s.serialize_field(".tag", "team_folder_permanently_delete_details")?; + s.end() + } + EventDetails::TeamFolderRenameDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "team_folder_rename_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::TeamSelectiveSyncSettingsChangedDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "team_selective_sync_settings_changed_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::AccountCaptureChangePolicyDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "account_capture_change_policy_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::AdminEmailRemindersChangedDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "admin_email_reminders_changed_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::AiThirdPartySharingDropboxBasePolicyChangedDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "ai_third_party_sharing_dropbox_base_policy_changed_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::AllowDownloadDisabledDetails(_) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 1)?; + s.serialize_field(".tag", "allow_download_disabled_details")?; + s.end() + } + EventDetails::AllowDownloadEnabledDetails(_) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 1)?; + s.serialize_field(".tag", "allow_download_enabled_details")?; + s.end() + } + EventDetails::AppleLoginChangePolicyDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "apple_login_change_policy_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::AppPermissionsChangedDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 5)?; + s.serialize_field(".tag", "app_permissions_changed_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::CameraUploadsPolicyChangedDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "camera_uploads_policy_changed_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::CaptureTeamSpacePolicyChangedDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "capture_team_space_policy_changed_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::CaptureTranscriptPolicyChangedDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "capture_transcript_policy_changed_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::ClassificationChangePolicyDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 4)?; + s.serialize_field(".tag", "classification_change_policy_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::ComputerBackupPolicyChangedDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "computer_backup_policy_changed_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::ContentAdministrationPolicyChangedDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "content_administration_policy_changed_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::ContentDeletionProtectionChangePolicyDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 5)?; + s.serialize_field(".tag", "content_deletion_protection_change_policy_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::DashExternalSharingPolicyChangedDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "dash_external_sharing_policy_changed_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::DataPlacementRestrictionChangePolicyDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "data_placement_restriction_change_policy_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::DataPlacementRestrictionSatisfyPolicyDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "data_placement_restriction_satisfy_policy_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::DeviceApprovalsAddExceptionDetails(_) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 1)?; + s.serialize_field(".tag", "device_approvals_add_exception_details")?; + s.end() + } + EventDetails::DeviceApprovalsChangeDesktopPolicyDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "device_approvals_change_desktop_policy_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::DeviceApprovalsChangeMobilePolicyDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "device_approvals_change_mobile_policy_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::DeviceApprovalsChangeOverageActionDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "device_approvals_change_overage_action_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::DeviceApprovalsChangeUnlinkActionDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "device_approvals_change_unlink_action_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::DeviceApprovalsRemoveExceptionDetails(_) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 1)?; + s.serialize_field(".tag", "device_approvals_remove_exception_details")?; + s.end() + } + EventDetails::DirectoryRestrictionsAddMembersDetails(_) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 1)?; + s.serialize_field(".tag", "directory_restrictions_add_members_details")?; + s.end() + } + EventDetails::DirectoryRestrictionsRemoveMembersDetails(_) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 1)?; + s.serialize_field(".tag", "directory_restrictions_remove_members_details")?; + s.end() + } + EventDetails::DropboxPasswordsPolicyChangedDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "dropbox_passwords_policy_changed_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::EmailIngestPolicyChangedDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "email_ingest_policy_changed_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::EmmAddExceptionDetails(_) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 1)?; + s.serialize_field(".tag", "emm_add_exception_details")?; + s.end() + } + EventDetails::EmmChangePolicyDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "emm_change_policy_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::EmmRemoveExceptionDetails(_) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 1)?; + s.serialize_field(".tag", "emm_remove_exception_details")?; + s.end() + } + EventDetails::ExtendedVersionHistoryChangePolicyDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "extended_version_history_change_policy_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::ExternalDriveBackupPolicyChangedDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "external_drive_backup_policy_changed_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::FileCommentsChangePolicyDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "file_comments_change_policy_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::FileLockingPolicyChangedDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "file_locking_policy_changed_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::FileProviderMigrationPolicyChangedDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "file_provider_migration_policy_changed_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::FileRequestsChangePolicyDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "file_requests_change_policy_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::FileRequestsEmailsEnabledDetails(_) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 1)?; + s.serialize_field(".tag", "file_requests_emails_enabled_details")?; + s.end() + } + EventDetails::FileRequestsEmailsRestrictedToTeamOnlyDetails(_) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 1)?; + s.serialize_field(".tag", "file_requests_emails_restricted_to_team_only_details")?; + s.end() + } + EventDetails::FileTransfersPolicyChangedDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "file_transfers_policy_changed_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::FlexibleFileNamesPolicyChangedDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "flexible_file_names_policy_changed_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::FolderLinkRestrictionPolicyChangedDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "folder_link_restriction_policy_changed_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::GoogleSsoChangePolicyDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "google_sso_change_policy_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::GroupUserManagementChangePolicyDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "group_user_management_change_policy_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::IntegrationPolicyChangedDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 4)?; + s.serialize_field(".tag", "integration_policy_changed_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::InviteAcceptanceEmailPolicyChangedDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "invite_acceptance_email_policy_changed_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::MemberRequestsChangePolicyDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "member_requests_change_policy_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::MemberSendInvitePolicyChangedDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "member_send_invite_policy_changed_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::MemberSpaceLimitsAddExceptionDetails(_) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 1)?; + s.serialize_field(".tag", "member_space_limits_add_exception_details")?; + s.end() + } + EventDetails::MemberSpaceLimitsChangeCapsTypePolicyDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "member_space_limits_change_caps_type_policy_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::MemberSpaceLimitsChangePolicyDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "member_space_limits_change_policy_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::MemberSpaceLimitsRemoveExceptionDetails(_) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 1)?; + s.serialize_field(".tag", "member_space_limits_remove_exception_details")?; + s.end() + } + EventDetails::MemberSuggestionsChangePolicyDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "member_suggestions_change_policy_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::MicrosoftLoginChangePolicyDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "microsoft_login_change_policy_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::MicrosoftOfficeAddinChangePolicyDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "microsoft_office_addin_change_policy_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::NetworkControlChangePolicyDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "network_control_change_policy_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::PaperChangeDeploymentPolicyDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "paper_change_deployment_policy_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::PaperChangeMemberLinkPolicyDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "paper_change_member_link_policy_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::PaperChangeMemberPolicyDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "paper_change_member_policy_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::PaperChangePolicyDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "paper_change_policy_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::PaperDefaultFolderPolicyChangedDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "paper_default_folder_policy_changed_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::PaperDesktopPolicyChangedDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "paper_desktop_policy_changed_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::PaperEnabledUsersGroupAdditionDetails(_) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 1)?; + s.serialize_field(".tag", "paper_enabled_users_group_addition_details")?; + s.end() + } + EventDetails::PaperEnabledUsersGroupRemovalDetails(_) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 1)?; + s.serialize_field(".tag", "paper_enabled_users_group_removal_details")?; + s.end() + } + EventDetails::PasskeyLoginPolicyChangedDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "passkey_login_policy_changed_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::PasswordStrengthRequirementsChangePolicyDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "password_strength_requirements_change_policy_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::PermanentDeleteChangePolicyDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "permanent_delete_change_policy_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::PreviewsAiPolicyChangedDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "previews_ai_policy_changed_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::ReplayAddingPeoplePolicyChangedDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "replay_adding_people_policy_changed_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::ReplaySharingPolicyChangedDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "replay_sharing_policy_changed_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::ResellerSupportChangePolicyDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "reseller_support_change_policy_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::RewindPolicyChangedDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "rewind_policy_changed_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::SendAndTrackPolicyChangedDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "send_and_track_policy_changed_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::SendExternalSharingPolicyChangedDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "send_external_sharing_policy_changed_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::SendForSignaturePolicyChangedDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "send_for_signature_policy_changed_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::SharedLinkDefaultPermissionsPolicyChangedDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "shared_link_default_permissions_policy_changed_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::SharingChangeFolderJoinPolicyDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "sharing_change_folder_join_policy_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::SharingChangeLinkAllowChangeExpirationPolicyDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "sharing_change_link_allow_change_expiration_policy_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::SharingChangeLinkDefaultExpirationPolicyDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "sharing_change_link_default_expiration_policy_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::SharingChangeLinkEnforcePasswordPolicyDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "sharing_change_link_enforce_password_policy_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::SharingChangeLinkPolicyDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "sharing_change_link_policy_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::SharingChangeMemberPolicyDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "sharing_change_member_policy_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::ShowcaseChangeDownloadPolicyDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "showcase_change_download_policy_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::ShowcaseChangeEnabledPolicyDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "showcase_change_enabled_policy_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::ShowcaseChangeExternalSharingPolicyDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "showcase_change_external_sharing_policy_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::SignExternalSharingPolicyChangedDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "sign_external_sharing_policy_changed_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::SignTemplateCreationPermissionChangedDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "sign_template_creation_permission_changed_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::SmarterSmartSyncPolicyChangedDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "smarter_smart_sync_policy_changed_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::SmartSyncChangePolicyDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "smart_sync_change_policy_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::SmartSyncNotOptOutDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "smart_sync_not_opt_out_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::SmartSyncOptOutDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "smart_sync_opt_out_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::SsoChangePolicyDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "sso_change_policy_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::StackCrossTeamAccessPolicyChangedDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "stack_cross_team_access_policy_changed_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::TeamBrandingPolicyChangedDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "team_branding_policy_changed_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::TeamExtensionsPolicyChangedDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "team_extensions_policy_changed_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::TeamMemberStorageRequestPolicyChangedDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "team_member_storage_request_policy_changed_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::TeamSelectiveSyncPolicyChangedDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "team_selective_sync_policy_changed_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::TeamSharingWhitelistSubjectsChangedDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "team_sharing_whitelist_subjects_changed_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::TfaAddExceptionDetails(_) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 1)?; + s.serialize_field(".tag", "tfa_add_exception_details")?; + s.end() + } + EventDetails::TfaChangePolicyDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "tfa_change_policy_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::TfaRemoveExceptionDetails(_) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 1)?; + s.serialize_field(".tag", "tfa_remove_exception_details")?; + s.end() + } + EventDetails::TopLevelContentPolicyChangedDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "top_level_content_policy_changed_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::TwoAccountChangePolicyDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "two_account_change_policy_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::ViewerInfoPolicyChangedDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "viewer_info_policy_changed_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::WatermarkingPolicyChangedDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "watermarking_policy_changed_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::WebSessionsChangeActiveSessionLimitDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "web_sessions_change_active_session_limit_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::WebSessionsChangeFixedLengthPolicyDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "web_sessions_change_fixed_length_policy_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::WebSessionsChangeIdleLengthPolicyDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "web_sessions_change_idle_length_policy_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::DataResidencyMigrationRequestSuccessfulDetails(_) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 1)?; + s.serialize_field(".tag", "data_residency_migration_request_successful_details")?; + s.end() + } + EventDetails::DataResidencyMigrationRequestUnsuccessfulDetails(_) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 1)?; + s.serialize_field(".tag", "data_residency_migration_request_unsuccessful_details")?; + s.end() + } + EventDetails::TeamMergeFromDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "team_merge_from_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::TeamMergeToDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "team_merge_to_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::TeamProfileAddBackgroundDetails(_) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 1)?; + s.serialize_field(".tag", "team_profile_add_background_details")?; + s.end() + } + EventDetails::TeamProfileAddLogoDetails(_) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 1)?; + s.serialize_field(".tag", "team_profile_add_logo_details")?; + s.end() + } + EventDetails::TeamProfileChangeBackgroundDetails(_) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 1)?; + s.serialize_field(".tag", "team_profile_change_background_details")?; + s.end() + } + EventDetails::TeamProfileChangeDefaultLanguageDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "team_profile_change_default_language_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::TeamProfileChangeLogoDetails(_) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 1)?; + s.serialize_field(".tag", "team_profile_change_logo_details")?; + s.end() + } + EventDetails::TeamProfileChangeNameDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "team_profile_change_name_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::TeamProfileRemoveBackgroundDetails(_) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 1)?; + s.serialize_field(".tag", "team_profile_remove_background_details")?; + s.end() + } + EventDetails::TeamProfileRemoveLogoDetails(_) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 1)?; + s.serialize_field(".tag", "team_profile_remove_logo_details")?; + s.end() + } + EventDetails::PasskeyAddDetails(_) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 1)?; + s.serialize_field(".tag", "passkey_add_details")?; + s.end() + } + EventDetails::PasskeyRemoveDetails(_) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 1)?; + s.serialize_field(".tag", "passkey_remove_details")?; + s.end() + } + EventDetails::TfaAddBackupPhoneDetails(_) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 1)?; + s.serialize_field(".tag", "tfa_add_backup_phone_details")?; + s.end() + } + EventDetails::TfaAddSecurityKeyDetails(_) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 1)?; + s.serialize_field(".tag", "tfa_add_security_key_details")?; + s.end() + } + EventDetails::TfaChangeBackupPhoneDetails(_) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 1)?; + s.serialize_field(".tag", "tfa_change_backup_phone_details")?; + s.end() + } + EventDetails::TfaChangeStatusDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 4)?; + s.serialize_field(".tag", "tfa_change_status_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::TfaRemoveBackupPhoneDetails(_) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 1)?; + s.serialize_field(".tag", "tfa_remove_backup_phone_details")?; + s.end() + } + EventDetails::TfaRemoveSecurityKeyDetails(_) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 1)?; + s.serialize_field(".tag", "tfa_remove_security_key_details")?; + s.end() + } + EventDetails::TfaResetDetails(_) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 1)?; + s.serialize_field(".tag", "tfa_reset_details")?; + s.end() + } + EventDetails::ChangedEnterpriseAdminRoleDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 4)?; + s.serialize_field(".tag", "changed_enterprise_admin_role_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::ChangedEnterpriseConnectedTeamStatusDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 5)?; + s.serialize_field(".tag", "changed_enterprise_connected_team_status_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::EndedEnterpriseAdminSessionDetails(_) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 1)?; + s.serialize_field(".tag", "ended_enterprise_admin_session_details")?; + s.end() + } + EventDetails::EndedEnterpriseAdminSessionDeprecatedDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "ended_enterprise_admin_session_deprecated_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::EnterpriseSettingsLockingDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 5)?; + s.serialize_field(".tag", "enterprise_settings_locking_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::GuestAdminChangeStatusDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 7)?; + s.serialize_field(".tag", "guest_admin_change_status_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::StartedEnterpriseAdminSessionDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "started_enterprise_admin_session_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::TeamMergeRequestAcceptedDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "team_merge_request_accepted_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::TeamMergeRequestAcceptedShownToPrimaryTeamDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "team_merge_request_accepted_shown_to_primary_team_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::TeamMergeRequestAcceptedShownToSecondaryTeamDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "team_merge_request_accepted_shown_to_secondary_team_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::TeamMergeRequestAutoCanceledDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "team_merge_request_auto_canceled_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::TeamMergeRequestCanceledDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "team_merge_request_canceled_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::TeamMergeRequestCanceledShownToPrimaryTeamDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "team_merge_request_canceled_shown_to_primary_team_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::TeamMergeRequestCanceledShownToSecondaryTeamDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "team_merge_request_canceled_shown_to_secondary_team_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::TeamMergeRequestExpiredDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "team_merge_request_expired_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::TeamMergeRequestExpiredShownToPrimaryTeamDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "team_merge_request_expired_shown_to_primary_team_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::TeamMergeRequestExpiredShownToSecondaryTeamDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "team_merge_request_expired_shown_to_secondary_team_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::TeamMergeRequestRejectedShownToPrimaryTeamDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "team_merge_request_rejected_shown_to_primary_team_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::TeamMergeRequestRejectedShownToSecondaryTeamDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "team_merge_request_rejected_shown_to_secondary_team_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::TeamMergeRequestReminderDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "team_merge_request_reminder_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::TeamMergeRequestReminderShownToPrimaryTeamDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "team_merge_request_reminder_shown_to_primary_team_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::TeamMergeRequestReminderShownToSecondaryTeamDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "team_merge_request_reminder_shown_to_secondary_team_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::TeamMergeRequestRevokedDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "team_merge_request_revoked_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::TeamMergeRequestSentShownToPrimaryTeamDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 3)?; + s.serialize_field(".tag", "team_merge_request_sent_shown_to_primary_team_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::TeamMergeRequestSentShownToSecondaryTeamDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "team_merge_request_sent_shown_to_secondary_team_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::MissingDetails(x) => { + // struct + let mut s = serializer.serialize_struct("EventDetails", 2)?; + s.serialize_field(".tag", "missing_details")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventDetails::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) + } + } +} + +/// The type of the event with description. +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // variants may be added in the future +pub enum EventType { + /// (admin_alerting) Changed an alert state + AdminAlertingAlertStateChanged(AdminAlertingAlertStateChangedType), + /// (admin_alerting) Changed an alert setting + AdminAlertingChangedAlertConfig(AdminAlertingChangedAlertConfigType), + /// (admin_alerting) Triggered security alert + AdminAlertingTriggeredAlert(AdminAlertingTriggeredAlertType), + /// (admin_alerting) Completed ransomware restore process + RansomwareRestoreProcessCompleted(RansomwareRestoreProcessCompletedType), + /// (admin_alerting) Started ransomware restore process + RansomwareRestoreProcessStarted(RansomwareRestoreProcessStartedType), + /// (apps) Failed to connect app for member + AppBlockedByPermissions(AppBlockedByPermissionsType), + /// (apps) Linked app for team + AppLinkTeam(AppLinkTeamType), + /// (apps) Linked app for member + AppLinkUser(AppLinkUserType), + /// (apps) Unlinked app for team + AppUnlinkTeam(AppUnlinkTeamType), + /// (apps) Unlinked app for member + AppUnlinkUser(AppUnlinkUserType), + /// (apps) Connected integration for member + IntegrationConnected(IntegrationConnectedType), + /// (apps) Disconnected integration for member + IntegrationDisconnected(IntegrationDisconnectedType), + /// (comments) Added file comment + FileAddComment(FileAddCommentType), + /// (comments) Subscribed to or unsubscribed from comment notifications for file + FileChangeCommentSubscription(FileChangeCommentSubscriptionType), + /// (comments) Deleted file comment + FileDeleteComment(FileDeleteCommentType), + /// (comments) Edited file comment + FileEditComment(FileEditCommentType), + /// (comments) Liked file comment (deprecated, no longer logged) + FileLikeComment(FileLikeCommentType), + /// (comments) Resolved file comment + FileResolveComment(FileResolveCommentType), + /// (comments) Unliked file comment (deprecated, no longer logged) + FileUnlikeComment(FileUnlikeCommentType), + /// (comments) Unresolved file comment + FileUnresolveComment(FileUnresolveCommentType), + /// (dash) Added a comment to a stack + DashAddedCommentToStack(DashAddedCommentToStackType), + /// (dash) Connected to a user connector + DashAddedConnector(DashAddedConnectorType), + /// (dash) Added a link to a stack + DashAddedLinkToStack(DashAddedLinkToStackType), + /// (dash) Admin added an email domain to the team allowlist + DashAddedTeamEmailDomainAllowlist(DashAddedTeamEmailDomainAllowlistType), + /// (dash) Admin added an admin connector + DashAdminAddedOrgWideConnector(DashAdminAddedOrgWideConnectorType), + /// (dash) Admin disabled a user connector + DashAdminDisabledConnector(DashAdminDisabledConnectorType), + /// (dash) Admin enabled a user connector + DashAdminEnabledConnector(DashAdminEnabledConnectorType), + /// (dash) Admin removed an admin connector + DashAdminRemovedOrgWideConnector(DashAdminRemovedOrgWideConnectorType), + /// (dash) Archived a stack + DashArchivedStack(DashArchivedStackType), + /// (dash) Changed the audience of a shared link to a stack + DashChangedAudienceOfSharedLinkToStack(DashChangedAudienceOfSharedLinkToStackType), + /// (dash) Cloned stack + DashClonedStack(DashClonedStackType), + /// (dash) Called a tool on a connector + DashConnectorToolsCall(DashConnectorToolsCallType), + /// (dash) Created a stack + DashCreatedStack(DashCreatedStackType), + /// (dash) Deleted a comment from a stack + DashDeletedCommentFromStack(DashDeletedCommentFromStackType), + /// (dash) Deleted a stack + DashDeletedStack(DashDeletedStackType), + /// (dash) Edited a comment in a stack + DashEditedCommentInStack(DashEditedCommentInStackType), + /// (dash) External user opened a stack + DashExternalUserOpenedStack(DashExternalUserOpenedStackType), + /// (dash) Opened the desktop app for the first time + DashFirstLaunchedDesktop(DashFirstLaunchedDesktopType), + /// (dash) Opened the extension for the first time + DashFirstLaunchedExtension(DashFirstLaunchedExtensionType), + /// (dash) Opened the web Start Page for the first time + DashFirstLaunchedWebStartPage(DashFirstLaunchedWebStartPageType), + /// (dash) Checked access permissions to a stack + DashOpenedSharedLinkToStack(DashOpenedSharedLinkToStackType), + /// (dash) Opened a stack + DashOpenedStack(DashOpenedStackType), + /// (dash) Changed the preview opt-out status + DashPreviewOptOutStatusChanged(DashPreviewOptOutStatusChangedType), + /// (dash) Disconnected a user connector + DashRemovedConnector(DashRemovedConnectorType), + /// (dash) Removed a link from a stack + DashRemovedLinkFromStack(DashRemovedLinkFromStackType), + /// (dash) Removed a shared link to a stack + DashRemovedSharedLinkToStack(DashRemovedSharedLinkToStackType), + /// (dash) Admin removed an email domain from the team allowlist + DashRemovedTeamEmailDomainAllowlist(DashRemovedTeamEmailDomainAllowlistType), + /// (dash) Renamed a stack + DashRenamedStack(DashRenamedStackType), + /// (dash) Shared a link to a stack + DashSharedLinkToStack(DashSharedLinkToStackType), + /// (dash) Unarchived a stack + DashUnarchivedStack(DashUnarchivedStackType), + /// (dash) Member viewed a company stack + DashViewedCompanyStack(DashViewedCompanyStackType), + /// (dash) Admin viewed the external AI activity report + DashViewedExternalAiActivityReport(DashViewedExternalAiActivityReportType), + /// (data_governance) Added folders to policy + GovernancePolicyAddFolders(GovernancePolicyAddFoldersType), + /// (data_governance) Couldn't add a folder to a policy + GovernancePolicyAddFolderFailed(GovernancePolicyAddFolderFailedType), + /// (data_governance) Content disposed + GovernancePolicyContentDisposed(GovernancePolicyContentDisposedType), + /// (data_governance) Activated a new policy + GovernancePolicyCreate(GovernancePolicyCreateType), /// (data_governance) Deleted a policy GovernancePolicyDelete(GovernancePolicyDeleteType), /// (data_governance) Edited policy @@ -25735,10 +37120,34 @@ pub enum EventType { DomainVerificationRemoveDomain(DomainVerificationRemoveDomainType), /// (domains) Enabled domain invites (deprecated, no longer logged) EnabledDomainInvites(EnabledDomainInvitesType), + /// (encryption) Canceled team key rotation + EncryptedFolderCancelTeamKeyRotation(EncryptedFolderCancelTeamKeyRotationType), + /// (encryption) Added recovery key + EncryptedFolderEnrollBackupKey(EncryptedFolderEnrollBackupKeyType), + /// (encryption) Enrolled device + EncryptedFolderEnrollClient(EncryptedFolderEnrollClientType), + /// (encryption) Activated team folder encryption + EncryptedFolderEnrollTeam(EncryptedFolderEnrollTeamType), + /// (encryption) Deactivated team folder encryption + EncryptedFolderFinishTeamUnenrollment(EncryptedFolderFinishTeamUnenrollmentType), + /// (encryption) Initiated team key rotation + EncryptedFolderInitTeamKeyRotation(EncryptedFolderInitTeamKeyRotationType), + /// (encryption) Initiated deactivation of team folder encryption + EncryptedFolderInitTeamUnenrollment(EncryptedFolderInitTeamUnenrollmentType), + /// (encryption) Removed recovery key + EncryptedFolderRemoveBackupKey(EncryptedFolderRemoveBackupKeyType), + /// (encryption) Rotated team key + EncryptedFolderRotateTeamKey(EncryptedFolderRotateTeamKeyType), + /// (encryption) Unenrolled device + EncryptedFolderUnenrollClient(EncryptedFolderUnenrollClientType), + /// (encryption) Activated team encryption key + TeamEncryptionKeyActivateKey(TeamEncryptionKeyActivateKeyType), /// (encryption) Canceled team encryption key deletion TeamEncryptionKeyCancelKeyDeletion(TeamEncryptionKeyCancelKeyDeletionType), /// (encryption) Created team encryption key TeamEncryptionKeyCreateKey(TeamEncryptionKeyCreateKeyType), + /// (encryption) Deactivated team encryption key + TeamEncryptionKeyDeactivateKey(TeamEncryptionKeyDeactivateKeyType), /// (encryption) Deleted team encryption key TeamEncryptionKeyDeleteKey(TeamEncryptionKeyDeleteKeyType), /// (encryption) Disabled team encryption key @@ -25801,6 +37210,10 @@ pub enum EventType { OrganizeFolderWithTidy(OrganizeFolderWithTidyType), /// (file_operations) Deleted files in Replay ReplayFileDelete(ReplayFileDeleteType), + /// (file_operations) Downloaded files in Replay + ReplayFileDownloaded(ReplayFileDownloadedType), + /// (file_operations) Created a team project in Replay + ReplayTeamProjectCreated(ReplayTeamProjectCreatedType), /// (file_operations) Rewound a folder RewindFolder(RewindFolderType), /// (file_operations) Reverted naming convention @@ -25813,6 +37226,8 @@ pub enum EventType { UserTagsRemoved(UserTagsRemovedType), /// (file_requests) Received files via Email to Dropbox EmailIngestReceiveFile(EmailIngestReceiveFileType), + /// (file_requests) Auto closed file request + FileRequestAutoClose(FileRequestAutoCloseType), /// (file_requests) Changed file request FileRequestChange(FileRequestChangeType), /// (file_requests) Closed file request @@ -25839,6 +37254,8 @@ pub enum EventType { GroupDelete(GroupDeleteType), /// (groups) Updated group (deprecated, no longer logged) GroupDescriptionUpdated(GroupDescriptionUpdatedType), + /// (groups) Changed group's external sharing setting + GroupExternalSharingSettingOverrideChanged(GroupExternalSharingSettingOverrideChangedType), /// (groups) Updated group join policy (deprecated, no longer logged) GroupJoinPolicyUpdated(GroupJoinPolicyUpdatedType), /// (groups) Moved group (deprecated, no longer logged) @@ -25873,6 +37290,10 @@ pub enum EventType { SignInAsSessionStart(SignInAsSessionStartType), /// (logins) Failed to sign in via SSO (deprecated, replaced by 'Failed to sign in') SsoError(SsoErrorType), + /// (members) Add-on Assigned + AddonAssigned(AddonAssignedType), + /// (members) Add-on Removed + AddonRemoved(AddonRemovedType), /// (members) Invited members to activate Backup BackupAdminInvitationSent(BackupAdminInvitationSentType), /// (members) Opened Backup invite @@ -25923,6 +37344,10 @@ pub enum EventType { MemberTransferAccountContents(MemberTransferAccountContentsType), /// (members) Added pending secondary email PendingSecondaryEmailAdded(PendingSecondaryEmailAddedType), + /// (members) Product assigned to team member + ProductAssignedToMember(ProductAssignedToMemberType), + /// (members) Product removed from team member + ProductRemovedFromMember(ProductRemovedFromMemberType), /// (members) Deleted secondary email SecondaryEmailDeleted(SecondaryEmailDeletedType), /// (members) Verified secondary email @@ -26050,6 +37475,10 @@ pub enum EventType { ExternalSharingCreateReport(ExternalSharingCreateReportType), /// (reports) Couldn't create External sharing report ExternalSharingReportFailed(ExternalSharingReportFailedType), + /// (reports) Created member access report + MemberAccessDetailsCreateReport(MemberAccessDetailsCreateReportType), + /// (reports) Couldn't generate member access report + MemberAccessDetailsCreateReportFailed(MemberAccessDetailsCreateReportFailedType), /// (reports) Report created: Links created with no expiration NoExpirationLinkGenCreateReport(NoExpirationLinkGenCreateReportType), /// (reports) Couldn't create report: Links created with no expiration @@ -26072,12 +37501,24 @@ pub enum EventType { RansomwareAlertCreateReport(RansomwareAlertCreateReportType), /// (reports) Couldn't generate ransomware report RansomwareAlertCreateReportFailed(RansomwareAlertCreateReportFailedType), + /// (reports) Created shared folders report + SharedFoldersCreateReport(SharedFoldersCreateReportType), + /// (reports) Couldn't generate shared folders report + SharedFoldersCreateReportFailed(SharedFoldersCreateReportFailedType), /// (reports) Created Smart Sync non-admin devices report SmartSyncCreateAdminPrivilegeReport(SmartSyncCreateAdminPrivilegeReportType), /// (reports) Created team activity report TeamActivityCreateReport(TeamActivityCreateReportType), /// (reports) Couldn't generate team activity report TeamActivityCreateReportFail(TeamActivityCreateReportFailType), + /// (reports) Created team folders report + TeamFoldersCreateReport(TeamFoldersCreateReportType), + /// (reports) Couldn't generate team folders report + TeamFoldersCreateReportFailed(TeamFoldersCreateReportFailedType), + /// (reports) Created team storage report + TeamStorageCreateReport(TeamStorageCreateReportType), + /// (reports) Couldn't generate team storage report + TeamStorageCreateReportFailed(TeamStorageCreateReportFailedType), /// (sharing) Shared album CollectionShare(CollectionShareType), /// (sharing) Transfer files added @@ -26104,12 +37545,28 @@ pub enum EventType { OpenNoteShared(OpenNoteSharedType), /// (sharing) Created shared link in Replay ReplayFileSharedLinkCreated(ReplayFileSharedLinkCreatedType), - /// (sharing) Modified shared link in Replay + /// (sharing) Changed shared link in Replay ReplayFileSharedLinkModified(ReplayFileSharedLinkModifiedType), /// (sharing) Added member to Replay Project ReplayProjectTeamAdd(ReplayProjectTeamAddType), /// (sharing) Removed member from Replay Project ReplayProjectTeamDelete(ReplayProjectTeamDeleteType), + /// (sharing) File added to Send and Track + SendAndTrackFileAdded(SendAndTrackFileAddedType), + /// (sharing) File renamed in Send and Track + SendAndTrackFileRenamed(SendAndTrackFileRenamedType), + /// (sharing) File updated in Send and Track + SendAndTrackFileUpdated(SendAndTrackFileUpdatedType), + /// (sharing) Link created in Send and Track + SendAndTrackLinkCreated(SendAndTrackLinkCreatedType), + /// (sharing) Link deleted in Send and Track + SendAndTrackLinkDeleted(SendAndTrackLinkDeletedType), + /// (sharing) Send and Track Link Updated + SendAndTrackLinkUpdated(SendAndTrackLinkUpdatedType), + /// (sharing) Send and Track Link Visited + SendAndTrackLinkViewed(SendAndTrackLinkViewedType), + /// (sharing) Send and Track file and associated links deleted + SendAndTrackRemovedFileAndAssociatedLinks(SendAndTrackRemovedFileAndAssociatedLinksType), /// (sharing) Added team to shared folder (deprecated, no longer logged) SfAddGroup(SfAddGroupType), /// (sharing) Allowed non-collaborators to view links to files in shared folder (deprecated, no @@ -26226,6 +37683,8 @@ pub enum EventType { SharedLinkDownload(SharedLinkDownloadType), /// (sharing) Removed shared link expiration date SharedLinkRemoveExpiry(SharedLinkRemoveExpiryType), + /// (sharing) Removed link visitor + SharedLinkRemoveVisitor(SharedLinkRemoveVisitorType), /// (sharing) Added an expiration date to the shared link SharedLinkSettingsAddExpiration(SharedLinkSettingsAddExpirationType), /// (sharing) Added a password to the shared link @@ -26304,6 +37763,24 @@ pub enum EventType { ShowcaseUntrashedDeprecated(ShowcaseUntrashedDeprecatedType), /// (showcase) Viewed showcase ShowcaseView(ShowcaseViewType), + /// (signatures) Canceled signature request + SignSignatureRequestCanceled(SignSignatureRequestCanceledType), + /// (signatures) Completed signature request + SignSignatureRequestCompleted(SignSignatureRequestCompletedType), + /// (signatures) Declined signature request + SignSignatureRequestDeclined(SignSignatureRequestDeclinedType), + /// (signatures) Opened signature request + SignSignatureRequestOpened(SignSignatureRequestOpenedType), + /// (signatures) Sent signature request reminder + SignSignatureRequestReminderSent(SignSignatureRequestReminderSentType), + /// (signatures) Sent signature request + SignSignatureRequestSent(SignSignatureRequestSentType), + /// (signatures) Created template + SignTemplateCreated(SignTemplateCreatedType), + /// (signatures) Shared template + SignTemplateShared(SignTemplateSharedType), + /// (sso) RISC security event received from external provider + RiscSecurityEvent(RiscSecurityEventType), /// (sso) Added X.509 certificate for SSO SsoAddCert(SsoAddCertType), /// (sso) Added sign-in URL for SSO @@ -26340,14 +37817,20 @@ pub enum EventType { AccountCaptureChangePolicy(AccountCaptureChangePolicyType), /// (team_policies) Changed admin reminder settings for requests to join the team AdminEmailRemindersChanged(AdminEmailRemindersChangedType), + /// (team_policies) Changed AI third party sharing policy for team + AiThirdPartySharingDropboxBasePolicyChanged(AiThirdPartySharingDropboxBasePolicyChangedType), /// (team_policies) Disabled downloads (deprecated, no longer logged) AllowDownloadDisabled(AllowDownloadDisabledType), /// (team_policies) Enabled downloads (deprecated, no longer logged) AllowDownloadEnabled(AllowDownloadEnabledType), + /// (team_policies) Enabled/disabled Apple login for team + AppleLoginChangePolicy(AppleLoginChangePolicyType), /// (team_policies) Changed app permissions AppPermissionsChanged(AppPermissionsChangedType), /// (team_policies) Changed camera uploads setting for team CameraUploadsPolicyChanged(CameraUploadsPolicyChangedType), + /// (team_policies) Changed Capture team space policy for team + CaptureTeamSpacePolicyChanged(CaptureTeamSpacePolicyChangedType), /// (team_policies) Changed Capture transcription policy for team CaptureTranscriptPolicyChanged(CaptureTranscriptPolicyChangedType), /// (team_policies) Changed classification policy for team @@ -26356,6 +37839,10 @@ pub enum EventType { ComputerBackupPolicyChanged(ComputerBackupPolicyChangedType), /// (team_policies) Changed content management setting ContentAdministrationPolicyChanged(ContentAdministrationPolicyChangedType), + /// (team_policies) Changed content deletion protection policy for team + ContentDeletionProtectionChangePolicy(ContentDeletionProtectionChangePolicyType), + /// (team_policies) Changed Dash external sharing policy for team + DashExternalSharingPolicyChanged(DashExternalSharingPolicyChangedType), /// (team_policies) Set restrictions on data center locations where team data resides DataPlacementRestrictionChangePolicy(DataPlacementRestrictionChangePolicyType), /// (team_policies) Completed restrictions on data center locations where team data resides @@ -26406,6 +37893,8 @@ pub enum EventType { FileRequestsEmailsRestrictedToTeamOnly(FileRequestsEmailsRestrictedToTeamOnlyType), /// (team_policies) Changed file transfers policy for team FileTransfersPolicyChanged(FileTransfersPolicyChangedType), + /// (team_policies) Changed flexible file names policy for team + FlexibleFileNamesPolicyChanged(FlexibleFileNamesPolicyChangedType), /// (team_policies) Changed folder link restrictions policy for team FolderLinkRestrictionPolicyChanged(FolderLinkRestrictionPolicyChangedType), /// (team_policies) Enabled/disabled Google single sign-on for team @@ -26430,6 +37919,8 @@ pub enum EventType { MemberSpaceLimitsRemoveException(MemberSpaceLimitsRemoveExceptionType), /// (team_policies) Enabled/disabled option for team members to suggest people to add to team MemberSuggestionsChangePolicy(MemberSuggestionsChangePolicyType), + /// (team_policies) Enabled/disabled Microsoft login for team + MicrosoftLoginChangePolicy(MicrosoftLoginChangePolicyType), /// (team_policies) Enabled/disabled Microsoft Office add-in MicrosoftOfficeAddinChangePolicy(MicrosoftOfficeAddinChangePolicyType), /// (team_policies) Enabled/disabled network control @@ -26453,16 +37944,30 @@ pub enum EventType { PaperEnabledUsersGroupAddition(PaperEnabledUsersGroupAdditionType), /// (team_policies) Removed users from Paper-enabled users list PaperEnabledUsersGroupRemoval(PaperEnabledUsersGroupRemovalType), + /// (team_policies) Changed passkey login policy for team + PasskeyLoginPolicyChanged(PasskeyLoginPolicyChangedType), /// (team_policies) Changed team password strength requirements PasswordStrengthRequirementsChangePolicy(PasswordStrengthRequirementsChangePolicyType), /// (team_policies) Enabled/disabled ability of team members to permanently delete content PermanentDeleteChangePolicy(PermanentDeleteChangePolicyType), + /// (team_policies) Changed Dropbox AI policy for team + PreviewsAiPolicyChanged(PreviewsAiPolicyChangedType), + /// (team_policies) Changed the policy for adding people to Replay content + ReplayAddingPeoplePolicyChanged(ReplayAddingPeoplePolicyChangedType), + /// (team_policies) Changed the policy for sharing Replay content + ReplaySharingPolicyChanged(ReplaySharingPolicyChangedType), /// (team_policies) Enabled/disabled reseller support ResellerSupportChangePolicy(ResellerSupportChangePolicyType), /// (team_policies) Changed Rewind policy for team RewindPolicyChanged(RewindPolicyChangedType), + /// (team_policies) Changed “Send and track” policy for team + SendAndTrackPolicyChanged(SendAndTrackPolicyChangedType), + /// (team_policies) Changed “Send and track” external sharing policy for team + SendExternalSharingPolicyChanged(SendExternalSharingPolicyChangedType), /// (team_policies) Changed send for signature policy for team SendForSignaturePolicyChanged(SendForSignaturePolicyChangedType), + /// (team_policies) Changed shared link default permissions policy for team + SharedLinkDefaultPermissionsPolicyChanged(SharedLinkDefaultPermissionsPolicyChangedType), /// (team_policies) Changed whether team members can join shared folders owned outside team SharingChangeFolderJoinPolicy(SharingChangeFolderJoinPolicyType), /// (team_policies) Changed the allow remove or change expiration policy for the links shared @@ -26483,6 +37988,10 @@ pub enum EventType { ShowcaseChangeEnabledPolicy(ShowcaseChangeEnabledPolicyType), /// (team_policies) Enabled/disabled sharing Dropbox Showcase externally for team ShowcaseChangeExternalSharingPolicy(ShowcaseChangeExternalSharingPolicyType), + /// (team_policies) Changed Signatures external sharing policy for team + SignExternalSharingPolicyChanged(SignExternalSharingPolicyChangedType), + /// (team_policies) Changed template creation permission + SignTemplateCreationPermissionChanged(SignTemplateCreationPermissionChangedType), /// (team_policies) Changed automatic Smart Sync setting for team SmarterSmartSyncPolicyChanged(SmarterSmartSyncPolicyChangedType), /// (team_policies) Changed default Smart Sync setting for team members @@ -26493,20 +38002,26 @@ pub enum EventType { SmartSyncOptOut(SmartSyncOptOutType), /// (team_policies) Changed single sign-on setting for team SsoChangePolicy(SsoChangePolicyType), + /// (team_policies) Changed cross-team Stack access policy for team + StackCrossTeamAccessPolicyChanged(StackCrossTeamAccessPolicyChangedType), /// (team_policies) Changed team branding policy for team TeamBrandingPolicyChanged(TeamBrandingPolicyChangedType), /// (team_policies) Changed App Integrations setting for team TeamExtensionsPolicyChanged(TeamExtensionsPolicyChangedType), + /// (team_policies) Changed team member storage request policy for team + TeamMemberStorageRequestPolicyChanged(TeamMemberStorageRequestPolicyChangedType), /// (team_policies) Enabled/disabled Team Selective Sync for team TeamSelectiveSyncPolicyChanged(TeamSelectiveSyncPolicyChangedType), /// (team_policies) Edited the approved list for sharing externally TeamSharingWhitelistSubjectsChanged(TeamSharingWhitelistSubjectsChangedType), /// (team_policies) Added members to two factor authentication exception list TfaAddException(TfaAddExceptionType), - /// (team_policies) Changed two-step verification setting for team + /// (team_policies) Changed two-factor authentication setting for team TfaChangePolicy(TfaChangePolicyType), /// (team_policies) Removed members from two factor authentication exception list TfaRemoveException(TfaRemoveExceptionType), + /// (team_policies) Changed top level content setting for team + TopLevelContentPolicyChanged(TopLevelContentPolicyChangedType), /// (team_policies) Enabled/disabled option for members to link personal Dropbox account and /// team account to same computer TwoAccountChangePolicy(TwoAccountChangePolicyType), @@ -26544,19 +38059,23 @@ pub enum EventType { TeamProfileRemoveBackground(TeamProfileRemoveBackgroundType), /// (team_profile) Removed team logo displayed on shared link headers TeamProfileRemoveLogo(TeamProfileRemoveLogoType), - /// (tfa) Added backup phone for two-step verification + /// (tfa) Added passkey for login + PasskeyAdd(PasskeyAddType), + /// (tfa) Removed passkey for login + PasskeyRemove(PasskeyRemoveType), + /// (tfa) Added backup phone for two-factor authentication TfaAddBackupPhone(TfaAddBackupPhoneType), - /// (tfa) Added security key for two-step verification + /// (tfa) Added security key for two-factor authentication TfaAddSecurityKey(TfaAddSecurityKeyType), - /// (tfa) Changed backup phone for two-step verification + /// (tfa) Changed backup phone for two-factor authentication TfaChangeBackupPhone(TfaChangeBackupPhoneType), - /// (tfa) Enabled/disabled/changed two-step verification setting + /// (tfa) Enabled/disabled/changed two-factor authentication setting TfaChangeStatus(TfaChangeStatusType), - /// (tfa) Removed backup phone for two-step verification + /// (tfa) Removed backup phone for two-factor authentication TfaRemoveBackupPhone(TfaRemoveBackupPhoneType), - /// (tfa) Removed security key for two-step verification + /// (tfa) Removed security key for two-factor authentication TfaRemoveSecurityKey(TfaRemoveSecurityKeyType), - /// (tfa) Reset two-step verification for team member + /// (tfa) Reset two-factor authentication for team member TfaReset(TfaResetType), /// (trusted_teams) Changed enterprise admin role ChangedEnterpriseAdminRole(ChangedEnterpriseAdminRoleType), @@ -26658,6 +38177,38 @@ impl<'de> ::serde::de::Deserialize<'de> for EventType { "file_resolve_comment" => EventType::FileResolveComment(FileResolveCommentType::internal_deserialize(&mut map)?), "file_unlike_comment" => EventType::FileUnlikeComment(FileUnlikeCommentType::internal_deserialize(&mut map)?), "file_unresolve_comment" => EventType::FileUnresolveComment(FileUnresolveCommentType::internal_deserialize(&mut map)?), + "dash_added_comment_to_stack" => EventType::DashAddedCommentToStack(DashAddedCommentToStackType::internal_deserialize(&mut map)?), + "dash_added_connector" => EventType::DashAddedConnector(DashAddedConnectorType::internal_deserialize(&mut map)?), + "dash_added_link_to_stack" => EventType::DashAddedLinkToStack(DashAddedLinkToStackType::internal_deserialize(&mut map)?), + "dash_added_team_email_domain_allowlist" => EventType::DashAddedTeamEmailDomainAllowlist(DashAddedTeamEmailDomainAllowlistType::internal_deserialize(&mut map)?), + "dash_admin_added_org_wide_connector" => EventType::DashAdminAddedOrgWideConnector(DashAdminAddedOrgWideConnectorType::internal_deserialize(&mut map)?), + "dash_admin_disabled_connector" => EventType::DashAdminDisabledConnector(DashAdminDisabledConnectorType::internal_deserialize(&mut map)?), + "dash_admin_enabled_connector" => EventType::DashAdminEnabledConnector(DashAdminEnabledConnectorType::internal_deserialize(&mut map)?), + "dash_admin_removed_org_wide_connector" => EventType::DashAdminRemovedOrgWideConnector(DashAdminRemovedOrgWideConnectorType::internal_deserialize(&mut map)?), + "dash_archived_stack" => EventType::DashArchivedStack(DashArchivedStackType::internal_deserialize(&mut map)?), + "dash_changed_audience_of_shared_link_to_stack" => EventType::DashChangedAudienceOfSharedLinkToStack(DashChangedAudienceOfSharedLinkToStackType::internal_deserialize(&mut map)?), + "dash_cloned_stack" => EventType::DashClonedStack(DashClonedStackType::internal_deserialize(&mut map)?), + "dash_connector_tools_call" => EventType::DashConnectorToolsCall(DashConnectorToolsCallType::internal_deserialize(&mut map)?), + "dash_created_stack" => EventType::DashCreatedStack(DashCreatedStackType::internal_deserialize(&mut map)?), + "dash_deleted_comment_from_stack" => EventType::DashDeletedCommentFromStack(DashDeletedCommentFromStackType::internal_deserialize(&mut map)?), + "dash_deleted_stack" => EventType::DashDeletedStack(DashDeletedStackType::internal_deserialize(&mut map)?), + "dash_edited_comment_in_stack" => EventType::DashEditedCommentInStack(DashEditedCommentInStackType::internal_deserialize(&mut map)?), + "dash_external_user_opened_stack" => EventType::DashExternalUserOpenedStack(DashExternalUserOpenedStackType::internal_deserialize(&mut map)?), + "dash_first_launched_desktop" => EventType::DashFirstLaunchedDesktop(DashFirstLaunchedDesktopType::internal_deserialize(&mut map)?), + "dash_first_launched_extension" => EventType::DashFirstLaunchedExtension(DashFirstLaunchedExtensionType::internal_deserialize(&mut map)?), + "dash_first_launched_web_start_page" => EventType::DashFirstLaunchedWebStartPage(DashFirstLaunchedWebStartPageType::internal_deserialize(&mut map)?), + "dash_opened_shared_link_to_stack" => EventType::DashOpenedSharedLinkToStack(DashOpenedSharedLinkToStackType::internal_deserialize(&mut map)?), + "dash_opened_stack" => EventType::DashOpenedStack(DashOpenedStackType::internal_deserialize(&mut map)?), + "dash_preview_opt_out_status_changed" => EventType::DashPreviewOptOutStatusChanged(DashPreviewOptOutStatusChangedType::internal_deserialize(&mut map)?), + "dash_removed_connector" => EventType::DashRemovedConnector(DashRemovedConnectorType::internal_deserialize(&mut map)?), + "dash_removed_link_from_stack" => EventType::DashRemovedLinkFromStack(DashRemovedLinkFromStackType::internal_deserialize(&mut map)?), + "dash_removed_shared_link_to_stack" => EventType::DashRemovedSharedLinkToStack(DashRemovedSharedLinkToStackType::internal_deserialize(&mut map)?), + "dash_removed_team_email_domain_allowlist" => EventType::DashRemovedTeamEmailDomainAllowlist(DashRemovedTeamEmailDomainAllowlistType::internal_deserialize(&mut map)?), + "dash_renamed_stack" => EventType::DashRenamedStack(DashRenamedStackType::internal_deserialize(&mut map)?), + "dash_shared_link_to_stack" => EventType::DashSharedLinkToStack(DashSharedLinkToStackType::internal_deserialize(&mut map)?), + "dash_unarchived_stack" => EventType::DashUnarchivedStack(DashUnarchivedStackType::internal_deserialize(&mut map)?), + "dash_viewed_company_stack" => EventType::DashViewedCompanyStack(DashViewedCompanyStackType::internal_deserialize(&mut map)?), + "dash_viewed_external_ai_activity_report" => EventType::DashViewedExternalAiActivityReport(DashViewedExternalAiActivityReportType::internal_deserialize(&mut map)?), "governance_policy_add_folders" => EventType::GovernancePolicyAddFolders(GovernancePolicyAddFoldersType::internal_deserialize(&mut map)?), "governance_policy_add_folder_failed" => EventType::GovernancePolicyAddFolderFailed(GovernancePolicyAddFolderFailedType::internal_deserialize(&mut map)?), "governance_policy_content_disposed" => EventType::GovernancePolicyContentDisposed(GovernancePolicyContentDisposedType::internal_deserialize(&mut map)?), @@ -26712,8 +38263,20 @@ impl<'de> ::serde::de::Deserialize<'de> for EventType { "domain_verification_add_domain_success" => EventType::DomainVerificationAddDomainSuccess(DomainVerificationAddDomainSuccessType::internal_deserialize(&mut map)?), "domain_verification_remove_domain" => EventType::DomainVerificationRemoveDomain(DomainVerificationRemoveDomainType::internal_deserialize(&mut map)?), "enabled_domain_invites" => EventType::EnabledDomainInvites(EnabledDomainInvitesType::internal_deserialize(&mut map)?), + "encrypted_folder_cancel_team_key_rotation" => EventType::EncryptedFolderCancelTeamKeyRotation(EncryptedFolderCancelTeamKeyRotationType::internal_deserialize(&mut map)?), + "encrypted_folder_enroll_backup_key" => EventType::EncryptedFolderEnrollBackupKey(EncryptedFolderEnrollBackupKeyType::internal_deserialize(&mut map)?), + "encrypted_folder_enroll_client" => EventType::EncryptedFolderEnrollClient(EncryptedFolderEnrollClientType::internal_deserialize(&mut map)?), + "encrypted_folder_enroll_team" => EventType::EncryptedFolderEnrollTeam(EncryptedFolderEnrollTeamType::internal_deserialize(&mut map)?), + "encrypted_folder_finish_team_unenrollment" => EventType::EncryptedFolderFinishTeamUnenrollment(EncryptedFolderFinishTeamUnenrollmentType::internal_deserialize(&mut map)?), + "encrypted_folder_init_team_key_rotation" => EventType::EncryptedFolderInitTeamKeyRotation(EncryptedFolderInitTeamKeyRotationType::internal_deserialize(&mut map)?), + "encrypted_folder_init_team_unenrollment" => EventType::EncryptedFolderInitTeamUnenrollment(EncryptedFolderInitTeamUnenrollmentType::internal_deserialize(&mut map)?), + "encrypted_folder_remove_backup_key" => EventType::EncryptedFolderRemoveBackupKey(EncryptedFolderRemoveBackupKeyType::internal_deserialize(&mut map)?), + "encrypted_folder_rotate_team_key" => EventType::EncryptedFolderRotateTeamKey(EncryptedFolderRotateTeamKeyType::internal_deserialize(&mut map)?), + "encrypted_folder_unenroll_client" => EventType::EncryptedFolderUnenrollClient(EncryptedFolderUnenrollClientType::internal_deserialize(&mut map)?), + "team_encryption_key_activate_key" => EventType::TeamEncryptionKeyActivateKey(TeamEncryptionKeyActivateKeyType::internal_deserialize(&mut map)?), "team_encryption_key_cancel_key_deletion" => EventType::TeamEncryptionKeyCancelKeyDeletion(TeamEncryptionKeyCancelKeyDeletionType::internal_deserialize(&mut map)?), "team_encryption_key_create_key" => EventType::TeamEncryptionKeyCreateKey(TeamEncryptionKeyCreateKeyType::internal_deserialize(&mut map)?), + "team_encryption_key_deactivate_key" => EventType::TeamEncryptionKeyDeactivateKey(TeamEncryptionKeyDeactivateKeyType::internal_deserialize(&mut map)?), "team_encryption_key_delete_key" => EventType::TeamEncryptionKeyDeleteKey(TeamEncryptionKeyDeleteKeyType::internal_deserialize(&mut map)?), "team_encryption_key_disable_key" => EventType::TeamEncryptionKeyDisableKey(TeamEncryptionKeyDisableKeyType::internal_deserialize(&mut map)?), "team_encryption_key_enable_key" => EventType::TeamEncryptionKeyEnableKey(TeamEncryptionKeyEnableKeyType::internal_deserialize(&mut map)?), @@ -26745,12 +38308,15 @@ impl<'de> ::serde::de::Deserialize<'de> for EventType { "object_label_updated_value" => EventType::ObjectLabelUpdatedValue(ObjectLabelUpdatedValueType::internal_deserialize(&mut map)?), "organize_folder_with_tidy" => EventType::OrganizeFolderWithTidy(OrganizeFolderWithTidyType::internal_deserialize(&mut map)?), "replay_file_delete" => EventType::ReplayFileDelete(ReplayFileDeleteType::internal_deserialize(&mut map)?), + "replay_file_downloaded" => EventType::ReplayFileDownloaded(ReplayFileDownloadedType::internal_deserialize(&mut map)?), + "replay_team_project_created" => EventType::ReplayTeamProjectCreated(ReplayTeamProjectCreatedType::internal_deserialize(&mut map)?), "rewind_folder" => EventType::RewindFolder(RewindFolderType::internal_deserialize(&mut map)?), "undo_naming_convention" => EventType::UndoNamingConvention(UndoNamingConventionType::internal_deserialize(&mut map)?), "undo_organize_folder_with_tidy" => EventType::UndoOrganizeFolderWithTidy(UndoOrganizeFolderWithTidyType::internal_deserialize(&mut map)?), "user_tags_added" => EventType::UserTagsAdded(UserTagsAddedType::internal_deserialize(&mut map)?), "user_tags_removed" => EventType::UserTagsRemoved(UserTagsRemovedType::internal_deserialize(&mut map)?), "email_ingest_receive_file" => EventType::EmailIngestReceiveFile(EmailIngestReceiveFileType::internal_deserialize(&mut map)?), + "file_request_auto_close" => EventType::FileRequestAutoClose(FileRequestAutoCloseType::internal_deserialize(&mut map)?), "file_request_change" => EventType::FileRequestChange(FileRequestChangeType::internal_deserialize(&mut map)?), "file_request_close" => EventType::FileRequestClose(FileRequestCloseType::internal_deserialize(&mut map)?), "file_request_create" => EventType::FileRequestCreate(FileRequestCreateType::internal_deserialize(&mut map)?), @@ -26764,6 +38330,7 @@ impl<'de> ::serde::de::Deserialize<'de> for EventType { "group_create" => EventType::GroupCreate(GroupCreateType::internal_deserialize(&mut map)?), "group_delete" => EventType::GroupDelete(GroupDeleteType::internal_deserialize(&mut map)?), "group_description_updated" => EventType::GroupDescriptionUpdated(GroupDescriptionUpdatedType::internal_deserialize(&mut map)?), + "group_external_sharing_setting_override_changed" => EventType::GroupExternalSharingSettingOverrideChanged(GroupExternalSharingSettingOverrideChangedType::internal_deserialize(&mut map)?), "group_join_policy_updated" => EventType::GroupJoinPolicyUpdated(GroupJoinPolicyUpdatedType::internal_deserialize(&mut map)?), "group_moved" => EventType::GroupMoved(GroupMovedType::internal_deserialize(&mut map)?), "group_remove_external_id" => EventType::GroupRemoveExternalId(GroupRemoveExternalIdType::internal_deserialize(&mut map)?), @@ -26781,6 +38348,8 @@ impl<'de> ::serde::de::Deserialize<'de> for EventType { "sign_in_as_session_end" => EventType::SignInAsSessionEnd(SignInAsSessionEndType::internal_deserialize(&mut map)?), "sign_in_as_session_start" => EventType::SignInAsSessionStart(SignInAsSessionStartType::internal_deserialize(&mut map)?), "sso_error" => EventType::SsoError(SsoErrorType::internal_deserialize(&mut map)?), + "addon_assigned" => EventType::AddonAssigned(AddonAssignedType::internal_deserialize(&mut map)?), + "addon_removed" => EventType::AddonRemoved(AddonRemovedType::internal_deserialize(&mut map)?), "backup_admin_invitation_sent" => EventType::BackupAdminInvitationSent(BackupAdminInvitationSentType::internal_deserialize(&mut map)?), "backup_invitation_opened" => EventType::BackupInvitationOpened(BackupInvitationOpenedType::internal_deserialize(&mut map)?), "create_team_invite_link" => EventType::CreateTeamInviteLink(CreateTeamInviteLinkType::internal_deserialize(&mut map)?), @@ -26806,6 +38375,8 @@ impl<'de> ::serde::de::Deserialize<'de> for EventType { "member_suggest" => EventType::MemberSuggest(MemberSuggestType::internal_deserialize(&mut map)?), "member_transfer_account_contents" => EventType::MemberTransferAccountContents(MemberTransferAccountContentsType::internal_deserialize(&mut map)?), "pending_secondary_email_added" => EventType::PendingSecondaryEmailAdded(PendingSecondaryEmailAddedType::internal_deserialize(&mut map)?), + "product_assigned_to_member" => EventType::ProductAssignedToMember(ProductAssignedToMemberType::internal_deserialize(&mut map)?), + "product_removed_from_member" => EventType::ProductRemovedFromMember(ProductRemovedFromMemberType::internal_deserialize(&mut map)?), "secondary_email_deleted" => EventType::SecondaryEmailDeleted(SecondaryEmailDeletedType::internal_deserialize(&mut map)?), "secondary_email_verified" => EventType::SecondaryEmailVerified(SecondaryEmailVerifiedType::internal_deserialize(&mut map)?), "secondary_mails_policy_changed" => EventType::SecondaryMailsPolicyChanged(SecondaryMailsPolicyChangedType::internal_deserialize(&mut map)?), @@ -26869,6 +38440,8 @@ impl<'de> ::serde::de::Deserialize<'de> for EventType { "export_members_report_fail" => EventType::ExportMembersReportFail(ExportMembersReportFailType::internal_deserialize(&mut map)?), "external_sharing_create_report" => EventType::ExternalSharingCreateReport(ExternalSharingCreateReportType::internal_deserialize(&mut map)?), "external_sharing_report_failed" => EventType::ExternalSharingReportFailed(ExternalSharingReportFailedType::internal_deserialize(&mut map)?), + "member_access_details_create_report" => EventType::MemberAccessDetailsCreateReport(MemberAccessDetailsCreateReportType::internal_deserialize(&mut map)?), + "member_access_details_create_report_failed" => EventType::MemberAccessDetailsCreateReportFailed(MemberAccessDetailsCreateReportFailedType::internal_deserialize(&mut map)?), "no_expiration_link_gen_create_report" => EventType::NoExpirationLinkGenCreateReport(NoExpirationLinkGenCreateReportType::internal_deserialize(&mut map)?), "no_expiration_link_gen_report_failed" => EventType::NoExpirationLinkGenReportFailed(NoExpirationLinkGenReportFailedType::internal_deserialize(&mut map)?), "no_password_link_gen_create_report" => EventType::NoPasswordLinkGenCreateReport(NoPasswordLinkGenCreateReportType::internal_deserialize(&mut map)?), @@ -26880,9 +38453,15 @@ impl<'de> ::serde::de::Deserialize<'de> for EventType { "paper_admin_export_start" => EventType::PaperAdminExportStart(PaperAdminExportStartType::internal_deserialize(&mut map)?), "ransomware_alert_create_report" => EventType::RansomwareAlertCreateReport(RansomwareAlertCreateReportType::internal_deserialize(&mut map)?), "ransomware_alert_create_report_failed" => EventType::RansomwareAlertCreateReportFailed(RansomwareAlertCreateReportFailedType::internal_deserialize(&mut map)?), + "shared_folders_create_report" => EventType::SharedFoldersCreateReport(SharedFoldersCreateReportType::internal_deserialize(&mut map)?), + "shared_folders_create_report_failed" => EventType::SharedFoldersCreateReportFailed(SharedFoldersCreateReportFailedType::internal_deserialize(&mut map)?), "smart_sync_create_admin_privilege_report" => EventType::SmartSyncCreateAdminPrivilegeReport(SmartSyncCreateAdminPrivilegeReportType::internal_deserialize(&mut map)?), "team_activity_create_report" => EventType::TeamActivityCreateReport(TeamActivityCreateReportType::internal_deserialize(&mut map)?), "team_activity_create_report_fail" => EventType::TeamActivityCreateReportFail(TeamActivityCreateReportFailType::internal_deserialize(&mut map)?), + "team_folders_create_report" => EventType::TeamFoldersCreateReport(TeamFoldersCreateReportType::internal_deserialize(&mut map)?), + "team_folders_create_report_failed" => EventType::TeamFoldersCreateReportFailed(TeamFoldersCreateReportFailedType::internal_deserialize(&mut map)?), + "team_storage_create_report" => EventType::TeamStorageCreateReport(TeamStorageCreateReportType::internal_deserialize(&mut map)?), + "team_storage_create_report_failed" => EventType::TeamStorageCreateReportFailed(TeamStorageCreateReportFailedType::internal_deserialize(&mut map)?), "collection_share" => EventType::CollectionShare(CollectionShareType::internal_deserialize(&mut map)?), "file_transfers_file_add" => EventType::FileTransfersFileAdd(FileTransfersFileAddType::internal_deserialize(&mut map)?), "file_transfers_transfer_delete" => EventType::FileTransfersTransferDelete(FileTransfersTransferDeleteType::internal_deserialize(&mut map)?), @@ -26899,6 +38478,14 @@ impl<'de> ::serde::de::Deserialize<'de> for EventType { "replay_file_shared_link_modified" => EventType::ReplayFileSharedLinkModified(ReplayFileSharedLinkModifiedType::internal_deserialize(&mut map)?), "replay_project_team_add" => EventType::ReplayProjectTeamAdd(ReplayProjectTeamAddType::internal_deserialize(&mut map)?), "replay_project_team_delete" => EventType::ReplayProjectTeamDelete(ReplayProjectTeamDeleteType::internal_deserialize(&mut map)?), + "send_and_track_file_added" => EventType::SendAndTrackFileAdded(SendAndTrackFileAddedType::internal_deserialize(&mut map)?), + "send_and_track_file_renamed" => EventType::SendAndTrackFileRenamed(SendAndTrackFileRenamedType::internal_deserialize(&mut map)?), + "send_and_track_file_updated" => EventType::SendAndTrackFileUpdated(SendAndTrackFileUpdatedType::internal_deserialize(&mut map)?), + "send_and_track_link_created" => EventType::SendAndTrackLinkCreated(SendAndTrackLinkCreatedType::internal_deserialize(&mut map)?), + "send_and_track_link_deleted" => EventType::SendAndTrackLinkDeleted(SendAndTrackLinkDeletedType::internal_deserialize(&mut map)?), + "send_and_track_link_updated" => EventType::SendAndTrackLinkUpdated(SendAndTrackLinkUpdatedType::internal_deserialize(&mut map)?), + "send_and_track_link_viewed" => EventType::SendAndTrackLinkViewed(SendAndTrackLinkViewedType::internal_deserialize(&mut map)?), + "send_and_track_removed_file_and_associated_links" => EventType::SendAndTrackRemovedFileAndAssociatedLinks(SendAndTrackRemovedFileAndAssociatedLinksType::internal_deserialize(&mut map)?), "sf_add_group" => EventType::SfAddGroup(SfAddGroupType::internal_deserialize(&mut map)?), "sf_allow_non_members_to_view_shared_links" => EventType::SfAllowNonMembersToViewSharedLinks(SfAllowNonMembersToViewSharedLinksType::internal_deserialize(&mut map)?), "sf_external_invite_warn" => EventType::SfExternalInviteWarn(SfExternalInviteWarnType::internal_deserialize(&mut map)?), @@ -26954,6 +38541,7 @@ impl<'de> ::serde::de::Deserialize<'de> for EventType { "shared_link_disable" => EventType::SharedLinkDisable(SharedLinkDisableType::internal_deserialize(&mut map)?), "shared_link_download" => EventType::SharedLinkDownload(SharedLinkDownloadType::internal_deserialize(&mut map)?), "shared_link_remove_expiry" => EventType::SharedLinkRemoveExpiry(SharedLinkRemoveExpiryType::internal_deserialize(&mut map)?), + "shared_link_remove_visitor" => EventType::SharedLinkRemoveVisitor(SharedLinkRemoveVisitorType::internal_deserialize(&mut map)?), "shared_link_settings_add_expiration" => EventType::SharedLinkSettingsAddExpiration(SharedLinkSettingsAddExpirationType::internal_deserialize(&mut map)?), "shared_link_settings_add_password" => EventType::SharedLinkSettingsAddPassword(SharedLinkSettingsAddPasswordType::internal_deserialize(&mut map)?), "shared_link_settings_allow_download_disabled" => EventType::SharedLinkSettingsAllowDownloadDisabled(SharedLinkSettingsAllowDownloadDisabledType::internal_deserialize(&mut map)?), @@ -26993,6 +38581,15 @@ impl<'de> ::serde::de::Deserialize<'de> for EventType { "showcase_untrashed" => EventType::ShowcaseUntrashed(ShowcaseUntrashedType::internal_deserialize(&mut map)?), "showcase_untrashed_deprecated" => EventType::ShowcaseUntrashedDeprecated(ShowcaseUntrashedDeprecatedType::internal_deserialize(&mut map)?), "showcase_view" => EventType::ShowcaseView(ShowcaseViewType::internal_deserialize(&mut map)?), + "sign_signature_request_canceled" => EventType::SignSignatureRequestCanceled(SignSignatureRequestCanceledType::internal_deserialize(&mut map)?), + "sign_signature_request_completed" => EventType::SignSignatureRequestCompleted(SignSignatureRequestCompletedType::internal_deserialize(&mut map)?), + "sign_signature_request_declined" => EventType::SignSignatureRequestDeclined(SignSignatureRequestDeclinedType::internal_deserialize(&mut map)?), + "sign_signature_request_opened" => EventType::SignSignatureRequestOpened(SignSignatureRequestOpenedType::internal_deserialize(&mut map)?), + "sign_signature_request_reminder_sent" => EventType::SignSignatureRequestReminderSent(SignSignatureRequestReminderSentType::internal_deserialize(&mut map)?), + "sign_signature_request_sent" => EventType::SignSignatureRequestSent(SignSignatureRequestSentType::internal_deserialize(&mut map)?), + "sign_template_created" => EventType::SignTemplateCreated(SignTemplateCreatedType::internal_deserialize(&mut map)?), + "sign_template_shared" => EventType::SignTemplateShared(SignTemplateSharedType::internal_deserialize(&mut map)?), + "risc_security_event" => EventType::RiscSecurityEvent(RiscSecurityEventType::internal_deserialize(&mut map)?), "sso_add_cert" => EventType::SsoAddCert(SsoAddCertType::internal_deserialize(&mut map)?), "sso_add_login_url" => EventType::SsoAddLoginUrl(SsoAddLoginUrlType::internal_deserialize(&mut map)?), "sso_add_logout_url" => EventType::SsoAddLogoutUrl(SsoAddLogoutUrlType::internal_deserialize(&mut map)?), @@ -27011,14 +38608,19 @@ impl<'de> ::serde::de::Deserialize<'de> for EventType { "team_selective_sync_settings_changed" => EventType::TeamSelectiveSyncSettingsChanged(TeamSelectiveSyncSettingsChangedType::internal_deserialize(&mut map)?), "account_capture_change_policy" => EventType::AccountCaptureChangePolicy(AccountCaptureChangePolicyType::internal_deserialize(&mut map)?), "admin_email_reminders_changed" => EventType::AdminEmailRemindersChanged(AdminEmailRemindersChangedType::internal_deserialize(&mut map)?), + "ai_third_party_sharing_dropbox_base_policy_changed" => EventType::AiThirdPartySharingDropboxBasePolicyChanged(AiThirdPartySharingDropboxBasePolicyChangedType::internal_deserialize(&mut map)?), "allow_download_disabled" => EventType::AllowDownloadDisabled(AllowDownloadDisabledType::internal_deserialize(&mut map)?), "allow_download_enabled" => EventType::AllowDownloadEnabled(AllowDownloadEnabledType::internal_deserialize(&mut map)?), + "apple_login_change_policy" => EventType::AppleLoginChangePolicy(AppleLoginChangePolicyType::internal_deserialize(&mut map)?), "app_permissions_changed" => EventType::AppPermissionsChanged(AppPermissionsChangedType::internal_deserialize(&mut map)?), "camera_uploads_policy_changed" => EventType::CameraUploadsPolicyChanged(CameraUploadsPolicyChangedType::internal_deserialize(&mut map)?), + "capture_team_space_policy_changed" => EventType::CaptureTeamSpacePolicyChanged(CaptureTeamSpacePolicyChangedType::internal_deserialize(&mut map)?), "capture_transcript_policy_changed" => EventType::CaptureTranscriptPolicyChanged(CaptureTranscriptPolicyChangedType::internal_deserialize(&mut map)?), "classification_change_policy" => EventType::ClassificationChangePolicy(ClassificationChangePolicyType::internal_deserialize(&mut map)?), "computer_backup_policy_changed" => EventType::ComputerBackupPolicyChanged(ComputerBackupPolicyChangedType::internal_deserialize(&mut map)?), "content_administration_policy_changed" => EventType::ContentAdministrationPolicyChanged(ContentAdministrationPolicyChangedType::internal_deserialize(&mut map)?), + "content_deletion_protection_change_policy" => EventType::ContentDeletionProtectionChangePolicy(ContentDeletionProtectionChangePolicyType::internal_deserialize(&mut map)?), + "dash_external_sharing_policy_changed" => EventType::DashExternalSharingPolicyChanged(DashExternalSharingPolicyChangedType::internal_deserialize(&mut map)?), "data_placement_restriction_change_policy" => EventType::DataPlacementRestrictionChangePolicy(DataPlacementRestrictionChangePolicyType::internal_deserialize(&mut map)?), "data_placement_restriction_satisfy_policy" => EventType::DataPlacementRestrictionSatisfyPolicy(DataPlacementRestrictionSatisfyPolicyType::internal_deserialize(&mut map)?), "device_approvals_add_exception" => EventType::DeviceApprovalsAddException(DeviceApprovalsAddExceptionType::internal_deserialize(&mut map)?), @@ -27043,6 +38645,7 @@ impl<'de> ::serde::de::Deserialize<'de> for EventType { "file_requests_emails_enabled" => EventType::FileRequestsEmailsEnabled(FileRequestsEmailsEnabledType::internal_deserialize(&mut map)?), "file_requests_emails_restricted_to_team_only" => EventType::FileRequestsEmailsRestrictedToTeamOnly(FileRequestsEmailsRestrictedToTeamOnlyType::internal_deserialize(&mut map)?), "file_transfers_policy_changed" => EventType::FileTransfersPolicyChanged(FileTransfersPolicyChangedType::internal_deserialize(&mut map)?), + "flexible_file_names_policy_changed" => EventType::FlexibleFileNamesPolicyChanged(FlexibleFileNamesPolicyChangedType::internal_deserialize(&mut map)?), "folder_link_restriction_policy_changed" => EventType::FolderLinkRestrictionPolicyChanged(FolderLinkRestrictionPolicyChangedType::internal_deserialize(&mut map)?), "google_sso_change_policy" => EventType::GoogleSsoChangePolicy(GoogleSsoChangePolicyType::internal_deserialize(&mut map)?), "group_user_management_change_policy" => EventType::GroupUserManagementChangePolicy(GroupUserManagementChangePolicyType::internal_deserialize(&mut map)?), @@ -27055,6 +38658,7 @@ impl<'de> ::serde::de::Deserialize<'de> for EventType { "member_space_limits_change_policy" => EventType::MemberSpaceLimitsChangePolicy(MemberSpaceLimitsChangePolicyType::internal_deserialize(&mut map)?), "member_space_limits_remove_exception" => EventType::MemberSpaceLimitsRemoveException(MemberSpaceLimitsRemoveExceptionType::internal_deserialize(&mut map)?), "member_suggestions_change_policy" => EventType::MemberSuggestionsChangePolicy(MemberSuggestionsChangePolicyType::internal_deserialize(&mut map)?), + "microsoft_login_change_policy" => EventType::MicrosoftLoginChangePolicy(MicrosoftLoginChangePolicyType::internal_deserialize(&mut map)?), "microsoft_office_addin_change_policy" => EventType::MicrosoftOfficeAddinChangePolicy(MicrosoftOfficeAddinChangePolicyType::internal_deserialize(&mut map)?), "network_control_change_policy" => EventType::NetworkControlChangePolicy(NetworkControlChangePolicyType::internal_deserialize(&mut map)?), "paper_change_deployment_policy" => EventType::PaperChangeDeploymentPolicy(PaperChangeDeploymentPolicyType::internal_deserialize(&mut map)?), @@ -27065,11 +38669,18 @@ impl<'de> ::serde::de::Deserialize<'de> for EventType { "paper_desktop_policy_changed" => EventType::PaperDesktopPolicyChanged(PaperDesktopPolicyChangedType::internal_deserialize(&mut map)?), "paper_enabled_users_group_addition" => EventType::PaperEnabledUsersGroupAddition(PaperEnabledUsersGroupAdditionType::internal_deserialize(&mut map)?), "paper_enabled_users_group_removal" => EventType::PaperEnabledUsersGroupRemoval(PaperEnabledUsersGroupRemovalType::internal_deserialize(&mut map)?), + "passkey_login_policy_changed" => EventType::PasskeyLoginPolicyChanged(PasskeyLoginPolicyChangedType::internal_deserialize(&mut map)?), "password_strength_requirements_change_policy" => EventType::PasswordStrengthRequirementsChangePolicy(PasswordStrengthRequirementsChangePolicyType::internal_deserialize(&mut map)?), "permanent_delete_change_policy" => EventType::PermanentDeleteChangePolicy(PermanentDeleteChangePolicyType::internal_deserialize(&mut map)?), + "previews_ai_policy_changed" => EventType::PreviewsAiPolicyChanged(PreviewsAiPolicyChangedType::internal_deserialize(&mut map)?), + "replay_adding_people_policy_changed" => EventType::ReplayAddingPeoplePolicyChanged(ReplayAddingPeoplePolicyChangedType::internal_deserialize(&mut map)?), + "replay_sharing_policy_changed" => EventType::ReplaySharingPolicyChanged(ReplaySharingPolicyChangedType::internal_deserialize(&mut map)?), "reseller_support_change_policy" => EventType::ResellerSupportChangePolicy(ResellerSupportChangePolicyType::internal_deserialize(&mut map)?), "rewind_policy_changed" => EventType::RewindPolicyChanged(RewindPolicyChangedType::internal_deserialize(&mut map)?), + "send_and_track_policy_changed" => EventType::SendAndTrackPolicyChanged(SendAndTrackPolicyChangedType::internal_deserialize(&mut map)?), + "send_external_sharing_policy_changed" => EventType::SendExternalSharingPolicyChanged(SendExternalSharingPolicyChangedType::internal_deserialize(&mut map)?), "send_for_signature_policy_changed" => EventType::SendForSignaturePolicyChanged(SendForSignaturePolicyChangedType::internal_deserialize(&mut map)?), + "shared_link_default_permissions_policy_changed" => EventType::SharedLinkDefaultPermissionsPolicyChanged(SharedLinkDefaultPermissionsPolicyChangedType::internal_deserialize(&mut map)?), "sharing_change_folder_join_policy" => EventType::SharingChangeFolderJoinPolicy(SharingChangeFolderJoinPolicyType::internal_deserialize(&mut map)?), "sharing_change_link_allow_change_expiration_policy" => EventType::SharingChangeLinkAllowChangeExpirationPolicy(SharingChangeLinkAllowChangeExpirationPolicyType::internal_deserialize(&mut map)?), "sharing_change_link_default_expiration_policy" => EventType::SharingChangeLinkDefaultExpirationPolicy(SharingChangeLinkDefaultExpirationPolicyType::internal_deserialize(&mut map)?), @@ -27079,18 +38690,23 @@ impl<'de> ::serde::de::Deserialize<'de> for EventType { "showcase_change_download_policy" => EventType::ShowcaseChangeDownloadPolicy(ShowcaseChangeDownloadPolicyType::internal_deserialize(&mut map)?), "showcase_change_enabled_policy" => EventType::ShowcaseChangeEnabledPolicy(ShowcaseChangeEnabledPolicyType::internal_deserialize(&mut map)?), "showcase_change_external_sharing_policy" => EventType::ShowcaseChangeExternalSharingPolicy(ShowcaseChangeExternalSharingPolicyType::internal_deserialize(&mut map)?), + "sign_external_sharing_policy_changed" => EventType::SignExternalSharingPolicyChanged(SignExternalSharingPolicyChangedType::internal_deserialize(&mut map)?), + "sign_template_creation_permission_changed" => EventType::SignTemplateCreationPermissionChanged(SignTemplateCreationPermissionChangedType::internal_deserialize(&mut map)?), "smarter_smart_sync_policy_changed" => EventType::SmarterSmartSyncPolicyChanged(SmarterSmartSyncPolicyChangedType::internal_deserialize(&mut map)?), "smart_sync_change_policy" => EventType::SmartSyncChangePolicy(SmartSyncChangePolicyType::internal_deserialize(&mut map)?), "smart_sync_not_opt_out" => EventType::SmartSyncNotOptOut(SmartSyncNotOptOutType::internal_deserialize(&mut map)?), "smart_sync_opt_out" => EventType::SmartSyncOptOut(SmartSyncOptOutType::internal_deserialize(&mut map)?), "sso_change_policy" => EventType::SsoChangePolicy(SsoChangePolicyType::internal_deserialize(&mut map)?), + "stack_cross_team_access_policy_changed" => EventType::StackCrossTeamAccessPolicyChanged(StackCrossTeamAccessPolicyChangedType::internal_deserialize(&mut map)?), "team_branding_policy_changed" => EventType::TeamBrandingPolicyChanged(TeamBrandingPolicyChangedType::internal_deserialize(&mut map)?), "team_extensions_policy_changed" => EventType::TeamExtensionsPolicyChanged(TeamExtensionsPolicyChangedType::internal_deserialize(&mut map)?), + "team_member_storage_request_policy_changed" => EventType::TeamMemberStorageRequestPolicyChanged(TeamMemberStorageRequestPolicyChangedType::internal_deserialize(&mut map)?), "team_selective_sync_policy_changed" => EventType::TeamSelectiveSyncPolicyChanged(TeamSelectiveSyncPolicyChangedType::internal_deserialize(&mut map)?), "team_sharing_whitelist_subjects_changed" => EventType::TeamSharingWhitelistSubjectsChanged(TeamSharingWhitelistSubjectsChangedType::internal_deserialize(&mut map)?), "tfa_add_exception" => EventType::TfaAddException(TfaAddExceptionType::internal_deserialize(&mut map)?), "tfa_change_policy" => EventType::TfaChangePolicy(TfaChangePolicyType::internal_deserialize(&mut map)?), "tfa_remove_exception" => EventType::TfaRemoveException(TfaRemoveExceptionType::internal_deserialize(&mut map)?), + "top_level_content_policy_changed" => EventType::TopLevelContentPolicyChanged(TopLevelContentPolicyChangedType::internal_deserialize(&mut map)?), "two_account_change_policy" => EventType::TwoAccountChangePolicy(TwoAccountChangePolicyType::internal_deserialize(&mut map)?), "viewer_info_policy_changed" => EventType::ViewerInfoPolicyChanged(ViewerInfoPolicyChangedType::internal_deserialize(&mut map)?), "watermarking_policy_changed" => EventType::WatermarkingPolicyChanged(WatermarkingPolicyChangedType::internal_deserialize(&mut map)?), @@ -27109,6 +38725,8 @@ impl<'de> ::serde::de::Deserialize<'de> for EventType { "team_profile_change_name" => EventType::TeamProfileChangeName(TeamProfileChangeNameType::internal_deserialize(&mut map)?), "team_profile_remove_background" => EventType::TeamProfileRemoveBackground(TeamProfileRemoveBackgroundType::internal_deserialize(&mut map)?), "team_profile_remove_logo" => EventType::TeamProfileRemoveLogo(TeamProfileRemoveLogoType::internal_deserialize(&mut map)?), + "passkey_add" => EventType::PasskeyAdd(PasskeyAddType::internal_deserialize(&mut map)?), + "passkey_remove" => EventType::PasskeyRemove(PasskeyRemoveType::internal_deserialize(&mut map)?), "tfa_add_backup_phone" => EventType::TfaAddBackupPhone(TfaAddBackupPhoneType::internal_deserialize(&mut map)?), "tfa_add_security_key" => EventType::TfaAddSecurityKey(TfaAddSecurityKeyType::internal_deserialize(&mut map)?), "tfa_change_backup_phone" => EventType::TfaChangeBackupPhone(TfaChangeBackupPhoneType::internal_deserialize(&mut map)?), @@ -27167,6 +38785,38 @@ impl<'de> ::serde::de::Deserialize<'de> for EventType { "file_resolve_comment", "file_unlike_comment", "file_unresolve_comment", + "dash_added_comment_to_stack", + "dash_added_connector", + "dash_added_link_to_stack", + "dash_added_team_email_domain_allowlist", + "dash_admin_added_org_wide_connector", + "dash_admin_disabled_connector", + "dash_admin_enabled_connector", + "dash_admin_removed_org_wide_connector", + "dash_archived_stack", + "dash_changed_audience_of_shared_link_to_stack", + "dash_cloned_stack", + "dash_connector_tools_call", + "dash_created_stack", + "dash_deleted_comment_from_stack", + "dash_deleted_stack", + "dash_edited_comment_in_stack", + "dash_external_user_opened_stack", + "dash_first_launched_desktop", + "dash_first_launched_extension", + "dash_first_launched_web_start_page", + "dash_opened_shared_link_to_stack", + "dash_opened_stack", + "dash_preview_opt_out_status_changed", + "dash_removed_connector", + "dash_removed_link_from_stack", + "dash_removed_shared_link_to_stack", + "dash_removed_team_email_domain_allowlist", + "dash_renamed_stack", + "dash_shared_link_to_stack", + "dash_unarchived_stack", + "dash_viewed_company_stack", + "dash_viewed_external_ai_activity_report", "governance_policy_add_folders", "governance_policy_add_folder_failed", "governance_policy_content_disposed", @@ -27221,8 +38871,20 @@ impl<'de> ::serde::de::Deserialize<'de> for EventType { "domain_verification_add_domain_success", "domain_verification_remove_domain", "enabled_domain_invites", + "encrypted_folder_cancel_team_key_rotation", + "encrypted_folder_enroll_backup_key", + "encrypted_folder_enroll_client", + "encrypted_folder_enroll_team", + "encrypted_folder_finish_team_unenrollment", + "encrypted_folder_init_team_key_rotation", + "encrypted_folder_init_team_unenrollment", + "encrypted_folder_remove_backup_key", + "encrypted_folder_rotate_team_key", + "encrypted_folder_unenroll_client", + "team_encryption_key_activate_key", "team_encryption_key_cancel_key_deletion", "team_encryption_key_create_key", + "team_encryption_key_deactivate_key", "team_encryption_key_delete_key", "team_encryption_key_disable_key", "team_encryption_key_enable_key", @@ -27254,12 +38916,15 @@ impl<'de> ::serde::de::Deserialize<'de> for EventType { "object_label_updated_value", "organize_folder_with_tidy", "replay_file_delete", + "replay_file_downloaded", + "replay_team_project_created", "rewind_folder", "undo_naming_convention", "undo_organize_folder_with_tidy", "user_tags_added", "user_tags_removed", "email_ingest_receive_file", + "file_request_auto_close", "file_request_change", "file_request_close", "file_request_create", @@ -27273,6 +38938,7 @@ impl<'de> ::serde::de::Deserialize<'de> for EventType { "group_create", "group_delete", "group_description_updated", + "group_external_sharing_setting_override_changed", "group_join_policy_updated", "group_moved", "group_remove_external_id", @@ -27290,6 +38956,8 @@ impl<'de> ::serde::de::Deserialize<'de> for EventType { "sign_in_as_session_end", "sign_in_as_session_start", "sso_error", + "addon_assigned", + "addon_removed", "backup_admin_invitation_sent", "backup_invitation_opened", "create_team_invite_link", @@ -27315,6 +38983,8 @@ impl<'de> ::serde::de::Deserialize<'de> for EventType { "member_suggest", "member_transfer_account_contents", "pending_secondary_email_added", + "product_assigned_to_member", + "product_removed_from_member", "secondary_email_deleted", "secondary_email_verified", "secondary_mails_policy_changed", @@ -27378,6 +39048,8 @@ impl<'de> ::serde::de::Deserialize<'de> for EventType { "export_members_report_fail", "external_sharing_create_report", "external_sharing_report_failed", + "member_access_details_create_report", + "member_access_details_create_report_failed", "no_expiration_link_gen_create_report", "no_expiration_link_gen_report_failed", "no_password_link_gen_create_report", @@ -27389,9 +39061,15 @@ impl<'de> ::serde::de::Deserialize<'de> for EventType { "paper_admin_export_start", "ransomware_alert_create_report", "ransomware_alert_create_report_failed", + "shared_folders_create_report", + "shared_folders_create_report_failed", "smart_sync_create_admin_privilege_report", "team_activity_create_report", "team_activity_create_report_fail", + "team_folders_create_report", + "team_folders_create_report_failed", + "team_storage_create_report", + "team_storage_create_report_failed", "collection_share", "file_transfers_file_add", "file_transfers_transfer_delete", @@ -27408,6 +39086,14 @@ impl<'de> ::serde::de::Deserialize<'de> for EventType { "replay_file_shared_link_modified", "replay_project_team_add", "replay_project_team_delete", + "send_and_track_file_added", + "send_and_track_file_renamed", + "send_and_track_file_updated", + "send_and_track_link_created", + "send_and_track_link_deleted", + "send_and_track_link_updated", + "send_and_track_link_viewed", + "send_and_track_removed_file_and_associated_links", "sf_add_group", "sf_allow_non_members_to_view_shared_links", "sf_external_invite_warn", @@ -27463,6 +39149,7 @@ impl<'de> ::serde::de::Deserialize<'de> for EventType { "shared_link_disable", "shared_link_download", "shared_link_remove_expiry", + "shared_link_remove_visitor", "shared_link_settings_add_expiration", "shared_link_settings_add_password", "shared_link_settings_allow_download_disabled", @@ -27502,6 +39189,15 @@ impl<'de> ::serde::de::Deserialize<'de> for EventType { "showcase_untrashed", "showcase_untrashed_deprecated", "showcase_view", + "sign_signature_request_canceled", + "sign_signature_request_completed", + "sign_signature_request_declined", + "sign_signature_request_opened", + "sign_signature_request_reminder_sent", + "sign_signature_request_sent", + "sign_template_created", + "sign_template_shared", + "risc_security_event", "sso_add_cert", "sso_add_login_url", "sso_add_logout_url", @@ -27520,14 +39216,19 @@ impl<'de> ::serde::de::Deserialize<'de> for EventType { "team_selective_sync_settings_changed", "account_capture_change_policy", "admin_email_reminders_changed", + "ai_third_party_sharing_dropbox_base_policy_changed", "allow_download_disabled", "allow_download_enabled", + "apple_login_change_policy", "app_permissions_changed", "camera_uploads_policy_changed", + "capture_team_space_policy_changed", "capture_transcript_policy_changed", "classification_change_policy", "computer_backup_policy_changed", "content_administration_policy_changed", + "content_deletion_protection_change_policy", + "dash_external_sharing_policy_changed", "data_placement_restriction_change_policy", "data_placement_restriction_satisfy_policy", "device_approvals_add_exception", @@ -27552,6 +39253,7 @@ impl<'de> ::serde::de::Deserialize<'de> for EventType { "file_requests_emails_enabled", "file_requests_emails_restricted_to_team_only", "file_transfers_policy_changed", + "flexible_file_names_policy_changed", "folder_link_restriction_policy_changed", "google_sso_change_policy", "group_user_management_change_policy", @@ -27564,6 +39266,7 @@ impl<'de> ::serde::de::Deserialize<'de> for EventType { "member_space_limits_change_policy", "member_space_limits_remove_exception", "member_suggestions_change_policy", + "microsoft_login_change_policy", "microsoft_office_addin_change_policy", "network_control_change_policy", "paper_change_deployment_policy", @@ -27574,11 +39277,18 @@ impl<'de> ::serde::de::Deserialize<'de> for EventType { "paper_desktop_policy_changed", "paper_enabled_users_group_addition", "paper_enabled_users_group_removal", + "passkey_login_policy_changed", "password_strength_requirements_change_policy", "permanent_delete_change_policy", + "previews_ai_policy_changed", + "replay_adding_people_policy_changed", + "replay_sharing_policy_changed", "reseller_support_change_policy", "rewind_policy_changed", + "send_and_track_policy_changed", + "send_external_sharing_policy_changed", "send_for_signature_policy_changed", + "shared_link_default_permissions_policy_changed", "sharing_change_folder_join_policy", "sharing_change_link_allow_change_expiration_policy", "sharing_change_link_default_expiration_policy", @@ -27588,18 +39298,23 @@ impl<'de> ::serde::de::Deserialize<'de> for EventType { "showcase_change_download_policy", "showcase_change_enabled_policy", "showcase_change_external_sharing_policy", + "sign_external_sharing_policy_changed", + "sign_template_creation_permission_changed", "smarter_smart_sync_policy_changed", "smart_sync_change_policy", "smart_sync_not_opt_out", "smart_sync_opt_out", "sso_change_policy", + "stack_cross_team_access_policy_changed", "team_branding_policy_changed", "team_extensions_policy_changed", + "team_member_storage_request_policy_changed", "team_selective_sync_policy_changed", "team_sharing_whitelist_subjects_changed", "tfa_add_exception", "tfa_change_policy", "tfa_remove_exception", + "top_level_content_policy_changed", "two_account_change_policy", "viewer_info_policy_changed", "watermarking_policy_changed", @@ -27618,6 +39333,8 @@ impl<'de> ::serde::de::Deserialize<'de> for EventType { "team_profile_change_name", "team_profile_remove_background", "team_profile_remove_logo", + "passkey_add", + "passkey_remove", "tfa_add_backup_phone", "tfa_add_security_key", "tfa_change_backup_phone", @@ -27800,6 +39517,230 @@ impl ::serde::ser::Serialize for EventType { x.internal_serialize::(&mut s)?; s.end() } + EventType::DashAddedCommentToStack(x) => { + // struct + let mut s = serializer.serialize_struct("EventType", 2)?; + s.serialize_field(".tag", "dash_added_comment_to_stack")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventType::DashAddedConnector(x) => { + // struct + let mut s = serializer.serialize_struct("EventType", 2)?; + s.serialize_field(".tag", "dash_added_connector")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventType::DashAddedLinkToStack(x) => { + // struct + let mut s = serializer.serialize_struct("EventType", 2)?; + s.serialize_field(".tag", "dash_added_link_to_stack")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventType::DashAddedTeamEmailDomainAllowlist(x) => { + // struct + let mut s = serializer.serialize_struct("EventType", 2)?; + s.serialize_field(".tag", "dash_added_team_email_domain_allowlist")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventType::DashAdminAddedOrgWideConnector(x) => { + // struct + let mut s = serializer.serialize_struct("EventType", 2)?; + s.serialize_field(".tag", "dash_admin_added_org_wide_connector")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventType::DashAdminDisabledConnector(x) => { + // struct + let mut s = serializer.serialize_struct("EventType", 2)?; + s.serialize_field(".tag", "dash_admin_disabled_connector")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventType::DashAdminEnabledConnector(x) => { + // struct + let mut s = serializer.serialize_struct("EventType", 2)?; + s.serialize_field(".tag", "dash_admin_enabled_connector")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventType::DashAdminRemovedOrgWideConnector(x) => { + // struct + let mut s = serializer.serialize_struct("EventType", 2)?; + s.serialize_field(".tag", "dash_admin_removed_org_wide_connector")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventType::DashArchivedStack(x) => { + // struct + let mut s = serializer.serialize_struct("EventType", 2)?; + s.serialize_field(".tag", "dash_archived_stack")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventType::DashChangedAudienceOfSharedLinkToStack(x) => { + // struct + let mut s = serializer.serialize_struct("EventType", 2)?; + s.serialize_field(".tag", "dash_changed_audience_of_shared_link_to_stack")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventType::DashClonedStack(x) => { + // struct + let mut s = serializer.serialize_struct("EventType", 2)?; + s.serialize_field(".tag", "dash_cloned_stack")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventType::DashConnectorToolsCall(x) => { + // struct + let mut s = serializer.serialize_struct("EventType", 2)?; + s.serialize_field(".tag", "dash_connector_tools_call")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventType::DashCreatedStack(x) => { + // struct + let mut s = serializer.serialize_struct("EventType", 2)?; + s.serialize_field(".tag", "dash_created_stack")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventType::DashDeletedCommentFromStack(x) => { + // struct + let mut s = serializer.serialize_struct("EventType", 2)?; + s.serialize_field(".tag", "dash_deleted_comment_from_stack")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventType::DashDeletedStack(x) => { + // struct + let mut s = serializer.serialize_struct("EventType", 2)?; + s.serialize_field(".tag", "dash_deleted_stack")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventType::DashEditedCommentInStack(x) => { + // struct + let mut s = serializer.serialize_struct("EventType", 2)?; + s.serialize_field(".tag", "dash_edited_comment_in_stack")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventType::DashExternalUserOpenedStack(x) => { + // struct + let mut s = serializer.serialize_struct("EventType", 2)?; + s.serialize_field(".tag", "dash_external_user_opened_stack")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventType::DashFirstLaunchedDesktop(x) => { + // struct + let mut s = serializer.serialize_struct("EventType", 2)?; + s.serialize_field(".tag", "dash_first_launched_desktop")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventType::DashFirstLaunchedExtension(x) => { + // struct + let mut s = serializer.serialize_struct("EventType", 2)?; + s.serialize_field(".tag", "dash_first_launched_extension")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventType::DashFirstLaunchedWebStartPage(x) => { + // struct + let mut s = serializer.serialize_struct("EventType", 2)?; + s.serialize_field(".tag", "dash_first_launched_web_start_page")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventType::DashOpenedSharedLinkToStack(x) => { + // struct + let mut s = serializer.serialize_struct("EventType", 2)?; + s.serialize_field(".tag", "dash_opened_shared_link_to_stack")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventType::DashOpenedStack(x) => { + // struct + let mut s = serializer.serialize_struct("EventType", 2)?; + s.serialize_field(".tag", "dash_opened_stack")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventType::DashPreviewOptOutStatusChanged(x) => { + // struct + let mut s = serializer.serialize_struct("EventType", 2)?; + s.serialize_field(".tag", "dash_preview_opt_out_status_changed")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventType::DashRemovedConnector(x) => { + // struct + let mut s = serializer.serialize_struct("EventType", 2)?; + s.serialize_field(".tag", "dash_removed_connector")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventType::DashRemovedLinkFromStack(x) => { + // struct + let mut s = serializer.serialize_struct("EventType", 2)?; + s.serialize_field(".tag", "dash_removed_link_from_stack")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventType::DashRemovedSharedLinkToStack(x) => { + // struct + let mut s = serializer.serialize_struct("EventType", 2)?; + s.serialize_field(".tag", "dash_removed_shared_link_to_stack")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventType::DashRemovedTeamEmailDomainAllowlist(x) => { + // struct + let mut s = serializer.serialize_struct("EventType", 2)?; + s.serialize_field(".tag", "dash_removed_team_email_domain_allowlist")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventType::DashRenamedStack(x) => { + // struct + let mut s = serializer.serialize_struct("EventType", 2)?; + s.serialize_field(".tag", "dash_renamed_stack")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventType::DashSharedLinkToStack(x) => { + // struct + let mut s = serializer.serialize_struct("EventType", 2)?; + s.serialize_field(".tag", "dash_shared_link_to_stack")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventType::DashUnarchivedStack(x) => { + // struct + let mut s = serializer.serialize_struct("EventType", 2)?; + s.serialize_field(".tag", "dash_unarchived_stack")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventType::DashViewedCompanyStack(x) => { + // struct + let mut s = serializer.serialize_struct("EventType", 2)?; + s.serialize_field(".tag", "dash_viewed_company_stack")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventType::DashViewedExternalAiActivityReport(x) => { + // struct + let mut s = serializer.serialize_struct("EventType", 2)?; + s.serialize_field(".tag", "dash_viewed_external_ai_activity_report")?; + x.internal_serialize::(&mut s)?; + s.end() + } EventType::GovernancePolicyAddFolders(x) => { // struct let mut s = serializer.serialize_struct("EventType", 2)?; @@ -28178,6 +40119,83 @@ impl ::serde::ser::Serialize for EventType { x.internal_serialize::(&mut s)?; s.end() } + EventType::EncryptedFolderCancelTeamKeyRotation(x) => { + // struct + let mut s = serializer.serialize_struct("EventType", 2)?; + s.serialize_field(".tag", "encrypted_folder_cancel_team_key_rotation")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventType::EncryptedFolderEnrollBackupKey(x) => { + // struct + let mut s = serializer.serialize_struct("EventType", 2)?; + s.serialize_field(".tag", "encrypted_folder_enroll_backup_key")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventType::EncryptedFolderEnrollClient(x) => { + // struct + let mut s = serializer.serialize_struct("EventType", 2)?; + s.serialize_field(".tag", "encrypted_folder_enroll_client")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventType::EncryptedFolderEnrollTeam(x) => { + // struct + let mut s = serializer.serialize_struct("EventType", 2)?; + s.serialize_field(".tag", "encrypted_folder_enroll_team")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventType::EncryptedFolderFinishTeamUnenrollment(x) => { + // struct + let mut s = serializer.serialize_struct("EventType", 2)?; + s.serialize_field(".tag", "encrypted_folder_finish_team_unenrollment")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventType::EncryptedFolderInitTeamKeyRotation(x) => { + // struct + let mut s = serializer.serialize_struct("EventType", 2)?; + s.serialize_field(".tag", "encrypted_folder_init_team_key_rotation")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventType::EncryptedFolderInitTeamUnenrollment(x) => { + // struct + let mut s = serializer.serialize_struct("EventType", 2)?; + s.serialize_field(".tag", "encrypted_folder_init_team_unenrollment")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventType::EncryptedFolderRemoveBackupKey(x) => { + // struct + let mut s = serializer.serialize_struct("EventType", 2)?; + s.serialize_field(".tag", "encrypted_folder_remove_backup_key")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventType::EncryptedFolderRotateTeamKey(x) => { + // struct + let mut s = serializer.serialize_struct("EventType", 2)?; + s.serialize_field(".tag", "encrypted_folder_rotate_team_key")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventType::EncryptedFolderUnenrollClient(x) => { + // struct + let mut s = serializer.serialize_struct("EventType", 2)?; + s.serialize_field(".tag", "encrypted_folder_unenroll_client")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventType::TeamEncryptionKeyActivateKey(x) => { + // struct + let mut s = serializer.serialize_struct("EventType", 2)?; + s.serialize_field(".tag", "team_encryption_key_activate_key")?; + x.internal_serialize::(&mut s)?; + s.end() + } EventType::TeamEncryptionKeyCancelKeyDeletion(x) => { // struct let mut s = serializer.serialize_struct("EventType", 2)?; @@ -28192,6 +40210,13 @@ impl ::serde::ser::Serialize for EventType { x.internal_serialize::(&mut s)?; s.end() } + EventType::TeamEncryptionKeyDeactivateKey(x) => { + // struct + let mut s = serializer.serialize_struct("EventType", 2)?; + s.serialize_field(".tag", "team_encryption_key_deactivate_key")?; + x.internal_serialize::(&mut s)?; + s.end() + } EventType::TeamEncryptionKeyDeleteKey(x) => { // struct let mut s = serializer.serialize_struct("EventType", 2)?; @@ -28409,6 +40434,20 @@ impl ::serde::ser::Serialize for EventType { x.internal_serialize::(&mut s)?; s.end() } + EventType::ReplayFileDownloaded(x) => { + // struct + let mut s = serializer.serialize_struct("EventType", 2)?; + s.serialize_field(".tag", "replay_file_downloaded")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventType::ReplayTeamProjectCreated(x) => { + // struct + let mut s = serializer.serialize_struct("EventType", 2)?; + s.serialize_field(".tag", "replay_team_project_created")?; + x.internal_serialize::(&mut s)?; + s.end() + } EventType::RewindFolder(x) => { // struct let mut s = serializer.serialize_struct("EventType", 2)?; @@ -28451,6 +40490,13 @@ impl ::serde::ser::Serialize for EventType { x.internal_serialize::(&mut s)?; s.end() } + EventType::FileRequestAutoClose(x) => { + // struct + let mut s = serializer.serialize_struct("EventType", 2)?; + s.serialize_field(".tag", "file_request_auto_close")?; + x.internal_serialize::(&mut s)?; + s.end() + } EventType::FileRequestChange(x) => { // struct let mut s = serializer.serialize_struct("EventType", 2)?; @@ -28542,6 +40588,13 @@ impl ::serde::ser::Serialize for EventType { x.internal_serialize::(&mut s)?; s.end() } + EventType::GroupExternalSharingSettingOverrideChanged(x) => { + // struct + let mut s = serializer.serialize_struct("EventType", 2)?; + s.serialize_field(".tag", "group_external_sharing_setting_override_changed")?; + x.internal_serialize::(&mut s)?; + s.end() + } EventType::GroupJoinPolicyUpdated(x) => { // struct let mut s = serializer.serialize_struct("EventType", 2)?; @@ -28661,6 +40714,20 @@ impl ::serde::ser::Serialize for EventType { x.internal_serialize::(&mut s)?; s.end() } + EventType::AddonAssigned(x) => { + // struct + let mut s = serializer.serialize_struct("EventType", 2)?; + s.serialize_field(".tag", "addon_assigned")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventType::AddonRemoved(x) => { + // struct + let mut s = serializer.serialize_struct("EventType", 2)?; + s.serialize_field(".tag", "addon_removed")?; + x.internal_serialize::(&mut s)?; + s.end() + } EventType::BackupAdminInvitationSent(x) => { // struct let mut s = serializer.serialize_struct("EventType", 2)?; @@ -28836,6 +40903,20 @@ impl ::serde::ser::Serialize for EventType { x.internal_serialize::(&mut s)?; s.end() } + EventType::ProductAssignedToMember(x) => { + // struct + let mut s = serializer.serialize_struct("EventType", 2)?; + s.serialize_field(".tag", "product_assigned_to_member")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventType::ProductRemovedFromMember(x) => { + // struct + let mut s = serializer.serialize_struct("EventType", 2)?; + s.serialize_field(".tag", "product_removed_from_member")?; + x.internal_serialize::(&mut s)?; + s.end() + } EventType::SecondaryEmailDeleted(x) => { // struct let mut s = serializer.serialize_struct("EventType", 2)?; @@ -29277,6 +41358,20 @@ impl ::serde::ser::Serialize for EventType { x.internal_serialize::(&mut s)?; s.end() } + EventType::MemberAccessDetailsCreateReport(x) => { + // struct + let mut s = serializer.serialize_struct("EventType", 2)?; + s.serialize_field(".tag", "member_access_details_create_report")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventType::MemberAccessDetailsCreateReportFailed(x) => { + // struct + let mut s = serializer.serialize_struct("EventType", 2)?; + s.serialize_field(".tag", "member_access_details_create_report_failed")?; + x.internal_serialize::(&mut s)?; + s.end() + } EventType::NoExpirationLinkGenCreateReport(x) => { // struct let mut s = serializer.serialize_struct("EventType", 2)?; @@ -29354,6 +41449,20 @@ impl ::serde::ser::Serialize for EventType { x.internal_serialize::(&mut s)?; s.end() } + EventType::SharedFoldersCreateReport(x) => { + // struct + let mut s = serializer.serialize_struct("EventType", 2)?; + s.serialize_field(".tag", "shared_folders_create_report")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventType::SharedFoldersCreateReportFailed(x) => { + // struct + let mut s = serializer.serialize_struct("EventType", 2)?; + s.serialize_field(".tag", "shared_folders_create_report_failed")?; + x.internal_serialize::(&mut s)?; + s.end() + } EventType::SmartSyncCreateAdminPrivilegeReport(x) => { // struct let mut s = serializer.serialize_struct("EventType", 2)?; @@ -29375,6 +41484,34 @@ impl ::serde::ser::Serialize for EventType { x.internal_serialize::(&mut s)?; s.end() } + EventType::TeamFoldersCreateReport(x) => { + // struct + let mut s = serializer.serialize_struct("EventType", 2)?; + s.serialize_field(".tag", "team_folders_create_report")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventType::TeamFoldersCreateReportFailed(x) => { + // struct + let mut s = serializer.serialize_struct("EventType", 2)?; + s.serialize_field(".tag", "team_folders_create_report_failed")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventType::TeamStorageCreateReport(x) => { + // struct + let mut s = serializer.serialize_struct("EventType", 2)?; + s.serialize_field(".tag", "team_storage_create_report")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventType::TeamStorageCreateReportFailed(x) => { + // struct + let mut s = serializer.serialize_struct("EventType", 2)?; + s.serialize_field(".tag", "team_storage_create_report_failed")?; + x.internal_serialize::(&mut s)?; + s.end() + } EventType::CollectionShare(x) => { // struct let mut s = serializer.serialize_struct("EventType", 2)?; @@ -29487,6 +41624,62 @@ impl ::serde::ser::Serialize for EventType { x.internal_serialize::(&mut s)?; s.end() } + EventType::SendAndTrackFileAdded(x) => { + // struct + let mut s = serializer.serialize_struct("EventType", 2)?; + s.serialize_field(".tag", "send_and_track_file_added")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventType::SendAndTrackFileRenamed(x) => { + // struct + let mut s = serializer.serialize_struct("EventType", 2)?; + s.serialize_field(".tag", "send_and_track_file_renamed")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventType::SendAndTrackFileUpdated(x) => { + // struct + let mut s = serializer.serialize_struct("EventType", 2)?; + s.serialize_field(".tag", "send_and_track_file_updated")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventType::SendAndTrackLinkCreated(x) => { + // struct + let mut s = serializer.serialize_struct("EventType", 2)?; + s.serialize_field(".tag", "send_and_track_link_created")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventType::SendAndTrackLinkDeleted(x) => { + // struct + let mut s = serializer.serialize_struct("EventType", 2)?; + s.serialize_field(".tag", "send_and_track_link_deleted")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventType::SendAndTrackLinkUpdated(x) => { + // struct + let mut s = serializer.serialize_struct("EventType", 2)?; + s.serialize_field(".tag", "send_and_track_link_updated")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventType::SendAndTrackLinkViewed(x) => { + // struct + let mut s = serializer.serialize_struct("EventType", 2)?; + s.serialize_field(".tag", "send_and_track_link_viewed")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventType::SendAndTrackRemovedFileAndAssociatedLinks(x) => { + // struct + let mut s = serializer.serialize_struct("EventType", 2)?; + s.serialize_field(".tag", "send_and_track_removed_file_and_associated_links")?; + x.internal_serialize::(&mut s)?; + s.end() + } EventType::SfAddGroup(x) => { // struct let mut s = serializer.serialize_struct("EventType", 2)?; @@ -29872,6 +42065,13 @@ impl ::serde::ser::Serialize for EventType { x.internal_serialize::(&mut s)?; s.end() } + EventType::SharedLinkRemoveVisitor(x) => { + // struct + let mut s = serializer.serialize_struct("EventType", 2)?; + s.serialize_field(".tag", "shared_link_remove_visitor")?; + x.internal_serialize::(&mut s)?; + s.end() + } EventType::SharedLinkSettingsAddExpiration(x) => { // struct let mut s = serializer.serialize_struct("EventType", 2)?; @@ -30145,6 +42345,69 @@ impl ::serde::ser::Serialize for EventType { x.internal_serialize::(&mut s)?; s.end() } + EventType::SignSignatureRequestCanceled(x) => { + // struct + let mut s = serializer.serialize_struct("EventType", 2)?; + s.serialize_field(".tag", "sign_signature_request_canceled")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventType::SignSignatureRequestCompleted(x) => { + // struct + let mut s = serializer.serialize_struct("EventType", 2)?; + s.serialize_field(".tag", "sign_signature_request_completed")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventType::SignSignatureRequestDeclined(x) => { + // struct + let mut s = serializer.serialize_struct("EventType", 2)?; + s.serialize_field(".tag", "sign_signature_request_declined")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventType::SignSignatureRequestOpened(x) => { + // struct + let mut s = serializer.serialize_struct("EventType", 2)?; + s.serialize_field(".tag", "sign_signature_request_opened")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventType::SignSignatureRequestReminderSent(x) => { + // struct + let mut s = serializer.serialize_struct("EventType", 2)?; + s.serialize_field(".tag", "sign_signature_request_reminder_sent")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventType::SignSignatureRequestSent(x) => { + // struct + let mut s = serializer.serialize_struct("EventType", 2)?; + s.serialize_field(".tag", "sign_signature_request_sent")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventType::SignTemplateCreated(x) => { + // struct + let mut s = serializer.serialize_struct("EventType", 2)?; + s.serialize_field(".tag", "sign_template_created")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventType::SignTemplateShared(x) => { + // struct + let mut s = serializer.serialize_struct("EventType", 2)?; + s.serialize_field(".tag", "sign_template_shared")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventType::RiscSecurityEvent(x) => { + // struct + let mut s = serializer.serialize_struct("EventType", 2)?; + s.serialize_field(".tag", "risc_security_event")?; + x.internal_serialize::(&mut s)?; + s.end() + } EventType::SsoAddCert(x) => { // struct let mut s = serializer.serialize_struct("EventType", 2)?; @@ -30271,6 +42534,13 @@ impl ::serde::ser::Serialize for EventType { x.internal_serialize::(&mut s)?; s.end() } + EventType::AiThirdPartySharingDropboxBasePolicyChanged(x) => { + // struct + let mut s = serializer.serialize_struct("EventType", 2)?; + s.serialize_field(".tag", "ai_third_party_sharing_dropbox_base_policy_changed")?; + x.internal_serialize::(&mut s)?; + s.end() + } EventType::AllowDownloadDisabled(x) => { // struct let mut s = serializer.serialize_struct("EventType", 2)?; @@ -30285,6 +42555,13 @@ impl ::serde::ser::Serialize for EventType { x.internal_serialize::(&mut s)?; s.end() } + EventType::AppleLoginChangePolicy(x) => { + // struct + let mut s = serializer.serialize_struct("EventType", 2)?; + s.serialize_field(".tag", "apple_login_change_policy")?; + x.internal_serialize::(&mut s)?; + s.end() + } EventType::AppPermissionsChanged(x) => { // struct let mut s = serializer.serialize_struct("EventType", 2)?; @@ -30299,6 +42576,13 @@ impl ::serde::ser::Serialize for EventType { x.internal_serialize::(&mut s)?; s.end() } + EventType::CaptureTeamSpacePolicyChanged(x) => { + // struct + let mut s = serializer.serialize_struct("EventType", 2)?; + s.serialize_field(".tag", "capture_team_space_policy_changed")?; + x.internal_serialize::(&mut s)?; + s.end() + } EventType::CaptureTranscriptPolicyChanged(x) => { // struct let mut s = serializer.serialize_struct("EventType", 2)?; @@ -30327,6 +42611,20 @@ impl ::serde::ser::Serialize for EventType { x.internal_serialize::(&mut s)?; s.end() } + EventType::ContentDeletionProtectionChangePolicy(x) => { + // struct + let mut s = serializer.serialize_struct("EventType", 2)?; + s.serialize_field(".tag", "content_deletion_protection_change_policy")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventType::DashExternalSharingPolicyChanged(x) => { + // struct + let mut s = serializer.serialize_struct("EventType", 2)?; + s.serialize_field(".tag", "dash_external_sharing_policy_changed")?; + x.internal_serialize::(&mut s)?; + s.end() + } EventType::DataPlacementRestrictionChangePolicy(x) => { // struct let mut s = serializer.serialize_struct("EventType", 2)?; @@ -30495,6 +42793,13 @@ impl ::serde::ser::Serialize for EventType { x.internal_serialize::(&mut s)?; s.end() } + EventType::FlexibleFileNamesPolicyChanged(x) => { + // struct + let mut s = serializer.serialize_struct("EventType", 2)?; + s.serialize_field(".tag", "flexible_file_names_policy_changed")?; + x.internal_serialize::(&mut s)?; + s.end() + } EventType::FolderLinkRestrictionPolicyChanged(x) => { // struct let mut s = serializer.serialize_struct("EventType", 2)?; @@ -30579,6 +42884,13 @@ impl ::serde::ser::Serialize for EventType { x.internal_serialize::(&mut s)?; s.end() } + EventType::MicrosoftLoginChangePolicy(x) => { + // struct + let mut s = serializer.serialize_struct("EventType", 2)?; + s.serialize_field(".tag", "microsoft_login_change_policy")?; + x.internal_serialize::(&mut s)?; + s.end() + } EventType::MicrosoftOfficeAddinChangePolicy(x) => { // struct let mut s = serializer.serialize_struct("EventType", 2)?; @@ -30649,6 +42961,13 @@ impl ::serde::ser::Serialize for EventType { x.internal_serialize::(&mut s)?; s.end() } + EventType::PasskeyLoginPolicyChanged(x) => { + // struct + let mut s = serializer.serialize_struct("EventType", 2)?; + s.serialize_field(".tag", "passkey_login_policy_changed")?; + x.internal_serialize::(&mut s)?; + s.end() + } EventType::PasswordStrengthRequirementsChangePolicy(x) => { // struct let mut s = serializer.serialize_struct("EventType", 2)?; @@ -30663,6 +42982,27 @@ impl ::serde::ser::Serialize for EventType { x.internal_serialize::(&mut s)?; s.end() } + EventType::PreviewsAiPolicyChanged(x) => { + // struct + let mut s = serializer.serialize_struct("EventType", 2)?; + s.serialize_field(".tag", "previews_ai_policy_changed")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventType::ReplayAddingPeoplePolicyChanged(x) => { + // struct + let mut s = serializer.serialize_struct("EventType", 2)?; + s.serialize_field(".tag", "replay_adding_people_policy_changed")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventType::ReplaySharingPolicyChanged(x) => { + // struct + let mut s = serializer.serialize_struct("EventType", 2)?; + s.serialize_field(".tag", "replay_sharing_policy_changed")?; + x.internal_serialize::(&mut s)?; + s.end() + } EventType::ResellerSupportChangePolicy(x) => { // struct let mut s = serializer.serialize_struct("EventType", 2)?; @@ -30677,6 +43017,20 @@ impl ::serde::ser::Serialize for EventType { x.internal_serialize::(&mut s)?; s.end() } + EventType::SendAndTrackPolicyChanged(x) => { + // struct + let mut s = serializer.serialize_struct("EventType", 2)?; + s.serialize_field(".tag", "send_and_track_policy_changed")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventType::SendExternalSharingPolicyChanged(x) => { + // struct + let mut s = serializer.serialize_struct("EventType", 2)?; + s.serialize_field(".tag", "send_external_sharing_policy_changed")?; + x.internal_serialize::(&mut s)?; + s.end() + } EventType::SendForSignaturePolicyChanged(x) => { // struct let mut s = serializer.serialize_struct("EventType", 2)?; @@ -30684,6 +43038,13 @@ impl ::serde::ser::Serialize for EventType { x.internal_serialize::(&mut s)?; s.end() } + EventType::SharedLinkDefaultPermissionsPolicyChanged(x) => { + // struct + let mut s = serializer.serialize_struct("EventType", 2)?; + s.serialize_field(".tag", "shared_link_default_permissions_policy_changed")?; + x.internal_serialize::(&mut s)?; + s.end() + } EventType::SharingChangeFolderJoinPolicy(x) => { // struct let mut s = serializer.serialize_struct("EventType", 2)?; @@ -30747,6 +43108,20 @@ impl ::serde::ser::Serialize for EventType { x.internal_serialize::(&mut s)?; s.end() } + EventType::SignExternalSharingPolicyChanged(x) => { + // struct + let mut s = serializer.serialize_struct("EventType", 2)?; + s.serialize_field(".tag", "sign_external_sharing_policy_changed")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventType::SignTemplateCreationPermissionChanged(x) => { + // struct + let mut s = serializer.serialize_struct("EventType", 2)?; + s.serialize_field(".tag", "sign_template_creation_permission_changed")?; + x.internal_serialize::(&mut s)?; + s.end() + } EventType::SmarterSmartSyncPolicyChanged(x) => { // struct let mut s = serializer.serialize_struct("EventType", 2)?; @@ -30782,6 +43157,13 @@ impl ::serde::ser::Serialize for EventType { x.internal_serialize::(&mut s)?; s.end() } + EventType::StackCrossTeamAccessPolicyChanged(x) => { + // struct + let mut s = serializer.serialize_struct("EventType", 2)?; + s.serialize_field(".tag", "stack_cross_team_access_policy_changed")?; + x.internal_serialize::(&mut s)?; + s.end() + } EventType::TeamBrandingPolicyChanged(x) => { // struct let mut s = serializer.serialize_struct("EventType", 2)?; @@ -30796,6 +43178,13 @@ impl ::serde::ser::Serialize for EventType { x.internal_serialize::(&mut s)?; s.end() } + EventType::TeamMemberStorageRequestPolicyChanged(x) => { + // struct + let mut s = serializer.serialize_struct("EventType", 2)?; + s.serialize_field(".tag", "team_member_storage_request_policy_changed")?; + x.internal_serialize::(&mut s)?; + s.end() + } EventType::TeamSelectiveSyncPolicyChanged(x) => { // struct let mut s = serializer.serialize_struct("EventType", 2)?; @@ -30831,6 +43220,13 @@ impl ::serde::ser::Serialize for EventType { x.internal_serialize::(&mut s)?; s.end() } + EventType::TopLevelContentPolicyChanged(x) => { + // struct + let mut s = serializer.serialize_struct("EventType", 2)?; + s.serialize_field(".tag", "top_level_content_policy_changed")?; + x.internal_serialize::(&mut s)?; + s.end() + } EventType::TwoAccountChangePolicy(x) => { // struct let mut s = serializer.serialize_struct("EventType", 2)?; @@ -30957,6 +43353,20 @@ impl ::serde::ser::Serialize for EventType { x.internal_serialize::(&mut s)?; s.end() } + EventType::PasskeyAdd(x) => { + // struct + let mut s = serializer.serialize_struct("EventType", 2)?; + s.serialize_field(".tag", "passkey_add")?; + x.internal_serialize::(&mut s)?; + s.end() + } + EventType::PasskeyRemove(x) => { + // struct + let mut s = serializer.serialize_struct("EventType", 2)?; + s.serialize_field(".tag", "passkey_remove")?; + x.internal_serialize::(&mut s)?; + s.end() + } EventType::TfaAddBackupPhone(x) => { // struct let mut s = serializer.serialize_struct("EventType", 2)?; @@ -31230,6 +43640,70 @@ pub enum EventTypeArg { FileUnlikeComment, /// (comments) Unresolved file comment FileUnresolveComment, + /// (dash) Added a comment to a stack + DashAddedCommentToStack, + /// (dash) Connected to a user connector + DashAddedConnector, + /// (dash) Added a link to a stack + DashAddedLinkToStack, + /// (dash) Admin added an email domain to the team allowlist + DashAddedTeamEmailDomainAllowlist, + /// (dash) Admin added an admin connector + DashAdminAddedOrgWideConnector, + /// (dash) Admin disabled a user connector + DashAdminDisabledConnector, + /// (dash) Admin enabled a user connector + DashAdminEnabledConnector, + /// (dash) Admin removed an admin connector + DashAdminRemovedOrgWideConnector, + /// (dash) Archived a stack + DashArchivedStack, + /// (dash) Changed the audience of a shared link to a stack + DashChangedAudienceOfSharedLinkToStack, + /// (dash) Cloned stack + DashClonedStack, + /// (dash) Called a tool on a connector + DashConnectorToolsCall, + /// (dash) Created a stack + DashCreatedStack, + /// (dash) Deleted a comment from a stack + DashDeletedCommentFromStack, + /// (dash) Deleted a stack + DashDeletedStack, + /// (dash) Edited a comment in a stack + DashEditedCommentInStack, + /// (dash) External user opened a stack + DashExternalUserOpenedStack, + /// (dash) Opened the desktop app for the first time + DashFirstLaunchedDesktop, + /// (dash) Opened the extension for the first time + DashFirstLaunchedExtension, + /// (dash) Opened the web Start Page for the first time + DashFirstLaunchedWebStartPage, + /// (dash) Checked access permissions to a stack + DashOpenedSharedLinkToStack, + /// (dash) Opened a stack + DashOpenedStack, + /// (dash) Changed the preview opt-out status + DashPreviewOptOutStatusChanged, + /// (dash) Disconnected a user connector + DashRemovedConnector, + /// (dash) Removed a link from a stack + DashRemovedLinkFromStack, + /// (dash) Removed a shared link to a stack + DashRemovedSharedLinkToStack, + /// (dash) Admin removed an email domain from the team allowlist + DashRemovedTeamEmailDomainAllowlist, + /// (dash) Renamed a stack + DashRenamedStack, + /// (dash) Shared a link to a stack + DashSharedLinkToStack, + /// (dash) Unarchived a stack + DashUnarchivedStack, + /// (dash) Member viewed a company stack + DashViewedCompanyStack, + /// (dash) Admin viewed the external AI activity report + DashViewedExternalAiActivityReport, /// (data_governance) Added folders to policy GovernancePolicyAddFolders, /// (data_governance) Couldn't add a folder to a policy @@ -31338,10 +43812,34 @@ pub enum EventTypeArg { DomainVerificationRemoveDomain, /// (domains) Enabled domain invites (deprecated, no longer logged) EnabledDomainInvites, + /// (encryption) Canceled team key rotation + EncryptedFolderCancelTeamKeyRotation, + /// (encryption) Added recovery key + EncryptedFolderEnrollBackupKey, + /// (encryption) Enrolled device + EncryptedFolderEnrollClient, + /// (encryption) Activated team folder encryption + EncryptedFolderEnrollTeam, + /// (encryption) Deactivated team folder encryption + EncryptedFolderFinishTeamUnenrollment, + /// (encryption) Initiated team key rotation + EncryptedFolderInitTeamKeyRotation, + /// (encryption) Initiated deactivation of team folder encryption + EncryptedFolderInitTeamUnenrollment, + /// (encryption) Removed recovery key + EncryptedFolderRemoveBackupKey, + /// (encryption) Rotated team key + EncryptedFolderRotateTeamKey, + /// (encryption) Unenrolled device + EncryptedFolderUnenrollClient, + /// (encryption) Activated team encryption key + TeamEncryptionKeyActivateKey, /// (encryption) Canceled team encryption key deletion TeamEncryptionKeyCancelKeyDeletion, /// (encryption) Created team encryption key TeamEncryptionKeyCreateKey, + /// (encryption) Deactivated team encryption key + TeamEncryptionKeyDeactivateKey, /// (encryption) Deleted team encryption key TeamEncryptionKeyDeleteKey, /// (encryption) Disabled team encryption key @@ -31404,6 +43902,10 @@ pub enum EventTypeArg { OrganizeFolderWithTidy, /// (file_operations) Deleted files in Replay ReplayFileDelete, + /// (file_operations) Downloaded files in Replay + ReplayFileDownloaded, + /// (file_operations) Created a team project in Replay + ReplayTeamProjectCreated, /// (file_operations) Rewound a folder RewindFolder, /// (file_operations) Reverted naming convention @@ -31416,6 +43918,8 @@ pub enum EventTypeArg { UserTagsRemoved, /// (file_requests) Received files via Email to Dropbox EmailIngestReceiveFile, + /// (file_requests) Auto closed file request + FileRequestAutoClose, /// (file_requests) Changed file request FileRequestChange, /// (file_requests) Closed file request @@ -31442,6 +43946,8 @@ pub enum EventTypeArg { GroupDelete, /// (groups) Updated group (deprecated, no longer logged) GroupDescriptionUpdated, + /// (groups) Changed group's external sharing setting + GroupExternalSharingSettingOverrideChanged, /// (groups) Updated group join policy (deprecated, no longer logged) GroupJoinPolicyUpdated, /// (groups) Moved group (deprecated, no longer logged) @@ -31476,6 +43982,10 @@ pub enum EventTypeArg { SignInAsSessionStart, /// (logins) Failed to sign in via SSO (deprecated, replaced by 'Failed to sign in') SsoError, + /// (members) Add-on Assigned + AddonAssigned, + /// (members) Add-on Removed + AddonRemoved, /// (members) Invited members to activate Backup BackupAdminInvitationSent, /// (members) Opened Backup invite @@ -31526,6 +44036,10 @@ pub enum EventTypeArg { MemberTransferAccountContents, /// (members) Added pending secondary email PendingSecondaryEmailAdded, + /// (members) Product assigned to team member + ProductAssignedToMember, + /// (members) Product removed from team member + ProductRemovedFromMember, /// (members) Deleted secondary email SecondaryEmailDeleted, /// (members) Verified secondary email @@ -31653,6 +44167,10 @@ pub enum EventTypeArg { ExternalSharingCreateReport, /// (reports) Couldn't create External sharing report ExternalSharingReportFailed, + /// (reports) Created member access report + MemberAccessDetailsCreateReport, + /// (reports) Couldn't generate member access report + MemberAccessDetailsCreateReportFailed, /// (reports) Report created: Links created with no expiration NoExpirationLinkGenCreateReport, /// (reports) Couldn't create report: Links created with no expiration @@ -31675,12 +44193,24 @@ pub enum EventTypeArg { RansomwareAlertCreateReport, /// (reports) Couldn't generate ransomware report RansomwareAlertCreateReportFailed, + /// (reports) Created shared folders report + SharedFoldersCreateReport, + /// (reports) Couldn't generate shared folders report + SharedFoldersCreateReportFailed, /// (reports) Created Smart Sync non-admin devices report SmartSyncCreateAdminPrivilegeReport, /// (reports) Created team activity report TeamActivityCreateReport, /// (reports) Couldn't generate team activity report TeamActivityCreateReportFail, + /// (reports) Created team folders report + TeamFoldersCreateReport, + /// (reports) Couldn't generate team folders report + TeamFoldersCreateReportFailed, + /// (reports) Created team storage report + TeamStorageCreateReport, + /// (reports) Couldn't generate team storage report + TeamStorageCreateReportFailed, /// (sharing) Shared album CollectionShare, /// (sharing) Transfer files added @@ -31707,12 +44237,28 @@ pub enum EventTypeArg { OpenNoteShared, /// (sharing) Created shared link in Replay ReplayFileSharedLinkCreated, - /// (sharing) Modified shared link in Replay + /// (sharing) Changed shared link in Replay ReplayFileSharedLinkModified, /// (sharing) Added member to Replay Project ReplayProjectTeamAdd, /// (sharing) Removed member from Replay Project ReplayProjectTeamDelete, + /// (sharing) File added to Send and Track + SendAndTrackFileAdded, + /// (sharing) File renamed in Send and Track + SendAndTrackFileRenamed, + /// (sharing) File updated in Send and Track + SendAndTrackFileUpdated, + /// (sharing) Link created in Send and Track + SendAndTrackLinkCreated, + /// (sharing) Link deleted in Send and Track + SendAndTrackLinkDeleted, + /// (sharing) Send and Track Link Updated + SendAndTrackLinkUpdated, + /// (sharing) Send and Track Link Visited + SendAndTrackLinkViewed, + /// (sharing) Send and Track file and associated links deleted + SendAndTrackRemovedFileAndAssociatedLinks, /// (sharing) Added team to shared folder (deprecated, no longer logged) SfAddGroup, /// (sharing) Allowed non-collaborators to view links to files in shared folder (deprecated, no @@ -31829,6 +44375,8 @@ pub enum EventTypeArg { SharedLinkDownload, /// (sharing) Removed shared link expiration date SharedLinkRemoveExpiry, + /// (sharing) Removed link visitor + SharedLinkRemoveVisitor, /// (sharing) Added an expiration date to the shared link SharedLinkSettingsAddExpiration, /// (sharing) Added a password to the shared link @@ -31907,6 +44455,24 @@ pub enum EventTypeArg { ShowcaseUntrashedDeprecated, /// (showcase) Viewed showcase ShowcaseView, + /// (signatures) Canceled signature request + SignSignatureRequestCanceled, + /// (signatures) Completed signature request + SignSignatureRequestCompleted, + /// (signatures) Declined signature request + SignSignatureRequestDeclined, + /// (signatures) Opened signature request + SignSignatureRequestOpened, + /// (signatures) Sent signature request reminder + SignSignatureRequestReminderSent, + /// (signatures) Sent signature request + SignSignatureRequestSent, + /// (signatures) Created template + SignTemplateCreated, + /// (signatures) Shared template + SignTemplateShared, + /// (sso) RISC security event received from external provider + RiscSecurityEvent, /// (sso) Added X.509 certificate for SSO SsoAddCert, /// (sso) Added sign-in URL for SSO @@ -31943,14 +44509,20 @@ pub enum EventTypeArg { AccountCaptureChangePolicy, /// (team_policies) Changed admin reminder settings for requests to join the team AdminEmailRemindersChanged, + /// (team_policies) Changed AI third party sharing policy for team + AiThirdPartySharingDropboxBasePolicyChanged, /// (team_policies) Disabled downloads (deprecated, no longer logged) AllowDownloadDisabled, /// (team_policies) Enabled downloads (deprecated, no longer logged) AllowDownloadEnabled, + /// (team_policies) Enabled/disabled Apple login for team + AppleLoginChangePolicy, /// (team_policies) Changed app permissions AppPermissionsChanged, /// (team_policies) Changed camera uploads setting for team CameraUploadsPolicyChanged, + /// (team_policies) Changed Capture team space policy for team + CaptureTeamSpacePolicyChanged, /// (team_policies) Changed Capture transcription policy for team CaptureTranscriptPolicyChanged, /// (team_policies) Changed classification policy for team @@ -31959,6 +44531,10 @@ pub enum EventTypeArg { ComputerBackupPolicyChanged, /// (team_policies) Changed content management setting ContentAdministrationPolicyChanged, + /// (team_policies) Changed content deletion protection policy for team + ContentDeletionProtectionChangePolicy, + /// (team_policies) Changed Dash external sharing policy for team + DashExternalSharingPolicyChanged, /// (team_policies) Set restrictions on data center locations where team data resides DataPlacementRestrictionChangePolicy, /// (team_policies) Completed restrictions on data center locations where team data resides @@ -32009,6 +44585,8 @@ pub enum EventTypeArg { FileRequestsEmailsRestrictedToTeamOnly, /// (team_policies) Changed file transfers policy for team FileTransfersPolicyChanged, + /// (team_policies) Changed flexible file names policy for team + FlexibleFileNamesPolicyChanged, /// (team_policies) Changed folder link restrictions policy for team FolderLinkRestrictionPolicyChanged, /// (team_policies) Enabled/disabled Google single sign-on for team @@ -32033,6 +44611,8 @@ pub enum EventTypeArg { MemberSpaceLimitsRemoveException, /// (team_policies) Enabled/disabled option for team members to suggest people to add to team MemberSuggestionsChangePolicy, + /// (team_policies) Enabled/disabled Microsoft login for team + MicrosoftLoginChangePolicy, /// (team_policies) Enabled/disabled Microsoft Office add-in MicrosoftOfficeAddinChangePolicy, /// (team_policies) Enabled/disabled network control @@ -32056,16 +44636,30 @@ pub enum EventTypeArg { PaperEnabledUsersGroupAddition, /// (team_policies) Removed users from Paper-enabled users list PaperEnabledUsersGroupRemoval, + /// (team_policies) Changed passkey login policy for team + PasskeyLoginPolicyChanged, /// (team_policies) Changed team password strength requirements PasswordStrengthRequirementsChangePolicy, /// (team_policies) Enabled/disabled ability of team members to permanently delete content PermanentDeleteChangePolicy, + /// (team_policies) Changed Dropbox AI policy for team + PreviewsAiPolicyChanged, + /// (team_policies) Changed the policy for adding people to Replay content + ReplayAddingPeoplePolicyChanged, + /// (team_policies) Changed the policy for sharing Replay content + ReplaySharingPolicyChanged, /// (team_policies) Enabled/disabled reseller support ResellerSupportChangePolicy, /// (team_policies) Changed Rewind policy for team RewindPolicyChanged, + /// (team_policies) Changed “Send and track” policy for team + SendAndTrackPolicyChanged, + /// (team_policies) Changed “Send and track” external sharing policy for team + SendExternalSharingPolicyChanged, /// (team_policies) Changed send for signature policy for team SendForSignaturePolicyChanged, + /// (team_policies) Changed shared link default permissions policy for team + SharedLinkDefaultPermissionsPolicyChanged, /// (team_policies) Changed whether team members can join shared folders owned outside team SharingChangeFolderJoinPolicy, /// (team_policies) Changed the allow remove or change expiration policy for the links shared @@ -32086,6 +44680,10 @@ pub enum EventTypeArg { ShowcaseChangeEnabledPolicy, /// (team_policies) Enabled/disabled sharing Dropbox Showcase externally for team ShowcaseChangeExternalSharingPolicy, + /// (team_policies) Changed Signatures external sharing policy for team + SignExternalSharingPolicyChanged, + /// (team_policies) Changed template creation permission + SignTemplateCreationPermissionChanged, /// (team_policies) Changed automatic Smart Sync setting for team SmarterSmartSyncPolicyChanged, /// (team_policies) Changed default Smart Sync setting for team members @@ -32096,20 +44694,26 @@ pub enum EventTypeArg { SmartSyncOptOut, /// (team_policies) Changed single sign-on setting for team SsoChangePolicy, + /// (team_policies) Changed cross-team Stack access policy for team + StackCrossTeamAccessPolicyChanged, /// (team_policies) Changed team branding policy for team TeamBrandingPolicyChanged, /// (team_policies) Changed App Integrations setting for team TeamExtensionsPolicyChanged, + /// (team_policies) Changed team member storage request policy for team + TeamMemberStorageRequestPolicyChanged, /// (team_policies) Enabled/disabled Team Selective Sync for team TeamSelectiveSyncPolicyChanged, /// (team_policies) Edited the approved list for sharing externally TeamSharingWhitelistSubjectsChanged, /// (team_policies) Added members to two factor authentication exception list TfaAddException, - /// (team_policies) Changed two-step verification setting for team + /// (team_policies) Changed two-factor authentication setting for team TfaChangePolicy, /// (team_policies) Removed members from two factor authentication exception list TfaRemoveException, + /// (team_policies) Changed top level content setting for team + TopLevelContentPolicyChanged, /// (team_policies) Enabled/disabled option for members to link personal Dropbox account and /// team account to same computer TwoAccountChangePolicy, @@ -32147,19 +44751,23 @@ pub enum EventTypeArg { TeamProfileRemoveBackground, /// (team_profile) Removed team logo displayed on shared link headers TeamProfileRemoveLogo, - /// (tfa) Added backup phone for two-step verification + /// (tfa) Added passkey for login + PasskeyAdd, + /// (tfa) Removed passkey for login + PasskeyRemove, + /// (tfa) Added backup phone for two-factor authentication TfaAddBackupPhone, - /// (tfa) Added security key for two-step verification + /// (tfa) Added security key for two-factor authentication TfaAddSecurityKey, - /// (tfa) Changed backup phone for two-step verification + /// (tfa) Changed backup phone for two-factor authentication TfaChangeBackupPhone, - /// (tfa) Enabled/disabled/changed two-step verification setting + /// (tfa) Enabled/disabled/changed two-factor authentication setting TfaChangeStatus, - /// (tfa) Removed backup phone for two-step verification + /// (tfa) Removed backup phone for two-factor authentication TfaRemoveBackupPhone, - /// (tfa) Removed security key for two-step verification + /// (tfa) Removed security key for two-factor authentication TfaRemoveSecurityKey, - /// (tfa) Reset two-step verification for team member + /// (tfa) Reset two-factor authentication for team member TfaReset, /// (trusted_teams) Changed enterprise admin role ChangedEnterpriseAdminRole, @@ -32261,6 +44869,38 @@ impl<'de> ::serde::de::Deserialize<'de> for EventTypeArg { "file_resolve_comment" => EventTypeArg::FileResolveComment, "file_unlike_comment" => EventTypeArg::FileUnlikeComment, "file_unresolve_comment" => EventTypeArg::FileUnresolveComment, + "dash_added_comment_to_stack" => EventTypeArg::DashAddedCommentToStack, + "dash_added_connector" => EventTypeArg::DashAddedConnector, + "dash_added_link_to_stack" => EventTypeArg::DashAddedLinkToStack, + "dash_added_team_email_domain_allowlist" => EventTypeArg::DashAddedTeamEmailDomainAllowlist, + "dash_admin_added_org_wide_connector" => EventTypeArg::DashAdminAddedOrgWideConnector, + "dash_admin_disabled_connector" => EventTypeArg::DashAdminDisabledConnector, + "dash_admin_enabled_connector" => EventTypeArg::DashAdminEnabledConnector, + "dash_admin_removed_org_wide_connector" => EventTypeArg::DashAdminRemovedOrgWideConnector, + "dash_archived_stack" => EventTypeArg::DashArchivedStack, + "dash_changed_audience_of_shared_link_to_stack" => EventTypeArg::DashChangedAudienceOfSharedLinkToStack, + "dash_cloned_stack" => EventTypeArg::DashClonedStack, + "dash_connector_tools_call" => EventTypeArg::DashConnectorToolsCall, + "dash_created_stack" => EventTypeArg::DashCreatedStack, + "dash_deleted_comment_from_stack" => EventTypeArg::DashDeletedCommentFromStack, + "dash_deleted_stack" => EventTypeArg::DashDeletedStack, + "dash_edited_comment_in_stack" => EventTypeArg::DashEditedCommentInStack, + "dash_external_user_opened_stack" => EventTypeArg::DashExternalUserOpenedStack, + "dash_first_launched_desktop" => EventTypeArg::DashFirstLaunchedDesktop, + "dash_first_launched_extension" => EventTypeArg::DashFirstLaunchedExtension, + "dash_first_launched_web_start_page" => EventTypeArg::DashFirstLaunchedWebStartPage, + "dash_opened_shared_link_to_stack" => EventTypeArg::DashOpenedSharedLinkToStack, + "dash_opened_stack" => EventTypeArg::DashOpenedStack, + "dash_preview_opt_out_status_changed" => EventTypeArg::DashPreviewOptOutStatusChanged, + "dash_removed_connector" => EventTypeArg::DashRemovedConnector, + "dash_removed_link_from_stack" => EventTypeArg::DashRemovedLinkFromStack, + "dash_removed_shared_link_to_stack" => EventTypeArg::DashRemovedSharedLinkToStack, + "dash_removed_team_email_domain_allowlist" => EventTypeArg::DashRemovedTeamEmailDomainAllowlist, + "dash_renamed_stack" => EventTypeArg::DashRenamedStack, + "dash_shared_link_to_stack" => EventTypeArg::DashSharedLinkToStack, + "dash_unarchived_stack" => EventTypeArg::DashUnarchivedStack, + "dash_viewed_company_stack" => EventTypeArg::DashViewedCompanyStack, + "dash_viewed_external_ai_activity_report" => EventTypeArg::DashViewedExternalAiActivityReport, "governance_policy_add_folders" => EventTypeArg::GovernancePolicyAddFolders, "governance_policy_add_folder_failed" => EventTypeArg::GovernancePolicyAddFolderFailed, "governance_policy_content_disposed" => EventTypeArg::GovernancePolicyContentDisposed, @@ -32315,8 +44955,20 @@ impl<'de> ::serde::de::Deserialize<'de> for EventTypeArg { "domain_verification_add_domain_success" => EventTypeArg::DomainVerificationAddDomainSuccess, "domain_verification_remove_domain" => EventTypeArg::DomainVerificationRemoveDomain, "enabled_domain_invites" => EventTypeArg::EnabledDomainInvites, + "encrypted_folder_cancel_team_key_rotation" => EventTypeArg::EncryptedFolderCancelTeamKeyRotation, + "encrypted_folder_enroll_backup_key" => EventTypeArg::EncryptedFolderEnrollBackupKey, + "encrypted_folder_enroll_client" => EventTypeArg::EncryptedFolderEnrollClient, + "encrypted_folder_enroll_team" => EventTypeArg::EncryptedFolderEnrollTeam, + "encrypted_folder_finish_team_unenrollment" => EventTypeArg::EncryptedFolderFinishTeamUnenrollment, + "encrypted_folder_init_team_key_rotation" => EventTypeArg::EncryptedFolderInitTeamKeyRotation, + "encrypted_folder_init_team_unenrollment" => EventTypeArg::EncryptedFolderInitTeamUnenrollment, + "encrypted_folder_remove_backup_key" => EventTypeArg::EncryptedFolderRemoveBackupKey, + "encrypted_folder_rotate_team_key" => EventTypeArg::EncryptedFolderRotateTeamKey, + "encrypted_folder_unenroll_client" => EventTypeArg::EncryptedFolderUnenrollClient, + "team_encryption_key_activate_key" => EventTypeArg::TeamEncryptionKeyActivateKey, "team_encryption_key_cancel_key_deletion" => EventTypeArg::TeamEncryptionKeyCancelKeyDeletion, "team_encryption_key_create_key" => EventTypeArg::TeamEncryptionKeyCreateKey, + "team_encryption_key_deactivate_key" => EventTypeArg::TeamEncryptionKeyDeactivateKey, "team_encryption_key_delete_key" => EventTypeArg::TeamEncryptionKeyDeleteKey, "team_encryption_key_disable_key" => EventTypeArg::TeamEncryptionKeyDisableKey, "team_encryption_key_enable_key" => EventTypeArg::TeamEncryptionKeyEnableKey, @@ -32348,12 +45000,15 @@ impl<'de> ::serde::de::Deserialize<'de> for EventTypeArg { "object_label_updated_value" => EventTypeArg::ObjectLabelUpdatedValue, "organize_folder_with_tidy" => EventTypeArg::OrganizeFolderWithTidy, "replay_file_delete" => EventTypeArg::ReplayFileDelete, + "replay_file_downloaded" => EventTypeArg::ReplayFileDownloaded, + "replay_team_project_created" => EventTypeArg::ReplayTeamProjectCreated, "rewind_folder" => EventTypeArg::RewindFolder, "undo_naming_convention" => EventTypeArg::UndoNamingConvention, "undo_organize_folder_with_tidy" => EventTypeArg::UndoOrganizeFolderWithTidy, "user_tags_added" => EventTypeArg::UserTagsAdded, "user_tags_removed" => EventTypeArg::UserTagsRemoved, "email_ingest_receive_file" => EventTypeArg::EmailIngestReceiveFile, + "file_request_auto_close" => EventTypeArg::FileRequestAutoClose, "file_request_change" => EventTypeArg::FileRequestChange, "file_request_close" => EventTypeArg::FileRequestClose, "file_request_create" => EventTypeArg::FileRequestCreate, @@ -32367,6 +45022,7 @@ impl<'de> ::serde::de::Deserialize<'de> for EventTypeArg { "group_create" => EventTypeArg::GroupCreate, "group_delete" => EventTypeArg::GroupDelete, "group_description_updated" => EventTypeArg::GroupDescriptionUpdated, + "group_external_sharing_setting_override_changed" => EventTypeArg::GroupExternalSharingSettingOverrideChanged, "group_join_policy_updated" => EventTypeArg::GroupJoinPolicyUpdated, "group_moved" => EventTypeArg::GroupMoved, "group_remove_external_id" => EventTypeArg::GroupRemoveExternalId, @@ -32384,6 +45040,8 @@ impl<'de> ::serde::de::Deserialize<'de> for EventTypeArg { "sign_in_as_session_end" => EventTypeArg::SignInAsSessionEnd, "sign_in_as_session_start" => EventTypeArg::SignInAsSessionStart, "sso_error" => EventTypeArg::SsoError, + "addon_assigned" => EventTypeArg::AddonAssigned, + "addon_removed" => EventTypeArg::AddonRemoved, "backup_admin_invitation_sent" => EventTypeArg::BackupAdminInvitationSent, "backup_invitation_opened" => EventTypeArg::BackupInvitationOpened, "create_team_invite_link" => EventTypeArg::CreateTeamInviteLink, @@ -32409,6 +45067,8 @@ impl<'de> ::serde::de::Deserialize<'de> for EventTypeArg { "member_suggest" => EventTypeArg::MemberSuggest, "member_transfer_account_contents" => EventTypeArg::MemberTransferAccountContents, "pending_secondary_email_added" => EventTypeArg::PendingSecondaryEmailAdded, + "product_assigned_to_member" => EventTypeArg::ProductAssignedToMember, + "product_removed_from_member" => EventTypeArg::ProductRemovedFromMember, "secondary_email_deleted" => EventTypeArg::SecondaryEmailDeleted, "secondary_email_verified" => EventTypeArg::SecondaryEmailVerified, "secondary_mails_policy_changed" => EventTypeArg::SecondaryMailsPolicyChanged, @@ -32472,6 +45132,8 @@ impl<'de> ::serde::de::Deserialize<'de> for EventTypeArg { "export_members_report_fail" => EventTypeArg::ExportMembersReportFail, "external_sharing_create_report" => EventTypeArg::ExternalSharingCreateReport, "external_sharing_report_failed" => EventTypeArg::ExternalSharingReportFailed, + "member_access_details_create_report" => EventTypeArg::MemberAccessDetailsCreateReport, + "member_access_details_create_report_failed" => EventTypeArg::MemberAccessDetailsCreateReportFailed, "no_expiration_link_gen_create_report" => EventTypeArg::NoExpirationLinkGenCreateReport, "no_expiration_link_gen_report_failed" => EventTypeArg::NoExpirationLinkGenReportFailed, "no_password_link_gen_create_report" => EventTypeArg::NoPasswordLinkGenCreateReport, @@ -32483,9 +45145,15 @@ impl<'de> ::serde::de::Deserialize<'de> for EventTypeArg { "paper_admin_export_start" => EventTypeArg::PaperAdminExportStart, "ransomware_alert_create_report" => EventTypeArg::RansomwareAlertCreateReport, "ransomware_alert_create_report_failed" => EventTypeArg::RansomwareAlertCreateReportFailed, + "shared_folders_create_report" => EventTypeArg::SharedFoldersCreateReport, + "shared_folders_create_report_failed" => EventTypeArg::SharedFoldersCreateReportFailed, "smart_sync_create_admin_privilege_report" => EventTypeArg::SmartSyncCreateAdminPrivilegeReport, "team_activity_create_report" => EventTypeArg::TeamActivityCreateReport, "team_activity_create_report_fail" => EventTypeArg::TeamActivityCreateReportFail, + "team_folders_create_report" => EventTypeArg::TeamFoldersCreateReport, + "team_folders_create_report_failed" => EventTypeArg::TeamFoldersCreateReportFailed, + "team_storage_create_report" => EventTypeArg::TeamStorageCreateReport, + "team_storage_create_report_failed" => EventTypeArg::TeamStorageCreateReportFailed, "collection_share" => EventTypeArg::CollectionShare, "file_transfers_file_add" => EventTypeArg::FileTransfersFileAdd, "file_transfers_transfer_delete" => EventTypeArg::FileTransfersTransferDelete, @@ -32502,6 +45170,14 @@ impl<'de> ::serde::de::Deserialize<'de> for EventTypeArg { "replay_file_shared_link_modified" => EventTypeArg::ReplayFileSharedLinkModified, "replay_project_team_add" => EventTypeArg::ReplayProjectTeamAdd, "replay_project_team_delete" => EventTypeArg::ReplayProjectTeamDelete, + "send_and_track_file_added" => EventTypeArg::SendAndTrackFileAdded, + "send_and_track_file_renamed" => EventTypeArg::SendAndTrackFileRenamed, + "send_and_track_file_updated" => EventTypeArg::SendAndTrackFileUpdated, + "send_and_track_link_created" => EventTypeArg::SendAndTrackLinkCreated, + "send_and_track_link_deleted" => EventTypeArg::SendAndTrackLinkDeleted, + "send_and_track_link_updated" => EventTypeArg::SendAndTrackLinkUpdated, + "send_and_track_link_viewed" => EventTypeArg::SendAndTrackLinkViewed, + "send_and_track_removed_file_and_associated_links" => EventTypeArg::SendAndTrackRemovedFileAndAssociatedLinks, "sf_add_group" => EventTypeArg::SfAddGroup, "sf_allow_non_members_to_view_shared_links" => EventTypeArg::SfAllowNonMembersToViewSharedLinks, "sf_external_invite_warn" => EventTypeArg::SfExternalInviteWarn, @@ -32557,6 +45233,7 @@ impl<'de> ::serde::de::Deserialize<'de> for EventTypeArg { "shared_link_disable" => EventTypeArg::SharedLinkDisable, "shared_link_download" => EventTypeArg::SharedLinkDownload, "shared_link_remove_expiry" => EventTypeArg::SharedLinkRemoveExpiry, + "shared_link_remove_visitor" => EventTypeArg::SharedLinkRemoveVisitor, "shared_link_settings_add_expiration" => EventTypeArg::SharedLinkSettingsAddExpiration, "shared_link_settings_add_password" => EventTypeArg::SharedLinkSettingsAddPassword, "shared_link_settings_allow_download_disabled" => EventTypeArg::SharedLinkSettingsAllowDownloadDisabled, @@ -32596,6 +45273,15 @@ impl<'de> ::serde::de::Deserialize<'de> for EventTypeArg { "showcase_untrashed" => EventTypeArg::ShowcaseUntrashed, "showcase_untrashed_deprecated" => EventTypeArg::ShowcaseUntrashedDeprecated, "showcase_view" => EventTypeArg::ShowcaseView, + "sign_signature_request_canceled" => EventTypeArg::SignSignatureRequestCanceled, + "sign_signature_request_completed" => EventTypeArg::SignSignatureRequestCompleted, + "sign_signature_request_declined" => EventTypeArg::SignSignatureRequestDeclined, + "sign_signature_request_opened" => EventTypeArg::SignSignatureRequestOpened, + "sign_signature_request_reminder_sent" => EventTypeArg::SignSignatureRequestReminderSent, + "sign_signature_request_sent" => EventTypeArg::SignSignatureRequestSent, + "sign_template_created" => EventTypeArg::SignTemplateCreated, + "sign_template_shared" => EventTypeArg::SignTemplateShared, + "risc_security_event" => EventTypeArg::RiscSecurityEvent, "sso_add_cert" => EventTypeArg::SsoAddCert, "sso_add_login_url" => EventTypeArg::SsoAddLoginUrl, "sso_add_logout_url" => EventTypeArg::SsoAddLogoutUrl, @@ -32614,14 +45300,19 @@ impl<'de> ::serde::de::Deserialize<'de> for EventTypeArg { "team_selective_sync_settings_changed" => EventTypeArg::TeamSelectiveSyncSettingsChanged, "account_capture_change_policy" => EventTypeArg::AccountCaptureChangePolicy, "admin_email_reminders_changed" => EventTypeArg::AdminEmailRemindersChanged, + "ai_third_party_sharing_dropbox_base_policy_changed" => EventTypeArg::AiThirdPartySharingDropboxBasePolicyChanged, "allow_download_disabled" => EventTypeArg::AllowDownloadDisabled, "allow_download_enabled" => EventTypeArg::AllowDownloadEnabled, + "apple_login_change_policy" => EventTypeArg::AppleLoginChangePolicy, "app_permissions_changed" => EventTypeArg::AppPermissionsChanged, "camera_uploads_policy_changed" => EventTypeArg::CameraUploadsPolicyChanged, + "capture_team_space_policy_changed" => EventTypeArg::CaptureTeamSpacePolicyChanged, "capture_transcript_policy_changed" => EventTypeArg::CaptureTranscriptPolicyChanged, "classification_change_policy" => EventTypeArg::ClassificationChangePolicy, "computer_backup_policy_changed" => EventTypeArg::ComputerBackupPolicyChanged, "content_administration_policy_changed" => EventTypeArg::ContentAdministrationPolicyChanged, + "content_deletion_protection_change_policy" => EventTypeArg::ContentDeletionProtectionChangePolicy, + "dash_external_sharing_policy_changed" => EventTypeArg::DashExternalSharingPolicyChanged, "data_placement_restriction_change_policy" => EventTypeArg::DataPlacementRestrictionChangePolicy, "data_placement_restriction_satisfy_policy" => EventTypeArg::DataPlacementRestrictionSatisfyPolicy, "device_approvals_add_exception" => EventTypeArg::DeviceApprovalsAddException, @@ -32646,6 +45337,7 @@ impl<'de> ::serde::de::Deserialize<'de> for EventTypeArg { "file_requests_emails_enabled" => EventTypeArg::FileRequestsEmailsEnabled, "file_requests_emails_restricted_to_team_only" => EventTypeArg::FileRequestsEmailsRestrictedToTeamOnly, "file_transfers_policy_changed" => EventTypeArg::FileTransfersPolicyChanged, + "flexible_file_names_policy_changed" => EventTypeArg::FlexibleFileNamesPolicyChanged, "folder_link_restriction_policy_changed" => EventTypeArg::FolderLinkRestrictionPolicyChanged, "google_sso_change_policy" => EventTypeArg::GoogleSsoChangePolicy, "group_user_management_change_policy" => EventTypeArg::GroupUserManagementChangePolicy, @@ -32658,6 +45350,7 @@ impl<'de> ::serde::de::Deserialize<'de> for EventTypeArg { "member_space_limits_change_policy" => EventTypeArg::MemberSpaceLimitsChangePolicy, "member_space_limits_remove_exception" => EventTypeArg::MemberSpaceLimitsRemoveException, "member_suggestions_change_policy" => EventTypeArg::MemberSuggestionsChangePolicy, + "microsoft_login_change_policy" => EventTypeArg::MicrosoftLoginChangePolicy, "microsoft_office_addin_change_policy" => EventTypeArg::MicrosoftOfficeAddinChangePolicy, "network_control_change_policy" => EventTypeArg::NetworkControlChangePolicy, "paper_change_deployment_policy" => EventTypeArg::PaperChangeDeploymentPolicy, @@ -32668,11 +45361,18 @@ impl<'de> ::serde::de::Deserialize<'de> for EventTypeArg { "paper_desktop_policy_changed" => EventTypeArg::PaperDesktopPolicyChanged, "paper_enabled_users_group_addition" => EventTypeArg::PaperEnabledUsersGroupAddition, "paper_enabled_users_group_removal" => EventTypeArg::PaperEnabledUsersGroupRemoval, + "passkey_login_policy_changed" => EventTypeArg::PasskeyLoginPolicyChanged, "password_strength_requirements_change_policy" => EventTypeArg::PasswordStrengthRequirementsChangePolicy, "permanent_delete_change_policy" => EventTypeArg::PermanentDeleteChangePolicy, + "previews_ai_policy_changed" => EventTypeArg::PreviewsAiPolicyChanged, + "replay_adding_people_policy_changed" => EventTypeArg::ReplayAddingPeoplePolicyChanged, + "replay_sharing_policy_changed" => EventTypeArg::ReplaySharingPolicyChanged, "reseller_support_change_policy" => EventTypeArg::ResellerSupportChangePolicy, "rewind_policy_changed" => EventTypeArg::RewindPolicyChanged, + "send_and_track_policy_changed" => EventTypeArg::SendAndTrackPolicyChanged, + "send_external_sharing_policy_changed" => EventTypeArg::SendExternalSharingPolicyChanged, "send_for_signature_policy_changed" => EventTypeArg::SendForSignaturePolicyChanged, + "shared_link_default_permissions_policy_changed" => EventTypeArg::SharedLinkDefaultPermissionsPolicyChanged, "sharing_change_folder_join_policy" => EventTypeArg::SharingChangeFolderJoinPolicy, "sharing_change_link_allow_change_expiration_policy" => EventTypeArg::SharingChangeLinkAllowChangeExpirationPolicy, "sharing_change_link_default_expiration_policy" => EventTypeArg::SharingChangeLinkDefaultExpirationPolicy, @@ -32682,18 +45382,23 @@ impl<'de> ::serde::de::Deserialize<'de> for EventTypeArg { "showcase_change_download_policy" => EventTypeArg::ShowcaseChangeDownloadPolicy, "showcase_change_enabled_policy" => EventTypeArg::ShowcaseChangeEnabledPolicy, "showcase_change_external_sharing_policy" => EventTypeArg::ShowcaseChangeExternalSharingPolicy, + "sign_external_sharing_policy_changed" => EventTypeArg::SignExternalSharingPolicyChanged, + "sign_template_creation_permission_changed" => EventTypeArg::SignTemplateCreationPermissionChanged, "smarter_smart_sync_policy_changed" => EventTypeArg::SmarterSmartSyncPolicyChanged, "smart_sync_change_policy" => EventTypeArg::SmartSyncChangePolicy, "smart_sync_not_opt_out" => EventTypeArg::SmartSyncNotOptOut, "smart_sync_opt_out" => EventTypeArg::SmartSyncOptOut, "sso_change_policy" => EventTypeArg::SsoChangePolicy, + "stack_cross_team_access_policy_changed" => EventTypeArg::StackCrossTeamAccessPolicyChanged, "team_branding_policy_changed" => EventTypeArg::TeamBrandingPolicyChanged, "team_extensions_policy_changed" => EventTypeArg::TeamExtensionsPolicyChanged, + "team_member_storage_request_policy_changed" => EventTypeArg::TeamMemberStorageRequestPolicyChanged, "team_selective_sync_policy_changed" => EventTypeArg::TeamSelectiveSyncPolicyChanged, "team_sharing_whitelist_subjects_changed" => EventTypeArg::TeamSharingWhitelistSubjectsChanged, "tfa_add_exception" => EventTypeArg::TfaAddException, "tfa_change_policy" => EventTypeArg::TfaChangePolicy, "tfa_remove_exception" => EventTypeArg::TfaRemoveException, + "top_level_content_policy_changed" => EventTypeArg::TopLevelContentPolicyChanged, "two_account_change_policy" => EventTypeArg::TwoAccountChangePolicy, "viewer_info_policy_changed" => EventTypeArg::ViewerInfoPolicyChanged, "watermarking_policy_changed" => EventTypeArg::WatermarkingPolicyChanged, @@ -32712,6 +45417,8 @@ impl<'de> ::serde::de::Deserialize<'de> for EventTypeArg { "team_profile_change_name" => EventTypeArg::TeamProfileChangeName, "team_profile_remove_background" => EventTypeArg::TeamProfileRemoveBackground, "team_profile_remove_logo" => EventTypeArg::TeamProfileRemoveLogo, + "passkey_add" => EventTypeArg::PasskeyAdd, + "passkey_remove" => EventTypeArg::PasskeyRemove, "tfa_add_backup_phone" => EventTypeArg::TfaAddBackupPhone, "tfa_add_security_key" => EventTypeArg::TfaAddSecurityKey, "tfa_change_backup_phone" => EventTypeArg::TfaChangeBackupPhone, @@ -32770,6 +45477,38 @@ impl<'de> ::serde::de::Deserialize<'de> for EventTypeArg { "file_resolve_comment", "file_unlike_comment", "file_unresolve_comment", + "dash_added_comment_to_stack", + "dash_added_connector", + "dash_added_link_to_stack", + "dash_added_team_email_domain_allowlist", + "dash_admin_added_org_wide_connector", + "dash_admin_disabled_connector", + "dash_admin_enabled_connector", + "dash_admin_removed_org_wide_connector", + "dash_archived_stack", + "dash_changed_audience_of_shared_link_to_stack", + "dash_cloned_stack", + "dash_connector_tools_call", + "dash_created_stack", + "dash_deleted_comment_from_stack", + "dash_deleted_stack", + "dash_edited_comment_in_stack", + "dash_external_user_opened_stack", + "dash_first_launched_desktop", + "dash_first_launched_extension", + "dash_first_launched_web_start_page", + "dash_opened_shared_link_to_stack", + "dash_opened_stack", + "dash_preview_opt_out_status_changed", + "dash_removed_connector", + "dash_removed_link_from_stack", + "dash_removed_shared_link_to_stack", + "dash_removed_team_email_domain_allowlist", + "dash_renamed_stack", + "dash_shared_link_to_stack", + "dash_unarchived_stack", + "dash_viewed_company_stack", + "dash_viewed_external_ai_activity_report", "governance_policy_add_folders", "governance_policy_add_folder_failed", "governance_policy_content_disposed", @@ -32824,8 +45563,20 @@ impl<'de> ::serde::de::Deserialize<'de> for EventTypeArg { "domain_verification_add_domain_success", "domain_verification_remove_domain", "enabled_domain_invites", + "encrypted_folder_cancel_team_key_rotation", + "encrypted_folder_enroll_backup_key", + "encrypted_folder_enroll_client", + "encrypted_folder_enroll_team", + "encrypted_folder_finish_team_unenrollment", + "encrypted_folder_init_team_key_rotation", + "encrypted_folder_init_team_unenrollment", + "encrypted_folder_remove_backup_key", + "encrypted_folder_rotate_team_key", + "encrypted_folder_unenroll_client", + "team_encryption_key_activate_key", "team_encryption_key_cancel_key_deletion", "team_encryption_key_create_key", + "team_encryption_key_deactivate_key", "team_encryption_key_delete_key", "team_encryption_key_disable_key", "team_encryption_key_enable_key", @@ -32857,12 +45608,15 @@ impl<'de> ::serde::de::Deserialize<'de> for EventTypeArg { "object_label_updated_value", "organize_folder_with_tidy", "replay_file_delete", + "replay_file_downloaded", + "replay_team_project_created", "rewind_folder", "undo_naming_convention", "undo_organize_folder_with_tidy", "user_tags_added", "user_tags_removed", "email_ingest_receive_file", + "file_request_auto_close", "file_request_change", "file_request_close", "file_request_create", @@ -32876,6 +45630,7 @@ impl<'de> ::serde::de::Deserialize<'de> for EventTypeArg { "group_create", "group_delete", "group_description_updated", + "group_external_sharing_setting_override_changed", "group_join_policy_updated", "group_moved", "group_remove_external_id", @@ -32893,6 +45648,8 @@ impl<'de> ::serde::de::Deserialize<'de> for EventTypeArg { "sign_in_as_session_end", "sign_in_as_session_start", "sso_error", + "addon_assigned", + "addon_removed", "backup_admin_invitation_sent", "backup_invitation_opened", "create_team_invite_link", @@ -32918,6 +45675,8 @@ impl<'de> ::serde::de::Deserialize<'de> for EventTypeArg { "member_suggest", "member_transfer_account_contents", "pending_secondary_email_added", + "product_assigned_to_member", + "product_removed_from_member", "secondary_email_deleted", "secondary_email_verified", "secondary_mails_policy_changed", @@ -32981,6 +45740,8 @@ impl<'de> ::serde::de::Deserialize<'de> for EventTypeArg { "export_members_report_fail", "external_sharing_create_report", "external_sharing_report_failed", + "member_access_details_create_report", + "member_access_details_create_report_failed", "no_expiration_link_gen_create_report", "no_expiration_link_gen_report_failed", "no_password_link_gen_create_report", @@ -32992,9 +45753,15 @@ impl<'de> ::serde::de::Deserialize<'de> for EventTypeArg { "paper_admin_export_start", "ransomware_alert_create_report", "ransomware_alert_create_report_failed", + "shared_folders_create_report", + "shared_folders_create_report_failed", "smart_sync_create_admin_privilege_report", "team_activity_create_report", "team_activity_create_report_fail", + "team_folders_create_report", + "team_folders_create_report_failed", + "team_storage_create_report", + "team_storage_create_report_failed", "collection_share", "file_transfers_file_add", "file_transfers_transfer_delete", @@ -33011,6 +45778,14 @@ impl<'de> ::serde::de::Deserialize<'de> for EventTypeArg { "replay_file_shared_link_modified", "replay_project_team_add", "replay_project_team_delete", + "send_and_track_file_added", + "send_and_track_file_renamed", + "send_and_track_file_updated", + "send_and_track_link_created", + "send_and_track_link_deleted", + "send_and_track_link_updated", + "send_and_track_link_viewed", + "send_and_track_removed_file_and_associated_links", "sf_add_group", "sf_allow_non_members_to_view_shared_links", "sf_external_invite_warn", @@ -33066,6 +45841,7 @@ impl<'de> ::serde::de::Deserialize<'de> for EventTypeArg { "shared_link_disable", "shared_link_download", "shared_link_remove_expiry", + "shared_link_remove_visitor", "shared_link_settings_add_expiration", "shared_link_settings_add_password", "shared_link_settings_allow_download_disabled", @@ -33105,6 +45881,15 @@ impl<'de> ::serde::de::Deserialize<'de> for EventTypeArg { "showcase_untrashed", "showcase_untrashed_deprecated", "showcase_view", + "sign_signature_request_canceled", + "sign_signature_request_completed", + "sign_signature_request_declined", + "sign_signature_request_opened", + "sign_signature_request_reminder_sent", + "sign_signature_request_sent", + "sign_template_created", + "sign_template_shared", + "risc_security_event", "sso_add_cert", "sso_add_login_url", "sso_add_logout_url", @@ -33123,14 +45908,19 @@ impl<'de> ::serde::de::Deserialize<'de> for EventTypeArg { "team_selective_sync_settings_changed", "account_capture_change_policy", "admin_email_reminders_changed", + "ai_third_party_sharing_dropbox_base_policy_changed", "allow_download_disabled", "allow_download_enabled", + "apple_login_change_policy", "app_permissions_changed", "camera_uploads_policy_changed", + "capture_team_space_policy_changed", "capture_transcript_policy_changed", "classification_change_policy", "computer_backup_policy_changed", "content_administration_policy_changed", + "content_deletion_protection_change_policy", + "dash_external_sharing_policy_changed", "data_placement_restriction_change_policy", "data_placement_restriction_satisfy_policy", "device_approvals_add_exception", @@ -33155,6 +45945,7 @@ impl<'de> ::serde::de::Deserialize<'de> for EventTypeArg { "file_requests_emails_enabled", "file_requests_emails_restricted_to_team_only", "file_transfers_policy_changed", + "flexible_file_names_policy_changed", "folder_link_restriction_policy_changed", "google_sso_change_policy", "group_user_management_change_policy", @@ -33167,6 +45958,7 @@ impl<'de> ::serde::de::Deserialize<'de> for EventTypeArg { "member_space_limits_change_policy", "member_space_limits_remove_exception", "member_suggestions_change_policy", + "microsoft_login_change_policy", "microsoft_office_addin_change_policy", "network_control_change_policy", "paper_change_deployment_policy", @@ -33177,11 +45969,18 @@ impl<'de> ::serde::de::Deserialize<'de> for EventTypeArg { "paper_desktop_policy_changed", "paper_enabled_users_group_addition", "paper_enabled_users_group_removal", + "passkey_login_policy_changed", "password_strength_requirements_change_policy", "permanent_delete_change_policy", + "previews_ai_policy_changed", + "replay_adding_people_policy_changed", + "replay_sharing_policy_changed", "reseller_support_change_policy", "rewind_policy_changed", + "send_and_track_policy_changed", + "send_external_sharing_policy_changed", "send_for_signature_policy_changed", + "shared_link_default_permissions_policy_changed", "sharing_change_folder_join_policy", "sharing_change_link_allow_change_expiration_policy", "sharing_change_link_default_expiration_policy", @@ -33191,18 +45990,23 @@ impl<'de> ::serde::de::Deserialize<'de> for EventTypeArg { "showcase_change_download_policy", "showcase_change_enabled_policy", "showcase_change_external_sharing_policy", + "sign_external_sharing_policy_changed", + "sign_template_creation_permission_changed", "smarter_smart_sync_policy_changed", "smart_sync_change_policy", "smart_sync_not_opt_out", "smart_sync_opt_out", "sso_change_policy", + "stack_cross_team_access_policy_changed", "team_branding_policy_changed", "team_extensions_policy_changed", + "team_member_storage_request_policy_changed", "team_selective_sync_policy_changed", "team_sharing_whitelist_subjects_changed", "tfa_add_exception", "tfa_change_policy", "tfa_remove_exception", + "top_level_content_policy_changed", "two_account_change_policy", "viewer_info_policy_changed", "watermarking_policy_changed", @@ -33221,6 +46025,8 @@ impl<'de> ::serde::de::Deserialize<'de> for EventTypeArg { "team_profile_change_name", "team_profile_remove_background", "team_profile_remove_logo", + "passkey_add", + "passkey_remove", "tfa_add_backup_phone", "tfa_add_security_key", "tfa_change_backup_phone", @@ -33266,3108 +46072,11123 @@ impl ::serde::ser::Serialize for EventTypeArg { EventTypeArg::AdminAlertingAlertStateChanged => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "admin_alerting_alert_state_changed")?; + s.serialize_field(".tag", "admin_alerting_alert_state_changed")?; + s.end() + } + EventTypeArg::AdminAlertingChangedAlertConfig => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "admin_alerting_changed_alert_config")?; + s.end() + } + EventTypeArg::AdminAlertingTriggeredAlert => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "admin_alerting_triggered_alert")?; + s.end() + } + EventTypeArg::RansomwareRestoreProcessCompleted => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "ransomware_restore_process_completed")?; + s.end() + } + EventTypeArg::RansomwareRestoreProcessStarted => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "ransomware_restore_process_started")?; + s.end() + } + EventTypeArg::AppBlockedByPermissions => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "app_blocked_by_permissions")?; + s.end() + } + EventTypeArg::AppLinkTeam => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "app_link_team")?; + s.end() + } + EventTypeArg::AppLinkUser => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "app_link_user")?; + s.end() + } + EventTypeArg::AppUnlinkTeam => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "app_unlink_team")?; + s.end() + } + EventTypeArg::AppUnlinkUser => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "app_unlink_user")?; + s.end() + } + EventTypeArg::IntegrationConnected => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "integration_connected")?; + s.end() + } + EventTypeArg::IntegrationDisconnected => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "integration_disconnected")?; + s.end() + } + EventTypeArg::FileAddComment => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "file_add_comment")?; + s.end() + } + EventTypeArg::FileChangeCommentSubscription => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "file_change_comment_subscription")?; + s.end() + } + EventTypeArg::FileDeleteComment => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "file_delete_comment")?; + s.end() + } + EventTypeArg::FileEditComment => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "file_edit_comment")?; + s.end() + } + EventTypeArg::FileLikeComment => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "file_like_comment")?; + s.end() + } + EventTypeArg::FileResolveComment => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "file_resolve_comment")?; + s.end() + } + EventTypeArg::FileUnlikeComment => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "file_unlike_comment")?; + s.end() + } + EventTypeArg::FileUnresolveComment => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "file_unresolve_comment")?; + s.end() + } + EventTypeArg::DashAddedCommentToStack => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "dash_added_comment_to_stack")?; + s.end() + } + EventTypeArg::DashAddedConnector => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "dash_added_connector")?; + s.end() + } + EventTypeArg::DashAddedLinkToStack => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "dash_added_link_to_stack")?; + s.end() + } + EventTypeArg::DashAddedTeamEmailDomainAllowlist => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "dash_added_team_email_domain_allowlist")?; + s.end() + } + EventTypeArg::DashAdminAddedOrgWideConnector => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "dash_admin_added_org_wide_connector")?; + s.end() + } + EventTypeArg::DashAdminDisabledConnector => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "dash_admin_disabled_connector")?; + s.end() + } + EventTypeArg::DashAdminEnabledConnector => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "dash_admin_enabled_connector")?; + s.end() + } + EventTypeArg::DashAdminRemovedOrgWideConnector => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "dash_admin_removed_org_wide_connector")?; + s.end() + } + EventTypeArg::DashArchivedStack => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "dash_archived_stack")?; + s.end() + } + EventTypeArg::DashChangedAudienceOfSharedLinkToStack => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "dash_changed_audience_of_shared_link_to_stack")?; + s.end() + } + EventTypeArg::DashClonedStack => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "dash_cloned_stack")?; + s.end() + } + EventTypeArg::DashConnectorToolsCall => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "dash_connector_tools_call")?; + s.end() + } + EventTypeArg::DashCreatedStack => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "dash_created_stack")?; + s.end() + } + EventTypeArg::DashDeletedCommentFromStack => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "dash_deleted_comment_from_stack")?; + s.end() + } + EventTypeArg::DashDeletedStack => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "dash_deleted_stack")?; + s.end() + } + EventTypeArg::DashEditedCommentInStack => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "dash_edited_comment_in_stack")?; + s.end() + } + EventTypeArg::DashExternalUserOpenedStack => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "dash_external_user_opened_stack")?; + s.end() + } + EventTypeArg::DashFirstLaunchedDesktop => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "dash_first_launched_desktop")?; + s.end() + } + EventTypeArg::DashFirstLaunchedExtension => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "dash_first_launched_extension")?; + s.end() + } + EventTypeArg::DashFirstLaunchedWebStartPage => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "dash_first_launched_web_start_page")?; + s.end() + } + EventTypeArg::DashOpenedSharedLinkToStack => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "dash_opened_shared_link_to_stack")?; + s.end() + } + EventTypeArg::DashOpenedStack => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "dash_opened_stack")?; + s.end() + } + EventTypeArg::DashPreviewOptOutStatusChanged => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "dash_preview_opt_out_status_changed")?; + s.end() + } + EventTypeArg::DashRemovedConnector => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "dash_removed_connector")?; + s.end() + } + EventTypeArg::DashRemovedLinkFromStack => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "dash_removed_link_from_stack")?; + s.end() + } + EventTypeArg::DashRemovedSharedLinkToStack => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "dash_removed_shared_link_to_stack")?; + s.end() + } + EventTypeArg::DashRemovedTeamEmailDomainAllowlist => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "dash_removed_team_email_domain_allowlist")?; + s.end() + } + EventTypeArg::DashRenamedStack => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "dash_renamed_stack")?; + s.end() + } + EventTypeArg::DashSharedLinkToStack => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "dash_shared_link_to_stack")?; + s.end() + } + EventTypeArg::DashUnarchivedStack => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "dash_unarchived_stack")?; + s.end() + } + EventTypeArg::DashViewedCompanyStack => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "dash_viewed_company_stack")?; + s.end() + } + EventTypeArg::DashViewedExternalAiActivityReport => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "dash_viewed_external_ai_activity_report")?; + s.end() + } + EventTypeArg::GovernancePolicyAddFolders => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "governance_policy_add_folders")?; + s.end() + } + EventTypeArg::GovernancePolicyAddFolderFailed => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "governance_policy_add_folder_failed")?; + s.end() + } + EventTypeArg::GovernancePolicyContentDisposed => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "governance_policy_content_disposed")?; + s.end() + } + EventTypeArg::GovernancePolicyCreate => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "governance_policy_create")?; + s.end() + } + EventTypeArg::GovernancePolicyDelete => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "governance_policy_delete")?; + s.end() + } + EventTypeArg::GovernancePolicyEditDetails => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "governance_policy_edit_details")?; + s.end() + } + EventTypeArg::GovernancePolicyEditDuration => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "governance_policy_edit_duration")?; + s.end() + } + EventTypeArg::GovernancePolicyExportCreated => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "governance_policy_export_created")?; + s.end() + } + EventTypeArg::GovernancePolicyExportRemoved => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "governance_policy_export_removed")?; + s.end() + } + EventTypeArg::GovernancePolicyRemoveFolders => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "governance_policy_remove_folders")?; + s.end() + } + EventTypeArg::GovernancePolicyReportCreated => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "governance_policy_report_created")?; + s.end() + } + EventTypeArg::GovernancePolicyZipPartDownloaded => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "governance_policy_zip_part_downloaded")?; + s.end() + } + EventTypeArg::LegalHoldsActivateAHold => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "legal_holds_activate_a_hold")?; + s.end() + } + EventTypeArg::LegalHoldsAddMembers => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "legal_holds_add_members")?; + s.end() + } + EventTypeArg::LegalHoldsChangeHoldDetails => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "legal_holds_change_hold_details")?; + s.end() + } + EventTypeArg::LegalHoldsChangeHoldName => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "legal_holds_change_hold_name")?; + s.end() + } + EventTypeArg::LegalHoldsExportAHold => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "legal_holds_export_a_hold")?; + s.end() + } + EventTypeArg::LegalHoldsExportCancelled => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "legal_holds_export_cancelled")?; + s.end() + } + EventTypeArg::LegalHoldsExportDownloaded => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "legal_holds_export_downloaded")?; + s.end() + } + EventTypeArg::LegalHoldsExportRemoved => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "legal_holds_export_removed")?; + s.end() + } + EventTypeArg::LegalHoldsReleaseAHold => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "legal_holds_release_a_hold")?; + s.end() + } + EventTypeArg::LegalHoldsRemoveMembers => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "legal_holds_remove_members")?; + s.end() + } + EventTypeArg::LegalHoldsReportAHold => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "legal_holds_report_a_hold")?; + s.end() + } + EventTypeArg::DeviceChangeIpDesktop => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "device_change_ip_desktop")?; + s.end() + } + EventTypeArg::DeviceChangeIpMobile => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "device_change_ip_mobile")?; + s.end() + } + EventTypeArg::DeviceChangeIpWeb => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "device_change_ip_web")?; + s.end() + } + EventTypeArg::DeviceDeleteOnUnlinkFail => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "device_delete_on_unlink_fail")?; + s.end() + } + EventTypeArg::DeviceDeleteOnUnlinkSuccess => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "device_delete_on_unlink_success")?; + s.end() + } + EventTypeArg::DeviceLinkFail => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "device_link_fail")?; + s.end() + } + EventTypeArg::DeviceLinkSuccess => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "device_link_success")?; + s.end() + } + EventTypeArg::DeviceManagementDisabled => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "device_management_disabled")?; + s.end() + } + EventTypeArg::DeviceManagementEnabled => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "device_management_enabled")?; + s.end() + } + EventTypeArg::DeviceSyncBackupStatusChanged => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "device_sync_backup_status_changed")?; + s.end() + } + EventTypeArg::DeviceUnlink => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "device_unlink")?; + s.end() + } + EventTypeArg::DropboxPasswordsExported => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "dropbox_passwords_exported")?; + s.end() + } + EventTypeArg::DropboxPasswordsNewDeviceEnrolled => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "dropbox_passwords_new_device_enrolled")?; + s.end() + } + EventTypeArg::EmmRefreshAuthToken => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "emm_refresh_auth_token")?; + s.end() + } + EventTypeArg::ExternalDriveBackupEligibilityStatusChecked => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "external_drive_backup_eligibility_status_checked")?; + s.end() + } + EventTypeArg::ExternalDriveBackupStatusChanged => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "external_drive_backup_status_changed")?; + s.end() + } + EventTypeArg::AccountCaptureChangeAvailability => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "account_capture_change_availability")?; + s.end() + } + EventTypeArg::AccountCaptureMigrateAccount => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "account_capture_migrate_account")?; + s.end() + } + EventTypeArg::AccountCaptureNotificationEmailsSent => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "account_capture_notification_emails_sent")?; + s.end() + } + EventTypeArg::AccountCaptureRelinquishAccount => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "account_capture_relinquish_account")?; + s.end() + } + EventTypeArg::DisabledDomainInvites => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "disabled_domain_invites")?; + s.end() + } + EventTypeArg::DomainInvitesApproveRequestToJoinTeam => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "domain_invites_approve_request_to_join_team")?; + s.end() + } + EventTypeArg::DomainInvitesDeclineRequestToJoinTeam => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "domain_invites_decline_request_to_join_team")?; + s.end() + } + EventTypeArg::DomainInvitesEmailExistingUsers => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "domain_invites_email_existing_users")?; + s.end() + } + EventTypeArg::DomainInvitesRequestToJoinTeam => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "domain_invites_request_to_join_team")?; + s.end() + } + EventTypeArg::DomainInvitesSetInviteNewUserPrefToNo => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "domain_invites_set_invite_new_user_pref_to_no")?; + s.end() + } + EventTypeArg::DomainInvitesSetInviteNewUserPrefToYes => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "domain_invites_set_invite_new_user_pref_to_yes")?; + s.end() + } + EventTypeArg::DomainVerificationAddDomainFail => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "domain_verification_add_domain_fail")?; + s.end() + } + EventTypeArg::DomainVerificationAddDomainSuccess => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "domain_verification_add_domain_success")?; + s.end() + } + EventTypeArg::DomainVerificationRemoveDomain => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "domain_verification_remove_domain")?; + s.end() + } + EventTypeArg::EnabledDomainInvites => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "enabled_domain_invites")?; + s.end() + } + EventTypeArg::EncryptedFolderCancelTeamKeyRotation => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "encrypted_folder_cancel_team_key_rotation")?; + s.end() + } + EventTypeArg::EncryptedFolderEnrollBackupKey => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "encrypted_folder_enroll_backup_key")?; + s.end() + } + EventTypeArg::EncryptedFolderEnrollClient => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "encrypted_folder_enroll_client")?; + s.end() + } + EventTypeArg::EncryptedFolderEnrollTeam => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "encrypted_folder_enroll_team")?; + s.end() + } + EventTypeArg::EncryptedFolderFinishTeamUnenrollment => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "encrypted_folder_finish_team_unenrollment")?; + s.end() + } + EventTypeArg::EncryptedFolderInitTeamKeyRotation => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "encrypted_folder_init_team_key_rotation")?; + s.end() + } + EventTypeArg::EncryptedFolderInitTeamUnenrollment => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "encrypted_folder_init_team_unenrollment")?; + s.end() + } + EventTypeArg::EncryptedFolderRemoveBackupKey => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "encrypted_folder_remove_backup_key")?; + s.end() + } + EventTypeArg::EncryptedFolderRotateTeamKey => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "encrypted_folder_rotate_team_key")?; + s.end() + } + EventTypeArg::EncryptedFolderUnenrollClient => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "encrypted_folder_unenroll_client")?; + s.end() + } + EventTypeArg::TeamEncryptionKeyActivateKey => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "team_encryption_key_activate_key")?; + s.end() + } + EventTypeArg::TeamEncryptionKeyCancelKeyDeletion => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "team_encryption_key_cancel_key_deletion")?; + s.end() + } + EventTypeArg::TeamEncryptionKeyCreateKey => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "team_encryption_key_create_key")?; + s.end() + } + EventTypeArg::TeamEncryptionKeyDeactivateKey => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "team_encryption_key_deactivate_key")?; + s.end() + } + EventTypeArg::TeamEncryptionKeyDeleteKey => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "team_encryption_key_delete_key")?; + s.end() + } + EventTypeArg::TeamEncryptionKeyDisableKey => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "team_encryption_key_disable_key")?; + s.end() + } + EventTypeArg::TeamEncryptionKeyEnableKey => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "team_encryption_key_enable_key")?; + s.end() + } + EventTypeArg::TeamEncryptionKeyRotateKey => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "team_encryption_key_rotate_key")?; + s.end() + } + EventTypeArg::TeamEncryptionKeyScheduleKeyDeletion => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "team_encryption_key_schedule_key_deletion")?; + s.end() + } + EventTypeArg::ApplyNamingConvention => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "apply_naming_convention")?; + s.end() + } + EventTypeArg::CreateFolder => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "create_folder")?; + s.end() + } + EventTypeArg::FileAdd => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "file_add")?; + s.end() + } + EventTypeArg::FileAddFromAutomation => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "file_add_from_automation")?; + s.end() + } + EventTypeArg::FileCopy => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "file_copy")?; + s.end() + } + EventTypeArg::FileDelete => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "file_delete")?; + s.end() + } + EventTypeArg::FileDownload => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "file_download")?; + s.end() + } + EventTypeArg::FileEdit => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "file_edit")?; + s.end() + } + EventTypeArg::FileGetCopyReference => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "file_get_copy_reference")?; + s.end() + } + EventTypeArg::FileLockingLockStatusChanged => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "file_locking_lock_status_changed")?; + s.end() + } + EventTypeArg::FileMove => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "file_move")?; + s.end() + } + EventTypeArg::FilePermanentlyDelete => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "file_permanently_delete")?; + s.end() + } + EventTypeArg::FilePreview => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "file_preview")?; + s.end() + } + EventTypeArg::FileRename => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "file_rename")?; + s.end() + } + EventTypeArg::FileRestore => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "file_restore")?; + s.end() + } + EventTypeArg::FileRevert => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "file_revert")?; + s.end() + } + EventTypeArg::FileRollbackChanges => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "file_rollback_changes")?; + s.end() + } + EventTypeArg::FileSaveCopyReference => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "file_save_copy_reference")?; + s.end() + } + EventTypeArg::FolderOverviewDescriptionChanged => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "folder_overview_description_changed")?; + s.end() + } + EventTypeArg::FolderOverviewItemPinned => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "folder_overview_item_pinned")?; + s.end() + } + EventTypeArg::FolderOverviewItemUnpinned => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "folder_overview_item_unpinned")?; + s.end() + } + EventTypeArg::ObjectLabelAdded => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "object_label_added")?; + s.end() + } + EventTypeArg::ObjectLabelRemoved => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "object_label_removed")?; + s.end() + } + EventTypeArg::ObjectLabelUpdatedValue => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "object_label_updated_value")?; + s.end() + } + EventTypeArg::OrganizeFolderWithTidy => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "organize_folder_with_tidy")?; + s.end() + } + EventTypeArg::ReplayFileDelete => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "replay_file_delete")?; + s.end() + } + EventTypeArg::ReplayFileDownloaded => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "replay_file_downloaded")?; + s.end() + } + EventTypeArg::ReplayTeamProjectCreated => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "replay_team_project_created")?; + s.end() + } + EventTypeArg::RewindFolder => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "rewind_folder")?; + s.end() + } + EventTypeArg::UndoNamingConvention => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "undo_naming_convention")?; + s.end() + } + EventTypeArg::UndoOrganizeFolderWithTidy => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "undo_organize_folder_with_tidy")?; + s.end() + } + EventTypeArg::UserTagsAdded => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "user_tags_added")?; + s.end() + } + EventTypeArg::UserTagsRemoved => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "user_tags_removed")?; + s.end() + } + EventTypeArg::EmailIngestReceiveFile => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "email_ingest_receive_file")?; + s.end() + } + EventTypeArg::FileRequestAutoClose => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "file_request_auto_close")?; + s.end() + } + EventTypeArg::FileRequestChange => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "file_request_change")?; + s.end() + } + EventTypeArg::FileRequestClose => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "file_request_close")?; + s.end() + } + EventTypeArg::FileRequestCreate => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "file_request_create")?; + s.end() + } + EventTypeArg::FileRequestDelete => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "file_request_delete")?; + s.end() + } + EventTypeArg::FileRequestReceiveFile => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "file_request_receive_file")?; + s.end() + } + EventTypeArg::GroupAddExternalId => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "group_add_external_id")?; + s.end() + } + EventTypeArg::GroupAddMember => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "group_add_member")?; + s.end() + } + EventTypeArg::GroupChangeExternalId => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "group_change_external_id")?; + s.end() + } + EventTypeArg::GroupChangeManagementType => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "group_change_management_type")?; + s.end() + } + EventTypeArg::GroupChangeMemberRole => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "group_change_member_role")?; + s.end() + } + EventTypeArg::GroupCreate => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "group_create")?; + s.end() + } + EventTypeArg::GroupDelete => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "group_delete")?; + s.end() + } + EventTypeArg::GroupDescriptionUpdated => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "group_description_updated")?; + s.end() + } + EventTypeArg::GroupExternalSharingSettingOverrideChanged => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "group_external_sharing_setting_override_changed")?; + s.end() + } + EventTypeArg::GroupJoinPolicyUpdated => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "group_join_policy_updated")?; + s.end() + } + EventTypeArg::GroupMoved => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "group_moved")?; + s.end() + } + EventTypeArg::GroupRemoveExternalId => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "group_remove_external_id")?; + s.end() + } + EventTypeArg::GroupRemoveMember => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "group_remove_member")?; + s.end() + } + EventTypeArg::GroupRename => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "group_rename")?; + s.end() + } + EventTypeArg::AccountLockOrUnlocked => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "account_lock_or_unlocked")?; + s.end() + } + EventTypeArg::EmmError => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "emm_error")?; + s.end() + } + EventTypeArg::GuestAdminSignedInViaTrustedTeams => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "guest_admin_signed_in_via_trusted_teams")?; + s.end() + } + EventTypeArg::GuestAdminSignedOutViaTrustedTeams => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "guest_admin_signed_out_via_trusted_teams")?; + s.end() + } + EventTypeArg::LoginFail => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "login_fail")?; + s.end() + } + EventTypeArg::LoginSuccess => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "login_success")?; + s.end() + } + EventTypeArg::Logout => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "logout")?; + s.end() + } + EventTypeArg::ResellerSupportSessionEnd => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "reseller_support_session_end")?; + s.end() + } + EventTypeArg::ResellerSupportSessionStart => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "reseller_support_session_start")?; + s.end() + } + EventTypeArg::SignInAsSessionEnd => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "sign_in_as_session_end")?; + s.end() + } + EventTypeArg::SignInAsSessionStart => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "sign_in_as_session_start")?; + s.end() + } + EventTypeArg::SsoError => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "sso_error")?; + s.end() + } + EventTypeArg::AddonAssigned => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "addon_assigned")?; + s.end() + } + EventTypeArg::AddonRemoved => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "addon_removed")?; + s.end() + } + EventTypeArg::BackupAdminInvitationSent => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "backup_admin_invitation_sent")?; + s.end() + } + EventTypeArg::BackupInvitationOpened => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "backup_invitation_opened")?; + s.end() + } + EventTypeArg::CreateTeamInviteLink => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "create_team_invite_link")?; + s.end() + } + EventTypeArg::DeleteTeamInviteLink => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "delete_team_invite_link")?; + s.end() + } + EventTypeArg::MemberAddExternalId => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "member_add_external_id")?; + s.end() + } + EventTypeArg::MemberAddName => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "member_add_name")?; + s.end() + } + EventTypeArg::MemberChangeAdminRole => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "member_change_admin_role")?; + s.end() + } + EventTypeArg::MemberChangeEmail => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "member_change_email")?; + s.end() + } + EventTypeArg::MemberChangeExternalId => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "member_change_external_id")?; + s.end() + } + EventTypeArg::MemberChangeMembershipType => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "member_change_membership_type")?; + s.end() + } + EventTypeArg::MemberChangeName => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "member_change_name")?; + s.end() + } + EventTypeArg::MemberChangeResellerRole => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "member_change_reseller_role")?; + s.end() + } + EventTypeArg::MemberChangeStatus => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "member_change_status")?; + s.end() + } + EventTypeArg::MemberDeleteManualContacts => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "member_delete_manual_contacts")?; + s.end() + } + EventTypeArg::MemberDeleteProfilePhoto => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "member_delete_profile_photo")?; + s.end() + } + EventTypeArg::MemberPermanentlyDeleteAccountContents => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "member_permanently_delete_account_contents")?; + s.end() + } + EventTypeArg::MemberRemoveExternalId => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "member_remove_external_id")?; + s.end() + } + EventTypeArg::MemberSetProfilePhoto => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "member_set_profile_photo")?; + s.end() + } + EventTypeArg::MemberSpaceLimitsAddCustomQuota => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "member_space_limits_add_custom_quota")?; + s.end() + } + EventTypeArg::MemberSpaceLimitsChangeCustomQuota => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "member_space_limits_change_custom_quota")?; + s.end() + } + EventTypeArg::MemberSpaceLimitsChangeStatus => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "member_space_limits_change_status")?; + s.end() + } + EventTypeArg::MemberSpaceLimitsRemoveCustomQuota => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "member_space_limits_remove_custom_quota")?; + s.end() + } + EventTypeArg::MemberSuggest => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "member_suggest")?; + s.end() + } + EventTypeArg::MemberTransferAccountContents => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "member_transfer_account_contents")?; + s.end() + } + EventTypeArg::PendingSecondaryEmailAdded => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "pending_secondary_email_added")?; + s.end() + } + EventTypeArg::ProductAssignedToMember => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "product_assigned_to_member")?; + s.end() + } + EventTypeArg::ProductRemovedFromMember => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "product_removed_from_member")?; + s.end() + } + EventTypeArg::SecondaryEmailDeleted => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "secondary_email_deleted")?; + s.end() + } + EventTypeArg::SecondaryEmailVerified => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "secondary_email_verified")?; + s.end() + } + EventTypeArg::SecondaryMailsPolicyChanged => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "secondary_mails_policy_changed")?; + s.end() + } + EventTypeArg::BinderAddPage => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "binder_add_page")?; + s.end() + } + EventTypeArg::BinderAddSection => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "binder_add_section")?; + s.end() + } + EventTypeArg::BinderRemovePage => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "binder_remove_page")?; + s.end() + } + EventTypeArg::BinderRemoveSection => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "binder_remove_section")?; + s.end() + } + EventTypeArg::BinderRenamePage => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "binder_rename_page")?; + s.end() + } + EventTypeArg::BinderRenameSection => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "binder_rename_section")?; + s.end() + } + EventTypeArg::BinderReorderPage => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "binder_reorder_page")?; + s.end() + } + EventTypeArg::BinderReorderSection => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "binder_reorder_section")?; + s.end() + } + EventTypeArg::PaperContentAddMember => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "paper_content_add_member")?; + s.end() + } + EventTypeArg::PaperContentAddToFolder => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "paper_content_add_to_folder")?; + s.end() + } + EventTypeArg::PaperContentArchive => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "paper_content_archive")?; + s.end() + } + EventTypeArg::PaperContentCreate => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "paper_content_create")?; + s.end() + } + EventTypeArg::PaperContentPermanentlyDelete => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "paper_content_permanently_delete")?; + s.end() + } + EventTypeArg::PaperContentRemoveFromFolder => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "paper_content_remove_from_folder")?; + s.end() + } + EventTypeArg::PaperContentRemoveMember => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "paper_content_remove_member")?; + s.end() + } + EventTypeArg::PaperContentRename => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "paper_content_rename")?; + s.end() + } + EventTypeArg::PaperContentRestore => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "paper_content_restore")?; + s.end() + } + EventTypeArg::PaperDocAddComment => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "paper_doc_add_comment")?; + s.end() + } + EventTypeArg::PaperDocChangeMemberRole => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "paper_doc_change_member_role")?; + s.end() + } + EventTypeArg::PaperDocChangeSharingPolicy => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "paper_doc_change_sharing_policy")?; + s.end() + } + EventTypeArg::PaperDocChangeSubscription => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "paper_doc_change_subscription")?; + s.end() + } + EventTypeArg::PaperDocDeleted => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "paper_doc_deleted")?; + s.end() + } + EventTypeArg::PaperDocDeleteComment => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "paper_doc_delete_comment")?; + s.end() + } + EventTypeArg::PaperDocDownload => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "paper_doc_download")?; + s.end() + } + EventTypeArg::PaperDocEdit => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "paper_doc_edit")?; + s.end() + } + EventTypeArg::PaperDocEditComment => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "paper_doc_edit_comment")?; + s.end() + } + EventTypeArg::PaperDocFollowed => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "paper_doc_followed")?; + s.end() + } + EventTypeArg::PaperDocMention => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "paper_doc_mention")?; + s.end() + } + EventTypeArg::PaperDocOwnershipChanged => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "paper_doc_ownership_changed")?; + s.end() + } + EventTypeArg::PaperDocRequestAccess => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "paper_doc_request_access")?; + s.end() + } + EventTypeArg::PaperDocResolveComment => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "paper_doc_resolve_comment")?; + s.end() + } + EventTypeArg::PaperDocRevert => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "paper_doc_revert")?; + s.end() + } + EventTypeArg::PaperDocSlackShare => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "paper_doc_slack_share")?; + s.end() + } + EventTypeArg::PaperDocTeamInvite => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "paper_doc_team_invite")?; + s.end() + } + EventTypeArg::PaperDocTrashed => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "paper_doc_trashed")?; + s.end() + } + EventTypeArg::PaperDocUnresolveComment => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "paper_doc_unresolve_comment")?; + s.end() + } + EventTypeArg::PaperDocUntrashed => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "paper_doc_untrashed")?; + s.end() + } + EventTypeArg::PaperDocView => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "paper_doc_view")?; + s.end() + } + EventTypeArg::PaperExternalViewAllow => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "paper_external_view_allow")?; + s.end() + } + EventTypeArg::PaperExternalViewDefaultTeam => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "paper_external_view_default_team")?; + s.end() + } + EventTypeArg::PaperExternalViewForbid => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "paper_external_view_forbid")?; + s.end() + } + EventTypeArg::PaperFolderChangeSubscription => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "paper_folder_change_subscription")?; + s.end() + } + EventTypeArg::PaperFolderDeleted => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "paper_folder_deleted")?; + s.end() + } + EventTypeArg::PaperFolderFollowed => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "paper_folder_followed")?; + s.end() + } + EventTypeArg::PaperFolderTeamInvite => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "paper_folder_team_invite")?; + s.end() + } + EventTypeArg::PaperPublishedLinkChangePermission => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "paper_published_link_change_permission")?; + s.end() + } + EventTypeArg::PaperPublishedLinkCreate => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "paper_published_link_create")?; + s.end() + } + EventTypeArg::PaperPublishedLinkDisabled => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "paper_published_link_disabled")?; + s.end() + } + EventTypeArg::PaperPublishedLinkView => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "paper_published_link_view")?; + s.end() + } + EventTypeArg::PasswordChange => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "password_change")?; + s.end() + } + EventTypeArg::PasswordReset => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "password_reset")?; + s.end() + } + EventTypeArg::PasswordResetAll => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "password_reset_all")?; + s.end() + } + EventTypeArg::ClassificationCreateReport => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "classification_create_report")?; + s.end() + } + EventTypeArg::ClassificationCreateReportFail => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "classification_create_report_fail")?; + s.end() + } + EventTypeArg::EmmCreateExceptionsReport => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "emm_create_exceptions_report")?; + s.end() + } + EventTypeArg::EmmCreateUsageReport => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "emm_create_usage_report")?; + s.end() + } + EventTypeArg::ExportMembersReport => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "export_members_report")?; + s.end() + } + EventTypeArg::ExportMembersReportFail => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "export_members_report_fail")?; + s.end() + } + EventTypeArg::ExternalSharingCreateReport => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "external_sharing_create_report")?; + s.end() + } + EventTypeArg::ExternalSharingReportFailed => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "external_sharing_report_failed")?; + s.end() + } + EventTypeArg::MemberAccessDetailsCreateReport => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "member_access_details_create_report")?; + s.end() + } + EventTypeArg::MemberAccessDetailsCreateReportFailed => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "member_access_details_create_report_failed")?; + s.end() + } + EventTypeArg::NoExpirationLinkGenCreateReport => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "no_expiration_link_gen_create_report")?; + s.end() + } + EventTypeArg::NoExpirationLinkGenReportFailed => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "no_expiration_link_gen_report_failed")?; + s.end() + } + EventTypeArg::NoPasswordLinkGenCreateReport => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "no_password_link_gen_create_report")?; + s.end() + } + EventTypeArg::NoPasswordLinkGenReportFailed => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "no_password_link_gen_report_failed")?; + s.end() + } + EventTypeArg::NoPasswordLinkViewCreateReport => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "no_password_link_view_create_report")?; + s.end() + } + EventTypeArg::NoPasswordLinkViewReportFailed => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "no_password_link_view_report_failed")?; + s.end() + } + EventTypeArg::OutdatedLinkViewCreateReport => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "outdated_link_view_create_report")?; + s.end() + } + EventTypeArg::OutdatedLinkViewReportFailed => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "outdated_link_view_report_failed")?; + s.end() + } + EventTypeArg::PaperAdminExportStart => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "paper_admin_export_start")?; + s.end() + } + EventTypeArg::RansomwareAlertCreateReport => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "ransomware_alert_create_report")?; + s.end() + } + EventTypeArg::RansomwareAlertCreateReportFailed => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "ransomware_alert_create_report_failed")?; + s.end() + } + EventTypeArg::SharedFoldersCreateReport => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "shared_folders_create_report")?; + s.end() + } + EventTypeArg::SharedFoldersCreateReportFailed => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "shared_folders_create_report_failed")?; + s.end() + } + EventTypeArg::SmartSyncCreateAdminPrivilegeReport => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "smart_sync_create_admin_privilege_report")?; + s.end() + } + EventTypeArg::TeamActivityCreateReport => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "team_activity_create_report")?; + s.end() + } + EventTypeArg::TeamActivityCreateReportFail => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "team_activity_create_report_fail")?; + s.end() + } + EventTypeArg::TeamFoldersCreateReport => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "team_folders_create_report")?; + s.end() + } + EventTypeArg::TeamFoldersCreateReportFailed => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "team_folders_create_report_failed")?; + s.end() + } + EventTypeArg::TeamStorageCreateReport => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "team_storage_create_report")?; + s.end() + } + EventTypeArg::TeamStorageCreateReportFailed => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "team_storage_create_report_failed")?; + s.end() + } + EventTypeArg::CollectionShare => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "collection_share")?; + s.end() + } + EventTypeArg::FileTransfersFileAdd => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "file_transfers_file_add")?; + s.end() + } + EventTypeArg::FileTransfersTransferDelete => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "file_transfers_transfer_delete")?; + s.end() + } + EventTypeArg::FileTransfersTransferDownload => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "file_transfers_transfer_download")?; + s.end() + } + EventTypeArg::FileTransfersTransferSend => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "file_transfers_transfer_send")?; + s.end() + } + EventTypeArg::FileTransfersTransferView => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "file_transfers_transfer_view")?; + s.end() + } + EventTypeArg::NoteAclInviteOnly => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "note_acl_invite_only")?; s.end() } - EventTypeArg::AdminAlertingChangedAlertConfig => { + EventTypeArg::NoteAclLink => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "admin_alerting_changed_alert_config")?; + s.serialize_field(".tag", "note_acl_link")?; s.end() } - EventTypeArg::AdminAlertingTriggeredAlert => { + EventTypeArg::NoteAclTeamLink => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "admin_alerting_triggered_alert")?; + s.serialize_field(".tag", "note_acl_team_link")?; s.end() } - EventTypeArg::RansomwareRestoreProcessCompleted => { + EventTypeArg::NoteShared => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "ransomware_restore_process_completed")?; + s.serialize_field(".tag", "note_shared")?; s.end() } - EventTypeArg::RansomwareRestoreProcessStarted => { + EventTypeArg::NoteShareReceive => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "ransomware_restore_process_started")?; + s.serialize_field(".tag", "note_share_receive")?; s.end() } - EventTypeArg::AppBlockedByPermissions => { + EventTypeArg::OpenNoteShared => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "app_blocked_by_permissions")?; + s.serialize_field(".tag", "open_note_shared")?; s.end() } - EventTypeArg::AppLinkTeam => { + EventTypeArg::ReplayFileSharedLinkCreated => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "app_link_team")?; + s.serialize_field(".tag", "replay_file_shared_link_created")?; s.end() } - EventTypeArg::AppLinkUser => { + EventTypeArg::ReplayFileSharedLinkModified => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "app_link_user")?; + s.serialize_field(".tag", "replay_file_shared_link_modified")?; s.end() } - EventTypeArg::AppUnlinkTeam => { + EventTypeArg::ReplayProjectTeamAdd => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "app_unlink_team")?; + s.serialize_field(".tag", "replay_project_team_add")?; s.end() } - EventTypeArg::AppUnlinkUser => { + EventTypeArg::ReplayProjectTeamDelete => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "app_unlink_user")?; + s.serialize_field(".tag", "replay_project_team_delete")?; s.end() } - EventTypeArg::IntegrationConnected => { + EventTypeArg::SendAndTrackFileAdded => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "integration_connected")?; + s.serialize_field(".tag", "send_and_track_file_added")?; s.end() } - EventTypeArg::IntegrationDisconnected => { + EventTypeArg::SendAndTrackFileRenamed => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "integration_disconnected")?; + s.serialize_field(".tag", "send_and_track_file_renamed")?; s.end() } - EventTypeArg::FileAddComment => { + EventTypeArg::SendAndTrackFileUpdated => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "file_add_comment")?; + s.serialize_field(".tag", "send_and_track_file_updated")?; s.end() } - EventTypeArg::FileChangeCommentSubscription => { + EventTypeArg::SendAndTrackLinkCreated => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "file_change_comment_subscription")?; + s.serialize_field(".tag", "send_and_track_link_created")?; s.end() } - EventTypeArg::FileDeleteComment => { + EventTypeArg::SendAndTrackLinkDeleted => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "file_delete_comment")?; + s.serialize_field(".tag", "send_and_track_link_deleted")?; s.end() } - EventTypeArg::FileEditComment => { + EventTypeArg::SendAndTrackLinkUpdated => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "file_edit_comment")?; + s.serialize_field(".tag", "send_and_track_link_updated")?; s.end() } - EventTypeArg::FileLikeComment => { + EventTypeArg::SendAndTrackLinkViewed => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "file_like_comment")?; + s.serialize_field(".tag", "send_and_track_link_viewed")?; s.end() } - EventTypeArg::FileResolveComment => { + EventTypeArg::SendAndTrackRemovedFileAndAssociatedLinks => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "file_resolve_comment")?; + s.serialize_field(".tag", "send_and_track_removed_file_and_associated_links")?; s.end() } - EventTypeArg::FileUnlikeComment => { + EventTypeArg::SfAddGroup => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "file_unlike_comment")?; + s.serialize_field(".tag", "sf_add_group")?; s.end() } - EventTypeArg::FileUnresolveComment => { + EventTypeArg::SfAllowNonMembersToViewSharedLinks => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "file_unresolve_comment")?; + s.serialize_field(".tag", "sf_allow_non_members_to_view_shared_links")?; s.end() } - EventTypeArg::GovernancePolicyAddFolders => { + EventTypeArg::SfExternalInviteWarn => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "governance_policy_add_folders")?; + s.serialize_field(".tag", "sf_external_invite_warn")?; s.end() } - EventTypeArg::GovernancePolicyAddFolderFailed => { + EventTypeArg::SfFbInvite => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "governance_policy_add_folder_failed")?; + s.serialize_field(".tag", "sf_fb_invite")?; s.end() } - EventTypeArg::GovernancePolicyContentDisposed => { + EventTypeArg::SfFbInviteChangeRole => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "governance_policy_content_disposed")?; + s.serialize_field(".tag", "sf_fb_invite_change_role")?; s.end() } - EventTypeArg::GovernancePolicyCreate => { + EventTypeArg::SfFbUninvite => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "governance_policy_create")?; + s.serialize_field(".tag", "sf_fb_uninvite")?; s.end() } - EventTypeArg::GovernancePolicyDelete => { + EventTypeArg::SfInviteGroup => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "governance_policy_delete")?; + s.serialize_field(".tag", "sf_invite_group")?; s.end() } - EventTypeArg::GovernancePolicyEditDetails => { + EventTypeArg::SfTeamGrantAccess => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "governance_policy_edit_details")?; + s.serialize_field(".tag", "sf_team_grant_access")?; s.end() } - EventTypeArg::GovernancePolicyEditDuration => { + EventTypeArg::SfTeamInvite => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "governance_policy_edit_duration")?; + s.serialize_field(".tag", "sf_team_invite")?; s.end() } - EventTypeArg::GovernancePolicyExportCreated => { + EventTypeArg::SfTeamInviteChangeRole => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "governance_policy_export_created")?; + s.serialize_field(".tag", "sf_team_invite_change_role")?; s.end() } - EventTypeArg::GovernancePolicyExportRemoved => { + EventTypeArg::SfTeamJoin => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "governance_policy_export_removed")?; + s.serialize_field(".tag", "sf_team_join")?; s.end() } - EventTypeArg::GovernancePolicyRemoveFolders => { + EventTypeArg::SfTeamJoinFromOobLink => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "governance_policy_remove_folders")?; + s.serialize_field(".tag", "sf_team_join_from_oob_link")?; s.end() } - EventTypeArg::GovernancePolicyReportCreated => { + EventTypeArg::SfTeamUninvite => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "governance_policy_report_created")?; + s.serialize_field(".tag", "sf_team_uninvite")?; s.end() } - EventTypeArg::GovernancePolicyZipPartDownloaded => { + EventTypeArg::SharedContentAddInvitees => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "governance_policy_zip_part_downloaded")?; + s.serialize_field(".tag", "shared_content_add_invitees")?; s.end() } - EventTypeArg::LegalHoldsActivateAHold => { + EventTypeArg::SharedContentAddLinkExpiry => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "legal_holds_activate_a_hold")?; + s.serialize_field(".tag", "shared_content_add_link_expiry")?; s.end() } - EventTypeArg::LegalHoldsAddMembers => { + EventTypeArg::SharedContentAddLinkPassword => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "legal_holds_add_members")?; + s.serialize_field(".tag", "shared_content_add_link_password")?; s.end() } - EventTypeArg::LegalHoldsChangeHoldDetails => { + EventTypeArg::SharedContentAddMember => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "legal_holds_change_hold_details")?; + s.serialize_field(".tag", "shared_content_add_member")?; s.end() } - EventTypeArg::LegalHoldsChangeHoldName => { + EventTypeArg::SharedContentChangeDownloadsPolicy => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "legal_holds_change_hold_name")?; + s.serialize_field(".tag", "shared_content_change_downloads_policy")?; s.end() } - EventTypeArg::LegalHoldsExportAHold => { + EventTypeArg::SharedContentChangeInviteeRole => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "legal_holds_export_a_hold")?; + s.serialize_field(".tag", "shared_content_change_invitee_role")?; s.end() } - EventTypeArg::LegalHoldsExportCancelled => { + EventTypeArg::SharedContentChangeLinkAudience => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "legal_holds_export_cancelled")?; + s.serialize_field(".tag", "shared_content_change_link_audience")?; s.end() } - EventTypeArg::LegalHoldsExportDownloaded => { + EventTypeArg::SharedContentChangeLinkExpiry => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "legal_holds_export_downloaded")?; + s.serialize_field(".tag", "shared_content_change_link_expiry")?; s.end() } - EventTypeArg::LegalHoldsExportRemoved => { + EventTypeArg::SharedContentChangeLinkPassword => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "legal_holds_export_removed")?; + s.serialize_field(".tag", "shared_content_change_link_password")?; s.end() } - EventTypeArg::LegalHoldsReleaseAHold => { + EventTypeArg::SharedContentChangeMemberRole => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "legal_holds_release_a_hold")?; + s.serialize_field(".tag", "shared_content_change_member_role")?; s.end() } - EventTypeArg::LegalHoldsRemoveMembers => { + EventTypeArg::SharedContentChangeViewerInfoPolicy => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "legal_holds_remove_members")?; + s.serialize_field(".tag", "shared_content_change_viewer_info_policy")?; s.end() } - EventTypeArg::LegalHoldsReportAHold => { + EventTypeArg::SharedContentClaimInvitation => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "legal_holds_report_a_hold")?; + s.serialize_field(".tag", "shared_content_claim_invitation")?; s.end() } - EventTypeArg::DeviceChangeIpDesktop => { + EventTypeArg::SharedContentCopy => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "device_change_ip_desktop")?; + s.serialize_field(".tag", "shared_content_copy")?; s.end() } - EventTypeArg::DeviceChangeIpMobile => { + EventTypeArg::SharedContentDownload => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "device_change_ip_mobile")?; + s.serialize_field(".tag", "shared_content_download")?; s.end() } - EventTypeArg::DeviceChangeIpWeb => { + EventTypeArg::SharedContentRelinquishMembership => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "device_change_ip_web")?; + s.serialize_field(".tag", "shared_content_relinquish_membership")?; s.end() } - EventTypeArg::DeviceDeleteOnUnlinkFail => { + EventTypeArg::SharedContentRemoveInvitees => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "device_delete_on_unlink_fail")?; + s.serialize_field(".tag", "shared_content_remove_invitees")?; s.end() } - EventTypeArg::DeviceDeleteOnUnlinkSuccess => { + EventTypeArg::SharedContentRemoveLinkExpiry => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "device_delete_on_unlink_success")?; + s.serialize_field(".tag", "shared_content_remove_link_expiry")?; s.end() } - EventTypeArg::DeviceLinkFail => { + EventTypeArg::SharedContentRemoveLinkPassword => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "device_link_fail")?; + s.serialize_field(".tag", "shared_content_remove_link_password")?; s.end() } - EventTypeArg::DeviceLinkSuccess => { + EventTypeArg::SharedContentRemoveMember => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "device_link_success")?; + s.serialize_field(".tag", "shared_content_remove_member")?; s.end() } - EventTypeArg::DeviceManagementDisabled => { + EventTypeArg::SharedContentRequestAccess => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "device_management_disabled")?; + s.serialize_field(".tag", "shared_content_request_access")?; s.end() } - EventTypeArg::DeviceManagementEnabled => { + EventTypeArg::SharedContentRestoreInvitees => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "device_management_enabled")?; + s.serialize_field(".tag", "shared_content_restore_invitees")?; s.end() } - EventTypeArg::DeviceSyncBackupStatusChanged => { + EventTypeArg::SharedContentRestoreMember => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "device_sync_backup_status_changed")?; + s.serialize_field(".tag", "shared_content_restore_member")?; s.end() } - EventTypeArg::DeviceUnlink => { + EventTypeArg::SharedContentUnshare => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "device_unlink")?; + s.serialize_field(".tag", "shared_content_unshare")?; s.end() } - EventTypeArg::DropboxPasswordsExported => { + EventTypeArg::SharedContentView => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "dropbox_passwords_exported")?; + s.serialize_field(".tag", "shared_content_view")?; s.end() } - EventTypeArg::DropboxPasswordsNewDeviceEnrolled => { + EventTypeArg::SharedFolderChangeLinkPolicy => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "dropbox_passwords_new_device_enrolled")?; + s.serialize_field(".tag", "shared_folder_change_link_policy")?; s.end() } - EventTypeArg::EmmRefreshAuthToken => { + EventTypeArg::SharedFolderChangeMembersInheritancePolicy => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "emm_refresh_auth_token")?; + s.serialize_field(".tag", "shared_folder_change_members_inheritance_policy")?; s.end() } - EventTypeArg::ExternalDriveBackupEligibilityStatusChecked => { + EventTypeArg::SharedFolderChangeMembersManagementPolicy => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "external_drive_backup_eligibility_status_checked")?; + s.serialize_field(".tag", "shared_folder_change_members_management_policy")?; s.end() } - EventTypeArg::ExternalDriveBackupStatusChanged => { + EventTypeArg::SharedFolderChangeMembersPolicy => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "external_drive_backup_status_changed")?; + s.serialize_field(".tag", "shared_folder_change_members_policy")?; s.end() } - EventTypeArg::AccountCaptureChangeAvailability => { + EventTypeArg::SharedFolderCreate => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "account_capture_change_availability")?; + s.serialize_field(".tag", "shared_folder_create")?; s.end() } - EventTypeArg::AccountCaptureMigrateAccount => { + EventTypeArg::SharedFolderDeclineInvitation => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "account_capture_migrate_account")?; + s.serialize_field(".tag", "shared_folder_decline_invitation")?; s.end() } - EventTypeArg::AccountCaptureNotificationEmailsSent => { + EventTypeArg::SharedFolderMount => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "account_capture_notification_emails_sent")?; + s.serialize_field(".tag", "shared_folder_mount")?; s.end() } - EventTypeArg::AccountCaptureRelinquishAccount => { + EventTypeArg::SharedFolderNest => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "account_capture_relinquish_account")?; + s.serialize_field(".tag", "shared_folder_nest")?; s.end() } - EventTypeArg::DisabledDomainInvites => { + EventTypeArg::SharedFolderTransferOwnership => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "disabled_domain_invites")?; + s.serialize_field(".tag", "shared_folder_transfer_ownership")?; s.end() } - EventTypeArg::DomainInvitesApproveRequestToJoinTeam => { + EventTypeArg::SharedFolderUnmount => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "domain_invites_approve_request_to_join_team")?; + s.serialize_field(".tag", "shared_folder_unmount")?; s.end() } - EventTypeArg::DomainInvitesDeclineRequestToJoinTeam => { + EventTypeArg::SharedLinkAddExpiry => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "domain_invites_decline_request_to_join_team")?; + s.serialize_field(".tag", "shared_link_add_expiry")?; s.end() } - EventTypeArg::DomainInvitesEmailExistingUsers => { + EventTypeArg::SharedLinkChangeExpiry => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "domain_invites_email_existing_users")?; + s.serialize_field(".tag", "shared_link_change_expiry")?; s.end() } - EventTypeArg::DomainInvitesRequestToJoinTeam => { + EventTypeArg::SharedLinkChangeVisibility => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "domain_invites_request_to_join_team")?; + s.serialize_field(".tag", "shared_link_change_visibility")?; s.end() } - EventTypeArg::DomainInvitesSetInviteNewUserPrefToNo => { + EventTypeArg::SharedLinkCopy => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "domain_invites_set_invite_new_user_pref_to_no")?; + s.serialize_field(".tag", "shared_link_copy")?; s.end() } - EventTypeArg::DomainInvitesSetInviteNewUserPrefToYes => { + EventTypeArg::SharedLinkCreate => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "domain_invites_set_invite_new_user_pref_to_yes")?; + s.serialize_field(".tag", "shared_link_create")?; s.end() } - EventTypeArg::DomainVerificationAddDomainFail => { + EventTypeArg::SharedLinkDisable => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "domain_verification_add_domain_fail")?; + s.serialize_field(".tag", "shared_link_disable")?; s.end() } - EventTypeArg::DomainVerificationAddDomainSuccess => { + EventTypeArg::SharedLinkDownload => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "domain_verification_add_domain_success")?; + s.serialize_field(".tag", "shared_link_download")?; s.end() } - EventTypeArg::DomainVerificationRemoveDomain => { + EventTypeArg::SharedLinkRemoveExpiry => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "domain_verification_remove_domain")?; + s.serialize_field(".tag", "shared_link_remove_expiry")?; s.end() } - EventTypeArg::EnabledDomainInvites => { + EventTypeArg::SharedLinkRemoveVisitor => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "enabled_domain_invites")?; + s.serialize_field(".tag", "shared_link_remove_visitor")?; s.end() } - EventTypeArg::TeamEncryptionKeyCancelKeyDeletion => { + EventTypeArg::SharedLinkSettingsAddExpiration => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "team_encryption_key_cancel_key_deletion")?; + s.serialize_field(".tag", "shared_link_settings_add_expiration")?; s.end() } - EventTypeArg::TeamEncryptionKeyCreateKey => { + EventTypeArg::SharedLinkSettingsAddPassword => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "team_encryption_key_create_key")?; + s.serialize_field(".tag", "shared_link_settings_add_password")?; s.end() } - EventTypeArg::TeamEncryptionKeyDeleteKey => { + EventTypeArg::SharedLinkSettingsAllowDownloadDisabled => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "team_encryption_key_delete_key")?; + s.serialize_field(".tag", "shared_link_settings_allow_download_disabled")?; s.end() } - EventTypeArg::TeamEncryptionKeyDisableKey => { + EventTypeArg::SharedLinkSettingsAllowDownloadEnabled => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "team_encryption_key_disable_key")?; + s.serialize_field(".tag", "shared_link_settings_allow_download_enabled")?; s.end() } - EventTypeArg::TeamEncryptionKeyEnableKey => { + EventTypeArg::SharedLinkSettingsChangeAudience => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "team_encryption_key_enable_key")?; + s.serialize_field(".tag", "shared_link_settings_change_audience")?; s.end() } - EventTypeArg::TeamEncryptionKeyRotateKey => { + EventTypeArg::SharedLinkSettingsChangeExpiration => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "team_encryption_key_rotate_key")?; + s.serialize_field(".tag", "shared_link_settings_change_expiration")?; s.end() } - EventTypeArg::TeamEncryptionKeyScheduleKeyDeletion => { + EventTypeArg::SharedLinkSettingsChangePassword => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "team_encryption_key_schedule_key_deletion")?; + s.serialize_field(".tag", "shared_link_settings_change_password")?; s.end() } - EventTypeArg::ApplyNamingConvention => { + EventTypeArg::SharedLinkSettingsRemoveExpiration => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "apply_naming_convention")?; + s.serialize_field(".tag", "shared_link_settings_remove_expiration")?; s.end() } - EventTypeArg::CreateFolder => { + EventTypeArg::SharedLinkSettingsRemovePassword => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "create_folder")?; + s.serialize_field(".tag", "shared_link_settings_remove_password")?; s.end() } - EventTypeArg::FileAdd => { + EventTypeArg::SharedLinkShare => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "file_add")?; + s.serialize_field(".tag", "shared_link_share")?; s.end() } - EventTypeArg::FileAddFromAutomation => { + EventTypeArg::SharedLinkView => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "file_add_from_automation")?; + s.serialize_field(".tag", "shared_link_view")?; s.end() } - EventTypeArg::FileCopy => { + EventTypeArg::SharedNoteOpened => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "file_copy")?; + s.serialize_field(".tag", "shared_note_opened")?; s.end() } - EventTypeArg::FileDelete => { + EventTypeArg::ShmodelDisableDownloads => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "file_delete")?; + s.serialize_field(".tag", "shmodel_disable_downloads")?; s.end() } - EventTypeArg::FileDownload => { + EventTypeArg::ShmodelEnableDownloads => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "file_download")?; + s.serialize_field(".tag", "shmodel_enable_downloads")?; s.end() } - EventTypeArg::FileEdit => { + EventTypeArg::ShmodelGroupShare => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "file_edit")?; + s.serialize_field(".tag", "shmodel_group_share")?; s.end() } - EventTypeArg::FileGetCopyReference => { + EventTypeArg::ShowcaseAccessGranted => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "file_get_copy_reference")?; + s.serialize_field(".tag", "showcase_access_granted")?; s.end() } - EventTypeArg::FileLockingLockStatusChanged => { + EventTypeArg::ShowcaseAddMember => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "file_locking_lock_status_changed")?; + s.serialize_field(".tag", "showcase_add_member")?; s.end() } - EventTypeArg::FileMove => { + EventTypeArg::ShowcaseArchived => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "file_move")?; + s.serialize_field(".tag", "showcase_archived")?; s.end() } - EventTypeArg::FilePermanentlyDelete => { + EventTypeArg::ShowcaseCreated => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "file_permanently_delete")?; + s.serialize_field(".tag", "showcase_created")?; s.end() } - EventTypeArg::FilePreview => { + EventTypeArg::ShowcaseDeleteComment => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "file_preview")?; + s.serialize_field(".tag", "showcase_delete_comment")?; s.end() } - EventTypeArg::FileRename => { + EventTypeArg::ShowcaseEdited => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "file_rename")?; + s.serialize_field(".tag", "showcase_edited")?; s.end() } - EventTypeArg::FileRestore => { + EventTypeArg::ShowcaseEditComment => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "file_restore")?; + s.serialize_field(".tag", "showcase_edit_comment")?; s.end() } - EventTypeArg::FileRevert => { + EventTypeArg::ShowcaseFileAdded => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "file_revert")?; + s.serialize_field(".tag", "showcase_file_added")?; s.end() } - EventTypeArg::FileRollbackChanges => { + EventTypeArg::ShowcaseFileDownload => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "file_rollback_changes")?; + s.serialize_field(".tag", "showcase_file_download")?; s.end() } - EventTypeArg::FileSaveCopyReference => { + EventTypeArg::ShowcaseFileRemoved => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "file_save_copy_reference")?; + s.serialize_field(".tag", "showcase_file_removed")?; s.end() } - EventTypeArg::FolderOverviewDescriptionChanged => { + EventTypeArg::ShowcaseFileView => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "folder_overview_description_changed")?; + s.serialize_field(".tag", "showcase_file_view")?; s.end() } - EventTypeArg::FolderOverviewItemPinned => { + EventTypeArg::ShowcasePermanentlyDeleted => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "folder_overview_item_pinned")?; + s.serialize_field(".tag", "showcase_permanently_deleted")?; s.end() } - EventTypeArg::FolderOverviewItemUnpinned => { + EventTypeArg::ShowcasePostComment => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "folder_overview_item_unpinned")?; + s.serialize_field(".tag", "showcase_post_comment")?; s.end() } - EventTypeArg::ObjectLabelAdded => { + EventTypeArg::ShowcaseRemoveMember => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "object_label_added")?; + s.serialize_field(".tag", "showcase_remove_member")?; s.end() } - EventTypeArg::ObjectLabelRemoved => { + EventTypeArg::ShowcaseRenamed => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "object_label_removed")?; + s.serialize_field(".tag", "showcase_renamed")?; s.end() } - EventTypeArg::ObjectLabelUpdatedValue => { + EventTypeArg::ShowcaseRequestAccess => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "object_label_updated_value")?; + s.serialize_field(".tag", "showcase_request_access")?; + s.end() + } + EventTypeArg::ShowcaseResolveComment => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "showcase_resolve_comment")?; + s.end() + } + EventTypeArg::ShowcaseRestored => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "showcase_restored")?; + s.end() + } + EventTypeArg::ShowcaseTrashed => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "showcase_trashed")?; + s.end() + } + EventTypeArg::ShowcaseTrashedDeprecated => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "showcase_trashed_deprecated")?; + s.end() + } + EventTypeArg::ShowcaseUnresolveComment => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "showcase_unresolve_comment")?; + s.end() + } + EventTypeArg::ShowcaseUntrashed => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "showcase_untrashed")?; + s.end() + } + EventTypeArg::ShowcaseUntrashedDeprecated => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "showcase_untrashed_deprecated")?; + s.end() + } + EventTypeArg::ShowcaseView => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "showcase_view")?; + s.end() + } + EventTypeArg::SignSignatureRequestCanceled => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "sign_signature_request_canceled")?; + s.end() + } + EventTypeArg::SignSignatureRequestCompleted => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "sign_signature_request_completed")?; + s.end() + } + EventTypeArg::SignSignatureRequestDeclined => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "sign_signature_request_declined")?; + s.end() + } + EventTypeArg::SignSignatureRequestOpened => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "sign_signature_request_opened")?; + s.end() + } + EventTypeArg::SignSignatureRequestReminderSent => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "sign_signature_request_reminder_sent")?; + s.end() + } + EventTypeArg::SignSignatureRequestSent => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "sign_signature_request_sent")?; + s.end() + } + EventTypeArg::SignTemplateCreated => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "sign_template_created")?; + s.end() + } + EventTypeArg::SignTemplateShared => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "sign_template_shared")?; + s.end() + } + EventTypeArg::RiscSecurityEvent => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "risc_security_event")?; + s.end() + } + EventTypeArg::SsoAddCert => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "sso_add_cert")?; + s.end() + } + EventTypeArg::SsoAddLoginUrl => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "sso_add_login_url")?; + s.end() + } + EventTypeArg::SsoAddLogoutUrl => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "sso_add_logout_url")?; + s.end() + } + EventTypeArg::SsoChangeCert => { + // unit + let mut s = serializer.serialize_struct("EventTypeArg", 1)?; + s.serialize_field(".tag", "sso_change_cert")?; s.end() } - EventTypeArg::OrganizeFolderWithTidy => { + EventTypeArg::SsoChangeLoginUrl => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "organize_folder_with_tidy")?; + s.serialize_field(".tag", "sso_change_login_url")?; s.end() } - EventTypeArg::ReplayFileDelete => { + EventTypeArg::SsoChangeLogoutUrl => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "replay_file_delete")?; + s.serialize_field(".tag", "sso_change_logout_url")?; s.end() } - EventTypeArg::RewindFolder => { + EventTypeArg::SsoChangeSamlIdentityMode => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "rewind_folder")?; + s.serialize_field(".tag", "sso_change_saml_identity_mode")?; s.end() } - EventTypeArg::UndoNamingConvention => { + EventTypeArg::SsoRemoveCert => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "undo_naming_convention")?; + s.serialize_field(".tag", "sso_remove_cert")?; s.end() } - EventTypeArg::UndoOrganizeFolderWithTidy => { + EventTypeArg::SsoRemoveLoginUrl => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "undo_organize_folder_with_tidy")?; + s.serialize_field(".tag", "sso_remove_login_url")?; s.end() } - EventTypeArg::UserTagsAdded => { + EventTypeArg::SsoRemoveLogoutUrl => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "user_tags_added")?; + s.serialize_field(".tag", "sso_remove_logout_url")?; s.end() } - EventTypeArg::UserTagsRemoved => { + EventTypeArg::TeamFolderChangeStatus => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "user_tags_removed")?; + s.serialize_field(".tag", "team_folder_change_status")?; s.end() } - EventTypeArg::EmailIngestReceiveFile => { + EventTypeArg::TeamFolderCreate => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "email_ingest_receive_file")?; + s.serialize_field(".tag", "team_folder_create")?; s.end() } - EventTypeArg::FileRequestChange => { + EventTypeArg::TeamFolderDowngrade => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "file_request_change")?; + s.serialize_field(".tag", "team_folder_downgrade")?; s.end() } - EventTypeArg::FileRequestClose => { + EventTypeArg::TeamFolderPermanentlyDelete => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "file_request_close")?; + s.serialize_field(".tag", "team_folder_permanently_delete")?; s.end() } - EventTypeArg::FileRequestCreate => { + EventTypeArg::TeamFolderRename => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "file_request_create")?; + s.serialize_field(".tag", "team_folder_rename")?; s.end() } - EventTypeArg::FileRequestDelete => { + EventTypeArg::TeamSelectiveSyncSettingsChanged => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "file_request_delete")?; + s.serialize_field(".tag", "team_selective_sync_settings_changed")?; s.end() } - EventTypeArg::FileRequestReceiveFile => { + EventTypeArg::AccountCaptureChangePolicy => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "file_request_receive_file")?; + s.serialize_field(".tag", "account_capture_change_policy")?; s.end() } - EventTypeArg::GroupAddExternalId => { + EventTypeArg::AdminEmailRemindersChanged => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "group_add_external_id")?; + s.serialize_field(".tag", "admin_email_reminders_changed")?; s.end() } - EventTypeArg::GroupAddMember => { + EventTypeArg::AiThirdPartySharingDropboxBasePolicyChanged => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "group_add_member")?; + s.serialize_field(".tag", "ai_third_party_sharing_dropbox_base_policy_changed")?; s.end() } - EventTypeArg::GroupChangeExternalId => { + EventTypeArg::AllowDownloadDisabled => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "group_change_external_id")?; + s.serialize_field(".tag", "allow_download_disabled")?; s.end() } - EventTypeArg::GroupChangeManagementType => { + EventTypeArg::AllowDownloadEnabled => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "group_change_management_type")?; + s.serialize_field(".tag", "allow_download_enabled")?; s.end() } - EventTypeArg::GroupChangeMemberRole => { + EventTypeArg::AppleLoginChangePolicy => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "group_change_member_role")?; + s.serialize_field(".tag", "apple_login_change_policy")?; s.end() } - EventTypeArg::GroupCreate => { + EventTypeArg::AppPermissionsChanged => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "group_create")?; + s.serialize_field(".tag", "app_permissions_changed")?; s.end() } - EventTypeArg::GroupDelete => { + EventTypeArg::CameraUploadsPolicyChanged => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "group_delete")?; + s.serialize_field(".tag", "camera_uploads_policy_changed")?; s.end() } - EventTypeArg::GroupDescriptionUpdated => { + EventTypeArg::CaptureTeamSpacePolicyChanged => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "group_description_updated")?; + s.serialize_field(".tag", "capture_team_space_policy_changed")?; s.end() } - EventTypeArg::GroupJoinPolicyUpdated => { + EventTypeArg::CaptureTranscriptPolicyChanged => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "group_join_policy_updated")?; + s.serialize_field(".tag", "capture_transcript_policy_changed")?; s.end() } - EventTypeArg::GroupMoved => { + EventTypeArg::ClassificationChangePolicy => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "group_moved")?; + s.serialize_field(".tag", "classification_change_policy")?; s.end() } - EventTypeArg::GroupRemoveExternalId => { + EventTypeArg::ComputerBackupPolicyChanged => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "group_remove_external_id")?; + s.serialize_field(".tag", "computer_backup_policy_changed")?; s.end() } - EventTypeArg::GroupRemoveMember => { + EventTypeArg::ContentAdministrationPolicyChanged => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "group_remove_member")?; + s.serialize_field(".tag", "content_administration_policy_changed")?; s.end() } - EventTypeArg::GroupRename => { + EventTypeArg::ContentDeletionProtectionChangePolicy => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "group_rename")?; + s.serialize_field(".tag", "content_deletion_protection_change_policy")?; s.end() } - EventTypeArg::AccountLockOrUnlocked => { + EventTypeArg::DashExternalSharingPolicyChanged => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "account_lock_or_unlocked")?; + s.serialize_field(".tag", "dash_external_sharing_policy_changed")?; s.end() } - EventTypeArg::EmmError => { + EventTypeArg::DataPlacementRestrictionChangePolicy => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "emm_error")?; + s.serialize_field(".tag", "data_placement_restriction_change_policy")?; s.end() } - EventTypeArg::GuestAdminSignedInViaTrustedTeams => { + EventTypeArg::DataPlacementRestrictionSatisfyPolicy => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "guest_admin_signed_in_via_trusted_teams")?; + s.serialize_field(".tag", "data_placement_restriction_satisfy_policy")?; s.end() } - EventTypeArg::GuestAdminSignedOutViaTrustedTeams => { + EventTypeArg::DeviceApprovalsAddException => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "guest_admin_signed_out_via_trusted_teams")?; + s.serialize_field(".tag", "device_approvals_add_exception")?; s.end() } - EventTypeArg::LoginFail => { + EventTypeArg::DeviceApprovalsChangeDesktopPolicy => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "login_fail")?; + s.serialize_field(".tag", "device_approvals_change_desktop_policy")?; s.end() } - EventTypeArg::LoginSuccess => { + EventTypeArg::DeviceApprovalsChangeMobilePolicy => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "login_success")?; + s.serialize_field(".tag", "device_approvals_change_mobile_policy")?; s.end() } - EventTypeArg::Logout => { + EventTypeArg::DeviceApprovalsChangeOverageAction => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "logout")?; + s.serialize_field(".tag", "device_approvals_change_overage_action")?; s.end() } - EventTypeArg::ResellerSupportSessionEnd => { + EventTypeArg::DeviceApprovalsChangeUnlinkAction => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "reseller_support_session_end")?; + s.serialize_field(".tag", "device_approvals_change_unlink_action")?; s.end() } - EventTypeArg::ResellerSupportSessionStart => { + EventTypeArg::DeviceApprovalsRemoveException => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "reseller_support_session_start")?; + s.serialize_field(".tag", "device_approvals_remove_exception")?; s.end() } - EventTypeArg::SignInAsSessionEnd => { + EventTypeArg::DirectoryRestrictionsAddMembers => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "sign_in_as_session_end")?; + s.serialize_field(".tag", "directory_restrictions_add_members")?; s.end() } - EventTypeArg::SignInAsSessionStart => { + EventTypeArg::DirectoryRestrictionsRemoveMembers => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "sign_in_as_session_start")?; + s.serialize_field(".tag", "directory_restrictions_remove_members")?; s.end() } - EventTypeArg::SsoError => { + EventTypeArg::DropboxPasswordsPolicyChanged => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "sso_error")?; + s.serialize_field(".tag", "dropbox_passwords_policy_changed")?; s.end() } - EventTypeArg::BackupAdminInvitationSent => { + EventTypeArg::EmailIngestPolicyChanged => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "backup_admin_invitation_sent")?; + s.serialize_field(".tag", "email_ingest_policy_changed")?; s.end() } - EventTypeArg::BackupInvitationOpened => { + EventTypeArg::EmmAddException => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "backup_invitation_opened")?; + s.serialize_field(".tag", "emm_add_exception")?; s.end() } - EventTypeArg::CreateTeamInviteLink => { + EventTypeArg::EmmChangePolicy => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "create_team_invite_link")?; + s.serialize_field(".tag", "emm_change_policy")?; s.end() } - EventTypeArg::DeleteTeamInviteLink => { + EventTypeArg::EmmRemoveException => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "delete_team_invite_link")?; + s.serialize_field(".tag", "emm_remove_exception")?; s.end() } - EventTypeArg::MemberAddExternalId => { + EventTypeArg::ExtendedVersionHistoryChangePolicy => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "member_add_external_id")?; + s.serialize_field(".tag", "extended_version_history_change_policy")?; s.end() } - EventTypeArg::MemberAddName => { + EventTypeArg::ExternalDriveBackupPolicyChanged => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "member_add_name")?; + s.serialize_field(".tag", "external_drive_backup_policy_changed")?; s.end() } - EventTypeArg::MemberChangeAdminRole => { + EventTypeArg::FileCommentsChangePolicy => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "member_change_admin_role")?; + s.serialize_field(".tag", "file_comments_change_policy")?; s.end() } - EventTypeArg::MemberChangeEmail => { + EventTypeArg::FileLockingPolicyChanged => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "member_change_email")?; + s.serialize_field(".tag", "file_locking_policy_changed")?; s.end() } - EventTypeArg::MemberChangeExternalId => { + EventTypeArg::FileProviderMigrationPolicyChanged => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "member_change_external_id")?; + s.serialize_field(".tag", "file_provider_migration_policy_changed")?; s.end() } - EventTypeArg::MemberChangeMembershipType => { + EventTypeArg::FileRequestsChangePolicy => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "member_change_membership_type")?; + s.serialize_field(".tag", "file_requests_change_policy")?; s.end() } - EventTypeArg::MemberChangeName => { + EventTypeArg::FileRequestsEmailsEnabled => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "member_change_name")?; + s.serialize_field(".tag", "file_requests_emails_enabled")?; s.end() } - EventTypeArg::MemberChangeResellerRole => { + EventTypeArg::FileRequestsEmailsRestrictedToTeamOnly => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "member_change_reseller_role")?; + s.serialize_field(".tag", "file_requests_emails_restricted_to_team_only")?; s.end() } - EventTypeArg::MemberChangeStatus => { + EventTypeArg::FileTransfersPolicyChanged => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "member_change_status")?; + s.serialize_field(".tag", "file_transfers_policy_changed")?; s.end() } - EventTypeArg::MemberDeleteManualContacts => { + EventTypeArg::FlexibleFileNamesPolicyChanged => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "member_delete_manual_contacts")?; + s.serialize_field(".tag", "flexible_file_names_policy_changed")?; s.end() } - EventTypeArg::MemberDeleteProfilePhoto => { + EventTypeArg::FolderLinkRestrictionPolicyChanged => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "member_delete_profile_photo")?; + s.serialize_field(".tag", "folder_link_restriction_policy_changed")?; s.end() } - EventTypeArg::MemberPermanentlyDeleteAccountContents => { + EventTypeArg::GoogleSsoChangePolicy => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "member_permanently_delete_account_contents")?; + s.serialize_field(".tag", "google_sso_change_policy")?; s.end() } - EventTypeArg::MemberRemoveExternalId => { + EventTypeArg::GroupUserManagementChangePolicy => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "member_remove_external_id")?; + s.serialize_field(".tag", "group_user_management_change_policy")?; s.end() } - EventTypeArg::MemberSetProfilePhoto => { + EventTypeArg::IntegrationPolicyChanged => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "member_set_profile_photo")?; + s.serialize_field(".tag", "integration_policy_changed")?; s.end() } - EventTypeArg::MemberSpaceLimitsAddCustomQuota => { + EventTypeArg::InviteAcceptanceEmailPolicyChanged => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "member_space_limits_add_custom_quota")?; + s.serialize_field(".tag", "invite_acceptance_email_policy_changed")?; s.end() } - EventTypeArg::MemberSpaceLimitsChangeCustomQuota => { + EventTypeArg::MemberRequestsChangePolicy => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "member_space_limits_change_custom_quota")?; + s.serialize_field(".tag", "member_requests_change_policy")?; s.end() } - EventTypeArg::MemberSpaceLimitsChangeStatus => { + EventTypeArg::MemberSendInvitePolicyChanged => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "member_space_limits_change_status")?; + s.serialize_field(".tag", "member_send_invite_policy_changed")?; s.end() } - EventTypeArg::MemberSpaceLimitsRemoveCustomQuota => { + EventTypeArg::MemberSpaceLimitsAddException => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "member_space_limits_remove_custom_quota")?; + s.serialize_field(".tag", "member_space_limits_add_exception")?; s.end() } - EventTypeArg::MemberSuggest => { + EventTypeArg::MemberSpaceLimitsChangeCapsTypePolicy => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "member_suggest")?; + s.serialize_field(".tag", "member_space_limits_change_caps_type_policy")?; s.end() } - EventTypeArg::MemberTransferAccountContents => { + EventTypeArg::MemberSpaceLimitsChangePolicy => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "member_transfer_account_contents")?; + s.serialize_field(".tag", "member_space_limits_change_policy")?; s.end() } - EventTypeArg::PendingSecondaryEmailAdded => { + EventTypeArg::MemberSpaceLimitsRemoveException => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "pending_secondary_email_added")?; + s.serialize_field(".tag", "member_space_limits_remove_exception")?; s.end() } - EventTypeArg::SecondaryEmailDeleted => { + EventTypeArg::MemberSuggestionsChangePolicy => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "secondary_email_deleted")?; + s.serialize_field(".tag", "member_suggestions_change_policy")?; s.end() } - EventTypeArg::SecondaryEmailVerified => { + EventTypeArg::MicrosoftLoginChangePolicy => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "secondary_email_verified")?; + s.serialize_field(".tag", "microsoft_login_change_policy")?; s.end() } - EventTypeArg::SecondaryMailsPolicyChanged => { + EventTypeArg::MicrosoftOfficeAddinChangePolicy => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "secondary_mails_policy_changed")?; + s.serialize_field(".tag", "microsoft_office_addin_change_policy")?; s.end() } - EventTypeArg::BinderAddPage => { + EventTypeArg::NetworkControlChangePolicy => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "binder_add_page")?; + s.serialize_field(".tag", "network_control_change_policy")?; s.end() } - EventTypeArg::BinderAddSection => { + EventTypeArg::PaperChangeDeploymentPolicy => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "binder_add_section")?; + s.serialize_field(".tag", "paper_change_deployment_policy")?; s.end() } - EventTypeArg::BinderRemovePage => { + EventTypeArg::PaperChangeMemberLinkPolicy => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "binder_remove_page")?; + s.serialize_field(".tag", "paper_change_member_link_policy")?; s.end() } - EventTypeArg::BinderRemoveSection => { + EventTypeArg::PaperChangeMemberPolicy => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "binder_remove_section")?; + s.serialize_field(".tag", "paper_change_member_policy")?; s.end() } - EventTypeArg::BinderRenamePage => { + EventTypeArg::PaperChangePolicy => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "binder_rename_page")?; + s.serialize_field(".tag", "paper_change_policy")?; s.end() } - EventTypeArg::BinderRenameSection => { + EventTypeArg::PaperDefaultFolderPolicyChanged => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "binder_rename_section")?; + s.serialize_field(".tag", "paper_default_folder_policy_changed")?; s.end() } - EventTypeArg::BinderReorderPage => { + EventTypeArg::PaperDesktopPolicyChanged => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "binder_reorder_page")?; + s.serialize_field(".tag", "paper_desktop_policy_changed")?; s.end() } - EventTypeArg::BinderReorderSection => { + EventTypeArg::PaperEnabledUsersGroupAddition => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "binder_reorder_section")?; + s.serialize_field(".tag", "paper_enabled_users_group_addition")?; s.end() } - EventTypeArg::PaperContentAddMember => { + EventTypeArg::PaperEnabledUsersGroupRemoval => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "paper_content_add_member")?; + s.serialize_field(".tag", "paper_enabled_users_group_removal")?; s.end() } - EventTypeArg::PaperContentAddToFolder => { + EventTypeArg::PasskeyLoginPolicyChanged => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "paper_content_add_to_folder")?; + s.serialize_field(".tag", "passkey_login_policy_changed")?; s.end() } - EventTypeArg::PaperContentArchive => { + EventTypeArg::PasswordStrengthRequirementsChangePolicy => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "paper_content_archive")?; + s.serialize_field(".tag", "password_strength_requirements_change_policy")?; s.end() } - EventTypeArg::PaperContentCreate => { + EventTypeArg::PermanentDeleteChangePolicy => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "paper_content_create")?; + s.serialize_field(".tag", "permanent_delete_change_policy")?; s.end() } - EventTypeArg::PaperContentPermanentlyDelete => { + EventTypeArg::PreviewsAiPolicyChanged => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "paper_content_permanently_delete")?; + s.serialize_field(".tag", "previews_ai_policy_changed")?; s.end() } - EventTypeArg::PaperContentRemoveFromFolder => { + EventTypeArg::ReplayAddingPeoplePolicyChanged => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "paper_content_remove_from_folder")?; + s.serialize_field(".tag", "replay_adding_people_policy_changed")?; s.end() } - EventTypeArg::PaperContentRemoveMember => { + EventTypeArg::ReplaySharingPolicyChanged => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "paper_content_remove_member")?; + s.serialize_field(".tag", "replay_sharing_policy_changed")?; s.end() } - EventTypeArg::PaperContentRename => { + EventTypeArg::ResellerSupportChangePolicy => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "paper_content_rename")?; + s.serialize_field(".tag", "reseller_support_change_policy")?; s.end() } - EventTypeArg::PaperContentRestore => { + EventTypeArg::RewindPolicyChanged => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "paper_content_restore")?; + s.serialize_field(".tag", "rewind_policy_changed")?; s.end() } - EventTypeArg::PaperDocAddComment => { + EventTypeArg::SendAndTrackPolicyChanged => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "paper_doc_add_comment")?; + s.serialize_field(".tag", "send_and_track_policy_changed")?; s.end() } - EventTypeArg::PaperDocChangeMemberRole => { + EventTypeArg::SendExternalSharingPolicyChanged => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "paper_doc_change_member_role")?; + s.serialize_field(".tag", "send_external_sharing_policy_changed")?; s.end() } - EventTypeArg::PaperDocChangeSharingPolicy => { + EventTypeArg::SendForSignaturePolicyChanged => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "paper_doc_change_sharing_policy")?; + s.serialize_field(".tag", "send_for_signature_policy_changed")?; s.end() } - EventTypeArg::PaperDocChangeSubscription => { + EventTypeArg::SharedLinkDefaultPermissionsPolicyChanged => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "paper_doc_change_subscription")?; + s.serialize_field(".tag", "shared_link_default_permissions_policy_changed")?; s.end() } - EventTypeArg::PaperDocDeleted => { + EventTypeArg::SharingChangeFolderJoinPolicy => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "paper_doc_deleted")?; + s.serialize_field(".tag", "sharing_change_folder_join_policy")?; s.end() } - EventTypeArg::PaperDocDeleteComment => { + EventTypeArg::SharingChangeLinkAllowChangeExpirationPolicy => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "paper_doc_delete_comment")?; + s.serialize_field(".tag", "sharing_change_link_allow_change_expiration_policy")?; s.end() } - EventTypeArg::PaperDocDownload => { + EventTypeArg::SharingChangeLinkDefaultExpirationPolicy => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "paper_doc_download")?; + s.serialize_field(".tag", "sharing_change_link_default_expiration_policy")?; s.end() } - EventTypeArg::PaperDocEdit => { + EventTypeArg::SharingChangeLinkEnforcePasswordPolicy => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "paper_doc_edit")?; + s.serialize_field(".tag", "sharing_change_link_enforce_password_policy")?; s.end() } - EventTypeArg::PaperDocEditComment => { + EventTypeArg::SharingChangeLinkPolicy => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "paper_doc_edit_comment")?; + s.serialize_field(".tag", "sharing_change_link_policy")?; s.end() } - EventTypeArg::PaperDocFollowed => { + EventTypeArg::SharingChangeMemberPolicy => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "paper_doc_followed")?; + s.serialize_field(".tag", "sharing_change_member_policy")?; s.end() } - EventTypeArg::PaperDocMention => { + EventTypeArg::ShowcaseChangeDownloadPolicy => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "paper_doc_mention")?; + s.serialize_field(".tag", "showcase_change_download_policy")?; s.end() } - EventTypeArg::PaperDocOwnershipChanged => { + EventTypeArg::ShowcaseChangeEnabledPolicy => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "paper_doc_ownership_changed")?; + s.serialize_field(".tag", "showcase_change_enabled_policy")?; s.end() } - EventTypeArg::PaperDocRequestAccess => { + EventTypeArg::ShowcaseChangeExternalSharingPolicy => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "paper_doc_request_access")?; + s.serialize_field(".tag", "showcase_change_external_sharing_policy")?; s.end() } - EventTypeArg::PaperDocResolveComment => { + EventTypeArg::SignExternalSharingPolicyChanged => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "paper_doc_resolve_comment")?; + s.serialize_field(".tag", "sign_external_sharing_policy_changed")?; s.end() } - EventTypeArg::PaperDocRevert => { + EventTypeArg::SignTemplateCreationPermissionChanged => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "paper_doc_revert")?; + s.serialize_field(".tag", "sign_template_creation_permission_changed")?; s.end() } - EventTypeArg::PaperDocSlackShare => { + EventTypeArg::SmarterSmartSyncPolicyChanged => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "paper_doc_slack_share")?; + s.serialize_field(".tag", "smarter_smart_sync_policy_changed")?; s.end() } - EventTypeArg::PaperDocTeamInvite => { + EventTypeArg::SmartSyncChangePolicy => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "paper_doc_team_invite")?; + s.serialize_field(".tag", "smart_sync_change_policy")?; s.end() } - EventTypeArg::PaperDocTrashed => { + EventTypeArg::SmartSyncNotOptOut => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "paper_doc_trashed")?; + s.serialize_field(".tag", "smart_sync_not_opt_out")?; s.end() } - EventTypeArg::PaperDocUnresolveComment => { + EventTypeArg::SmartSyncOptOut => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "paper_doc_unresolve_comment")?; + s.serialize_field(".tag", "smart_sync_opt_out")?; s.end() } - EventTypeArg::PaperDocUntrashed => { + EventTypeArg::SsoChangePolicy => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "paper_doc_untrashed")?; + s.serialize_field(".tag", "sso_change_policy")?; s.end() } - EventTypeArg::PaperDocView => { + EventTypeArg::StackCrossTeamAccessPolicyChanged => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "paper_doc_view")?; + s.serialize_field(".tag", "stack_cross_team_access_policy_changed")?; s.end() } - EventTypeArg::PaperExternalViewAllow => { + EventTypeArg::TeamBrandingPolicyChanged => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "paper_external_view_allow")?; + s.serialize_field(".tag", "team_branding_policy_changed")?; s.end() } - EventTypeArg::PaperExternalViewDefaultTeam => { + EventTypeArg::TeamExtensionsPolicyChanged => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "paper_external_view_default_team")?; + s.serialize_field(".tag", "team_extensions_policy_changed")?; s.end() } - EventTypeArg::PaperExternalViewForbid => { + EventTypeArg::TeamMemberStorageRequestPolicyChanged => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "paper_external_view_forbid")?; + s.serialize_field(".tag", "team_member_storage_request_policy_changed")?; s.end() } - EventTypeArg::PaperFolderChangeSubscription => { + EventTypeArg::TeamSelectiveSyncPolicyChanged => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "paper_folder_change_subscription")?; + s.serialize_field(".tag", "team_selective_sync_policy_changed")?; s.end() } - EventTypeArg::PaperFolderDeleted => { + EventTypeArg::TeamSharingWhitelistSubjectsChanged => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "paper_folder_deleted")?; + s.serialize_field(".tag", "team_sharing_whitelist_subjects_changed")?; s.end() } - EventTypeArg::PaperFolderFollowed => { + EventTypeArg::TfaAddException => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "paper_folder_followed")?; + s.serialize_field(".tag", "tfa_add_exception")?; s.end() } - EventTypeArg::PaperFolderTeamInvite => { + EventTypeArg::TfaChangePolicy => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "paper_folder_team_invite")?; + s.serialize_field(".tag", "tfa_change_policy")?; s.end() } - EventTypeArg::PaperPublishedLinkChangePermission => { + EventTypeArg::TfaRemoveException => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "paper_published_link_change_permission")?; + s.serialize_field(".tag", "tfa_remove_exception")?; s.end() } - EventTypeArg::PaperPublishedLinkCreate => { + EventTypeArg::TopLevelContentPolicyChanged => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "paper_published_link_create")?; + s.serialize_field(".tag", "top_level_content_policy_changed")?; s.end() } - EventTypeArg::PaperPublishedLinkDisabled => { + EventTypeArg::TwoAccountChangePolicy => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "paper_published_link_disabled")?; + s.serialize_field(".tag", "two_account_change_policy")?; s.end() } - EventTypeArg::PaperPublishedLinkView => { + EventTypeArg::ViewerInfoPolicyChanged => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "paper_published_link_view")?; + s.serialize_field(".tag", "viewer_info_policy_changed")?; s.end() } - EventTypeArg::PasswordChange => { + EventTypeArg::WatermarkingPolicyChanged => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "password_change")?; + s.serialize_field(".tag", "watermarking_policy_changed")?; s.end() } - EventTypeArg::PasswordReset => { + EventTypeArg::WebSessionsChangeActiveSessionLimit => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "password_reset")?; + s.serialize_field(".tag", "web_sessions_change_active_session_limit")?; s.end() } - EventTypeArg::PasswordResetAll => { + EventTypeArg::WebSessionsChangeFixedLengthPolicy => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "password_reset_all")?; + s.serialize_field(".tag", "web_sessions_change_fixed_length_policy")?; s.end() } - EventTypeArg::ClassificationCreateReport => { + EventTypeArg::WebSessionsChangeIdleLengthPolicy => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "classification_create_report")?; + s.serialize_field(".tag", "web_sessions_change_idle_length_policy")?; s.end() } - EventTypeArg::ClassificationCreateReportFail => { + EventTypeArg::DataResidencyMigrationRequestSuccessful => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "classification_create_report_fail")?; + s.serialize_field(".tag", "data_residency_migration_request_successful")?; s.end() } - EventTypeArg::EmmCreateExceptionsReport => { + EventTypeArg::DataResidencyMigrationRequestUnsuccessful => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "emm_create_exceptions_report")?; + s.serialize_field(".tag", "data_residency_migration_request_unsuccessful")?; s.end() } - EventTypeArg::EmmCreateUsageReport => { + EventTypeArg::TeamMergeFrom => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "emm_create_usage_report")?; + s.serialize_field(".tag", "team_merge_from")?; s.end() } - EventTypeArg::ExportMembersReport => { + EventTypeArg::TeamMergeTo => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "export_members_report")?; + s.serialize_field(".tag", "team_merge_to")?; s.end() } - EventTypeArg::ExportMembersReportFail => { + EventTypeArg::TeamProfileAddBackground => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "export_members_report_fail")?; + s.serialize_field(".tag", "team_profile_add_background")?; s.end() } - EventTypeArg::ExternalSharingCreateReport => { + EventTypeArg::TeamProfileAddLogo => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "external_sharing_create_report")?; + s.serialize_field(".tag", "team_profile_add_logo")?; s.end() } - EventTypeArg::ExternalSharingReportFailed => { + EventTypeArg::TeamProfileChangeBackground => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "external_sharing_report_failed")?; + s.serialize_field(".tag", "team_profile_change_background")?; s.end() } - EventTypeArg::NoExpirationLinkGenCreateReport => { + EventTypeArg::TeamProfileChangeDefaultLanguage => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "no_expiration_link_gen_create_report")?; + s.serialize_field(".tag", "team_profile_change_default_language")?; s.end() } - EventTypeArg::NoExpirationLinkGenReportFailed => { + EventTypeArg::TeamProfileChangeLogo => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "no_expiration_link_gen_report_failed")?; + s.serialize_field(".tag", "team_profile_change_logo")?; s.end() } - EventTypeArg::NoPasswordLinkGenCreateReport => { + EventTypeArg::TeamProfileChangeName => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "no_password_link_gen_create_report")?; + s.serialize_field(".tag", "team_profile_change_name")?; s.end() } - EventTypeArg::NoPasswordLinkGenReportFailed => { + EventTypeArg::TeamProfileRemoveBackground => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "no_password_link_gen_report_failed")?; + s.serialize_field(".tag", "team_profile_remove_background")?; s.end() } - EventTypeArg::NoPasswordLinkViewCreateReport => { + EventTypeArg::TeamProfileRemoveLogo => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "no_password_link_view_create_report")?; + s.serialize_field(".tag", "team_profile_remove_logo")?; s.end() } - EventTypeArg::NoPasswordLinkViewReportFailed => { + EventTypeArg::PasskeyAdd => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "no_password_link_view_report_failed")?; + s.serialize_field(".tag", "passkey_add")?; s.end() } - EventTypeArg::OutdatedLinkViewCreateReport => { + EventTypeArg::PasskeyRemove => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "outdated_link_view_create_report")?; + s.serialize_field(".tag", "passkey_remove")?; s.end() } - EventTypeArg::OutdatedLinkViewReportFailed => { + EventTypeArg::TfaAddBackupPhone => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "outdated_link_view_report_failed")?; + s.serialize_field(".tag", "tfa_add_backup_phone")?; s.end() } - EventTypeArg::PaperAdminExportStart => { + EventTypeArg::TfaAddSecurityKey => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "paper_admin_export_start")?; + s.serialize_field(".tag", "tfa_add_security_key")?; s.end() } - EventTypeArg::RansomwareAlertCreateReport => { + EventTypeArg::TfaChangeBackupPhone => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "ransomware_alert_create_report")?; + s.serialize_field(".tag", "tfa_change_backup_phone")?; s.end() } - EventTypeArg::RansomwareAlertCreateReportFailed => { + EventTypeArg::TfaChangeStatus => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "ransomware_alert_create_report_failed")?; + s.serialize_field(".tag", "tfa_change_status")?; s.end() } - EventTypeArg::SmartSyncCreateAdminPrivilegeReport => { + EventTypeArg::TfaRemoveBackupPhone => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "smart_sync_create_admin_privilege_report")?; + s.serialize_field(".tag", "tfa_remove_backup_phone")?; s.end() } - EventTypeArg::TeamActivityCreateReport => { + EventTypeArg::TfaRemoveSecurityKey => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "team_activity_create_report")?; + s.serialize_field(".tag", "tfa_remove_security_key")?; s.end() } - EventTypeArg::TeamActivityCreateReportFail => { + EventTypeArg::TfaReset => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "team_activity_create_report_fail")?; + s.serialize_field(".tag", "tfa_reset")?; s.end() } - EventTypeArg::CollectionShare => { + EventTypeArg::ChangedEnterpriseAdminRole => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "collection_share")?; + s.serialize_field(".tag", "changed_enterprise_admin_role")?; s.end() } - EventTypeArg::FileTransfersFileAdd => { + EventTypeArg::ChangedEnterpriseConnectedTeamStatus => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "file_transfers_file_add")?; + s.serialize_field(".tag", "changed_enterprise_connected_team_status")?; s.end() } - EventTypeArg::FileTransfersTransferDelete => { + EventTypeArg::EndedEnterpriseAdminSession => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "file_transfers_transfer_delete")?; + s.serialize_field(".tag", "ended_enterprise_admin_session")?; s.end() } - EventTypeArg::FileTransfersTransferDownload => { + EventTypeArg::EndedEnterpriseAdminSessionDeprecated => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "file_transfers_transfer_download")?; + s.serialize_field(".tag", "ended_enterprise_admin_session_deprecated")?; s.end() } - EventTypeArg::FileTransfersTransferSend => { + EventTypeArg::EnterpriseSettingsLocking => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "file_transfers_transfer_send")?; + s.serialize_field(".tag", "enterprise_settings_locking")?; s.end() } - EventTypeArg::FileTransfersTransferView => { + EventTypeArg::GuestAdminChangeStatus => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "file_transfers_transfer_view")?; + s.serialize_field(".tag", "guest_admin_change_status")?; s.end() } - EventTypeArg::NoteAclInviteOnly => { + EventTypeArg::StartedEnterpriseAdminSession => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "note_acl_invite_only")?; + s.serialize_field(".tag", "started_enterprise_admin_session")?; s.end() } - EventTypeArg::NoteAclLink => { + EventTypeArg::TeamMergeRequestAccepted => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "note_acl_link")?; + s.serialize_field(".tag", "team_merge_request_accepted")?; s.end() } - EventTypeArg::NoteAclTeamLink => { + EventTypeArg::TeamMergeRequestAcceptedShownToPrimaryTeam => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "note_acl_team_link")?; + s.serialize_field(".tag", "team_merge_request_accepted_shown_to_primary_team")?; s.end() } - EventTypeArg::NoteShared => { + EventTypeArg::TeamMergeRequestAcceptedShownToSecondaryTeam => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "note_shared")?; + s.serialize_field(".tag", "team_merge_request_accepted_shown_to_secondary_team")?; s.end() } - EventTypeArg::NoteShareReceive => { + EventTypeArg::TeamMergeRequestAutoCanceled => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "note_share_receive")?; + s.serialize_field(".tag", "team_merge_request_auto_canceled")?; s.end() } - EventTypeArg::OpenNoteShared => { + EventTypeArg::TeamMergeRequestCanceled => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "open_note_shared")?; + s.serialize_field(".tag", "team_merge_request_canceled")?; s.end() } - EventTypeArg::ReplayFileSharedLinkCreated => { + EventTypeArg::TeamMergeRequestCanceledShownToPrimaryTeam => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "replay_file_shared_link_created")?; + s.serialize_field(".tag", "team_merge_request_canceled_shown_to_primary_team")?; s.end() } - EventTypeArg::ReplayFileSharedLinkModified => { + EventTypeArg::TeamMergeRequestCanceledShownToSecondaryTeam => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "replay_file_shared_link_modified")?; + s.serialize_field(".tag", "team_merge_request_canceled_shown_to_secondary_team")?; s.end() } - EventTypeArg::ReplayProjectTeamAdd => { + EventTypeArg::TeamMergeRequestExpired => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "replay_project_team_add")?; + s.serialize_field(".tag", "team_merge_request_expired")?; s.end() } - EventTypeArg::ReplayProjectTeamDelete => { + EventTypeArg::TeamMergeRequestExpiredShownToPrimaryTeam => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "replay_project_team_delete")?; + s.serialize_field(".tag", "team_merge_request_expired_shown_to_primary_team")?; s.end() } - EventTypeArg::SfAddGroup => { + EventTypeArg::TeamMergeRequestExpiredShownToSecondaryTeam => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "sf_add_group")?; + s.serialize_field(".tag", "team_merge_request_expired_shown_to_secondary_team")?; s.end() } - EventTypeArg::SfAllowNonMembersToViewSharedLinks => { + EventTypeArg::TeamMergeRequestRejectedShownToPrimaryTeam => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "sf_allow_non_members_to_view_shared_links")?; + s.serialize_field(".tag", "team_merge_request_rejected_shown_to_primary_team")?; s.end() } - EventTypeArg::SfExternalInviteWarn => { + EventTypeArg::TeamMergeRequestRejectedShownToSecondaryTeam => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "sf_external_invite_warn")?; + s.serialize_field(".tag", "team_merge_request_rejected_shown_to_secondary_team")?; s.end() } - EventTypeArg::SfFbInvite => { + EventTypeArg::TeamMergeRequestReminder => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "sf_fb_invite")?; + s.serialize_field(".tag", "team_merge_request_reminder")?; s.end() } - EventTypeArg::SfFbInviteChangeRole => { + EventTypeArg::TeamMergeRequestReminderShownToPrimaryTeam => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "sf_fb_invite_change_role")?; + s.serialize_field(".tag", "team_merge_request_reminder_shown_to_primary_team")?; s.end() } - EventTypeArg::SfFbUninvite => { + EventTypeArg::TeamMergeRequestReminderShownToSecondaryTeam => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "sf_fb_uninvite")?; + s.serialize_field(".tag", "team_merge_request_reminder_shown_to_secondary_team")?; s.end() } - EventTypeArg::SfInviteGroup => { + EventTypeArg::TeamMergeRequestRevoked => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "sf_invite_group")?; + s.serialize_field(".tag", "team_merge_request_revoked")?; s.end() } - EventTypeArg::SfTeamGrantAccess => { + EventTypeArg::TeamMergeRequestSentShownToPrimaryTeam => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "sf_team_grant_access")?; + s.serialize_field(".tag", "team_merge_request_sent_shown_to_primary_team")?; s.end() } - EventTypeArg::SfTeamInvite => { + EventTypeArg::TeamMergeRequestSentShownToSecondaryTeam => { // unit let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "sf_team_invite")?; + s.serialize_field(".tag", "team_merge_request_sent_shown_to_secondary_team")?; s.end() } - EventTypeArg::SfTeamInviteChangeRole => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "sf_team_invite_change_role")?; - s.end() + EventTypeArg::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) + } + } +} + +/// Created member data report. +#[derive(Debug, Clone, PartialEq, Eq, Default)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct ExportMembersReportDetails { +} + +const EXPORT_MEMBERS_REPORT_DETAILS_FIELDS: &[&str] = &[]; +impl ExportMembersReportDetails { + // no _opt deserializer + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + ) -> Result { + // ignore any fields found; none are presently recognized + crate::eat_json_fields(&mut map)?; + Ok(ExportMembersReportDetails {}) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for ExportMembersReportDetails { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = ExportMembersReportDetails; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a ExportMembersReportDetails struct") + } + fn visit_map>(self, map: V) -> Result { + ExportMembersReportDetails::internal_deserialize(map) + } + } + deserializer.deserialize_struct("ExportMembersReportDetails", EXPORT_MEMBERS_REPORT_DETAILS_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for ExportMembersReportDetails { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + serializer.serialize_struct("ExportMembersReportDetails", 0)?.end() + } +} + +/// Failed to create members data report. +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct ExportMembersReportFailDetails { + /// Failure reason. + pub failure_reason: crate::types::team::TeamReportFailureReason, +} + +impl ExportMembersReportFailDetails { + pub fn new(failure_reason: crate::types::team::TeamReportFailureReason) -> Self { + ExportMembersReportFailDetails { + failure_reason, + } + } +} + +const EXPORT_MEMBERS_REPORT_FAIL_DETAILS_FIELDS: &[&str] = &["failure_reason"]; +impl ExportMembersReportFailDetails { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_failure_reason = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "failure_reason" => { + if field_failure_reason.is_some() { + return Err(::serde::de::Error::duplicate_field("failure_reason")); + } + field_failure_reason = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } + } + } + if optional && nothing { + return Ok(None); + } + let result = ExportMembersReportFailDetails { + failure_reason: field_failure_reason.ok_or_else(|| ::serde::de::Error::missing_field("failure_reason"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("failure_reason", &self.failure_reason)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for ExportMembersReportFailDetails { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = ExportMembersReportFailDetails; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a ExportMembersReportFailDetails struct") + } + fn visit_map>(self, map: V) -> Result { + ExportMembersReportFailDetails::internal_deserialize(map) + } + } + deserializer.deserialize_struct("ExportMembersReportFailDetails", EXPORT_MEMBERS_REPORT_FAIL_DETAILS_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for ExportMembersReportFailDetails { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("ExportMembersReportFailDetails", 1)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct ExportMembersReportFailType { + pub description: String, +} + +impl ExportMembersReportFailType { + pub fn new(description: String) -> Self { + ExportMembersReportFailType { + description, + } + } +} + +const EXPORT_MEMBERS_REPORT_FAIL_TYPE_FIELDS: &[&str] = &["description"]; +impl ExportMembersReportFailType { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_description = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); + } + field_description = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } + } + } + if optional && nothing { + return Ok(None); + } + let result = ExportMembersReportFailType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("description", &self.description)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for ExportMembersReportFailType { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = ExportMembersReportFailType; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a ExportMembersReportFailType struct") + } + fn visit_map>(self, map: V) -> Result { + ExportMembersReportFailType::internal_deserialize(map) + } + } + deserializer.deserialize_struct("ExportMembersReportFailType", EXPORT_MEMBERS_REPORT_FAIL_TYPE_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for ExportMembersReportFailType { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("ExportMembersReportFailType", 1)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct ExportMembersReportType { + pub description: String, +} + +impl ExportMembersReportType { + pub fn new(description: String) -> Self { + ExportMembersReportType { + description, + } + } +} + +const EXPORT_MEMBERS_REPORT_TYPE_FIELDS: &[&str] = &["description"]; +impl ExportMembersReportType { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_description = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); + } + field_description = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } + } + } + if optional && nothing { + return Ok(None); + } + let result = ExportMembersReportType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("description", &self.description)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for ExportMembersReportType { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = ExportMembersReportType; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a ExportMembersReportType struct") + } + fn visit_map>(self, map: V) -> Result { + ExportMembersReportType::internal_deserialize(map) + } + } + deserializer.deserialize_struct("ExportMembersReportType", EXPORT_MEMBERS_REPORT_TYPE_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for ExportMembersReportType { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("ExportMembersReportType", 1)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +/// Accepted/opted out of extended version history. +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct ExtendedVersionHistoryChangePolicyDetails { + /// New extended version history policy. + pub new_value: ExtendedVersionHistoryPolicy, + /// Previous extended version history policy. Might be missing due to historical data gap. + pub previous_value: Option, +} + +impl ExtendedVersionHistoryChangePolicyDetails { + pub fn new(new_value: ExtendedVersionHistoryPolicy) -> Self { + ExtendedVersionHistoryChangePolicyDetails { + new_value, + previous_value: None, + } + } + + pub fn with_previous_value(mut self, value: ExtendedVersionHistoryPolicy) -> Self { + self.previous_value = Some(value); + self + } +} + +const EXTENDED_VERSION_HISTORY_CHANGE_POLICY_DETAILS_FIELDS: &[&str] = &["new_value", + "previous_value"]; +impl ExtendedVersionHistoryChangePolicyDetails { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_new_value = None; + let mut field_previous_value = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "new_value" => { + if field_new_value.is_some() { + return Err(::serde::de::Error::duplicate_field("new_value")); + } + field_new_value = Some(map.next_value()?); + } + "previous_value" => { + if field_previous_value.is_some() { + return Err(::serde::de::Error::duplicate_field("previous_value")); + } + field_previous_value = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } + } + } + if optional && nothing { + return Ok(None); + } + let result = ExtendedVersionHistoryChangePolicyDetails { + new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, + previous_value: field_previous_value.and_then(Option::flatten), + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("new_value", &self.new_value)?; + if let Some(val) = &self.previous_value { + s.serialize_field("previous_value", val)?; + } + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for ExtendedVersionHistoryChangePolicyDetails { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = ExtendedVersionHistoryChangePolicyDetails; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a ExtendedVersionHistoryChangePolicyDetails struct") + } + fn visit_map>(self, map: V) -> Result { + ExtendedVersionHistoryChangePolicyDetails::internal_deserialize(map) } - EventTypeArg::SfTeamJoin => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "sf_team_join")?; - s.end() + } + deserializer.deserialize_struct("ExtendedVersionHistoryChangePolicyDetails", EXTENDED_VERSION_HISTORY_CHANGE_POLICY_DETAILS_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for ExtendedVersionHistoryChangePolicyDetails { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("ExtendedVersionHistoryChangePolicyDetails", 2)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct ExtendedVersionHistoryChangePolicyType { + pub description: String, +} + +impl ExtendedVersionHistoryChangePolicyType { + pub fn new(description: String) -> Self { + ExtendedVersionHistoryChangePolicyType { + description, + } + } +} + +const EXTENDED_VERSION_HISTORY_CHANGE_POLICY_TYPE_FIELDS: &[&str] = &["description"]; +impl ExtendedVersionHistoryChangePolicyType { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_description = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); + } + field_description = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } } - EventTypeArg::SfTeamJoinFromOobLink => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "sf_team_join_from_oob_link")?; - s.end() + } + if optional && nothing { + return Ok(None); + } + let result = ExtendedVersionHistoryChangePolicyType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("description", &self.description)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for ExtendedVersionHistoryChangePolicyType { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = ExtendedVersionHistoryChangePolicyType; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a ExtendedVersionHistoryChangePolicyType struct") } - EventTypeArg::SfTeamUninvite => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "sf_team_uninvite")?; - s.end() + fn visit_map>(self, map: V) -> Result { + ExtendedVersionHistoryChangePolicyType::internal_deserialize(map) } - EventTypeArg::SharedContentAddInvitees => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "shared_content_add_invitees")?; - s.end() + } + deserializer.deserialize_struct("ExtendedVersionHistoryChangePolicyType", EXTENDED_VERSION_HISTORY_CHANGE_POLICY_TYPE_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for ExtendedVersionHistoryChangePolicyType { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("ExtendedVersionHistoryChangePolicyType", 1)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // variants may be added in the future +pub enum ExtendedVersionHistoryPolicy { + ExplicitlyLimited, + ExplicitlyUnlimited, + ImplicitlyLimited, + ImplicitlyUnlimited, + /// Catch-all used for unrecognized values returned from the server. Encountering this value + /// typically indicates that this SDK version is out of date. + Other, +} + +impl<'de> ::serde::de::Deserialize<'de> for ExtendedVersionHistoryPolicy { + fn deserialize>(deserializer: D) -> Result { + // union deserializer + use serde::de::{self, MapAccess, Visitor}; + struct EnumVisitor; + impl<'de> Visitor<'de> for EnumVisitor { + type Value = ExtendedVersionHistoryPolicy; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a ExtendedVersionHistoryPolicy structure") } - EventTypeArg::SharedContentAddLinkExpiry => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "shared_content_add_link_expiry")?; - s.end() + fn visit_map>(self, mut map: V) -> Result { + let tag: &str = match map.next_key()? { + Some(".tag") => map.next_value()?, + _ => return Err(de::Error::missing_field(".tag")) + }; + let value = match tag { + "explicitly_limited" => ExtendedVersionHistoryPolicy::ExplicitlyLimited, + "explicitly_unlimited" => ExtendedVersionHistoryPolicy::ExplicitlyUnlimited, + "implicitly_limited" => ExtendedVersionHistoryPolicy::ImplicitlyLimited, + "implicitly_unlimited" => ExtendedVersionHistoryPolicy::ImplicitlyUnlimited, + _ => ExtendedVersionHistoryPolicy::Other, + }; + crate::eat_json_fields(&mut map)?; + Ok(value) } - EventTypeArg::SharedContentAddLinkPassword => { + } + const VARIANTS: &[&str] = &["explicitly_limited", + "explicitly_unlimited", + "implicitly_limited", + "implicitly_unlimited", + "other"]; + deserializer.deserialize_struct("ExtendedVersionHistoryPolicy", VARIANTS, EnumVisitor) + } +} + +impl ::serde::ser::Serialize for ExtendedVersionHistoryPolicy { + fn serialize(&self, serializer: S) -> Result { + // union serializer + use serde::ser::SerializeStruct; + match self { + ExtendedVersionHistoryPolicy::ExplicitlyLimited => { // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "shared_content_add_link_password")?; + let mut s = serializer.serialize_struct("ExtendedVersionHistoryPolicy", 1)?; + s.serialize_field(".tag", "explicitly_limited")?; s.end() } - EventTypeArg::SharedContentAddMember => { + ExtendedVersionHistoryPolicy::ExplicitlyUnlimited => { // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "shared_content_add_member")?; + let mut s = serializer.serialize_struct("ExtendedVersionHistoryPolicy", 1)?; + s.serialize_field(".tag", "explicitly_unlimited")?; s.end() } - EventTypeArg::SharedContentChangeDownloadsPolicy => { + ExtendedVersionHistoryPolicy::ImplicitlyLimited => { // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "shared_content_change_downloads_policy")?; + let mut s = serializer.serialize_struct("ExtendedVersionHistoryPolicy", 1)?; + s.serialize_field(".tag", "implicitly_limited")?; s.end() } - EventTypeArg::SharedContentChangeInviteeRole => { + ExtendedVersionHistoryPolicy::ImplicitlyUnlimited => { // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "shared_content_change_invitee_role")?; + let mut s = serializer.serialize_struct("ExtendedVersionHistoryPolicy", 1)?; + s.serialize_field(".tag", "implicitly_unlimited")?; s.end() } - EventTypeArg::SharedContentChangeLinkAudience => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "shared_content_change_link_audience")?; - s.end() + ExtendedVersionHistoryPolicy::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) + } + } +} + +/// External Drive Backup eligibility status +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // variants may be added in the future +pub enum ExternalDriveBackupEligibilityStatus { + ExceedLicenseCap, + Skip, + Success, + /// Catch-all used for unrecognized values returned from the server. Encountering this value + /// typically indicates that this SDK version is out of date. + Other, +} + +impl<'de> ::serde::de::Deserialize<'de> for ExternalDriveBackupEligibilityStatus { + fn deserialize>(deserializer: D) -> Result { + // union deserializer + use serde::de::{self, MapAccess, Visitor}; + struct EnumVisitor; + impl<'de> Visitor<'de> for EnumVisitor { + type Value = ExternalDriveBackupEligibilityStatus; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a ExternalDriveBackupEligibilityStatus structure") } - EventTypeArg::SharedContentChangeLinkExpiry => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "shared_content_change_link_expiry")?; - s.end() + fn visit_map>(self, mut map: V) -> Result { + let tag: &str = match map.next_key()? { + Some(".tag") => map.next_value()?, + _ => return Err(de::Error::missing_field(".tag")) + }; + let value = match tag { + "exceed_license_cap" => ExternalDriveBackupEligibilityStatus::ExceedLicenseCap, + "skip" => ExternalDriveBackupEligibilityStatus::Skip, + "success" => ExternalDriveBackupEligibilityStatus::Success, + _ => ExternalDriveBackupEligibilityStatus::Other, + }; + crate::eat_json_fields(&mut map)?; + Ok(value) } - EventTypeArg::SharedContentChangeLinkPassword => { + } + const VARIANTS: &[&str] = &["exceed_license_cap", + "skip", + "success", + "other"]; + deserializer.deserialize_struct("ExternalDriveBackupEligibilityStatus", VARIANTS, EnumVisitor) + } +} + +impl ::serde::ser::Serialize for ExternalDriveBackupEligibilityStatus { + fn serialize(&self, serializer: S) -> Result { + // union serializer + use serde::ser::SerializeStruct; + match self { + ExternalDriveBackupEligibilityStatus::ExceedLicenseCap => { // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "shared_content_change_link_password")?; + let mut s = serializer.serialize_struct("ExternalDriveBackupEligibilityStatus", 1)?; + s.serialize_field(".tag", "exceed_license_cap")?; s.end() } - EventTypeArg::SharedContentChangeMemberRole => { + ExternalDriveBackupEligibilityStatus::Skip => { // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "shared_content_change_member_role")?; + let mut s = serializer.serialize_struct("ExternalDriveBackupEligibilityStatus", 1)?; + s.serialize_field(".tag", "skip")?; s.end() } - EventTypeArg::SharedContentChangeViewerInfoPolicy => { + ExternalDriveBackupEligibilityStatus::Success => { // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "shared_content_change_viewer_info_policy")?; + let mut s = serializer.serialize_struct("ExternalDriveBackupEligibilityStatus", 1)?; + s.serialize_field(".tag", "success")?; s.end() } - EventTypeArg::SharedContentClaimInvitation => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "shared_content_claim_invitation")?; - s.end() + ExternalDriveBackupEligibilityStatus::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) + } + } +} + +/// Checked external drive backup eligibility status. +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct ExternalDriveBackupEligibilityStatusCheckedDetails { + /// Device's session logged information. + pub desktop_device_session_info: DesktopDeviceSessionLogInfo, + /// Current eligibility status of external drive backup. + pub status: ExternalDriveBackupEligibilityStatus, + /// Total number of valid external drive backup for all the team members. + pub number_of_external_drive_backup: u64, +} + +impl ExternalDriveBackupEligibilityStatusCheckedDetails { + pub fn new( + desktop_device_session_info: DesktopDeviceSessionLogInfo, + status: ExternalDriveBackupEligibilityStatus, + number_of_external_drive_backup: u64, + ) -> Self { + ExternalDriveBackupEligibilityStatusCheckedDetails { + desktop_device_session_info, + status, + number_of_external_drive_backup, + } + } +} + +const EXTERNAL_DRIVE_BACKUP_ELIGIBILITY_STATUS_CHECKED_DETAILS_FIELDS: &[&str] = &["desktop_device_session_info", + "status", + "number_of_external_drive_backup"]; +impl ExternalDriveBackupEligibilityStatusCheckedDetails { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_desktop_device_session_info = None; + let mut field_status = None; + let mut field_number_of_external_drive_backup = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "desktop_device_session_info" => { + if field_desktop_device_session_info.is_some() { + return Err(::serde::de::Error::duplicate_field("desktop_device_session_info")); + } + field_desktop_device_session_info = Some(map.next_value()?); + } + "status" => { + if field_status.is_some() { + return Err(::serde::de::Error::duplicate_field("status")); + } + field_status = Some(map.next_value()?); + } + "number_of_external_drive_backup" => { + if field_number_of_external_drive_backup.is_some() { + return Err(::serde::de::Error::duplicate_field("number_of_external_drive_backup")); + } + field_number_of_external_drive_backup = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } } - EventTypeArg::SharedContentCopy => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "shared_content_copy")?; - s.end() + } + if optional && nothing { + return Ok(None); + } + let result = ExternalDriveBackupEligibilityStatusCheckedDetails { + desktop_device_session_info: field_desktop_device_session_info.ok_or_else(|| ::serde::de::Error::missing_field("desktop_device_session_info"))?, + status: field_status.ok_or_else(|| ::serde::de::Error::missing_field("status"))?, + number_of_external_drive_backup: field_number_of_external_drive_backup.ok_or_else(|| ::serde::de::Error::missing_field("number_of_external_drive_backup"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("desktop_device_session_info", &self.desktop_device_session_info)?; + s.serialize_field("status", &self.status)?; + s.serialize_field("number_of_external_drive_backup", &self.number_of_external_drive_backup)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for ExternalDriveBackupEligibilityStatusCheckedDetails { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = ExternalDriveBackupEligibilityStatusCheckedDetails; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a ExternalDriveBackupEligibilityStatusCheckedDetails struct") } - EventTypeArg::SharedContentDownload => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "shared_content_download")?; - s.end() + fn visit_map>(self, map: V) -> Result { + ExternalDriveBackupEligibilityStatusCheckedDetails::internal_deserialize(map) } - EventTypeArg::SharedContentRelinquishMembership => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "shared_content_relinquish_membership")?; - s.end() + } + deserializer.deserialize_struct("ExternalDriveBackupEligibilityStatusCheckedDetails", EXTERNAL_DRIVE_BACKUP_ELIGIBILITY_STATUS_CHECKED_DETAILS_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for ExternalDriveBackupEligibilityStatusCheckedDetails { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("ExternalDriveBackupEligibilityStatusCheckedDetails", 3)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct ExternalDriveBackupEligibilityStatusCheckedType { + pub description: String, +} + +impl ExternalDriveBackupEligibilityStatusCheckedType { + pub fn new(description: String) -> Self { + ExternalDriveBackupEligibilityStatusCheckedType { + description, + } + } +} + +const EXTERNAL_DRIVE_BACKUP_ELIGIBILITY_STATUS_CHECKED_TYPE_FIELDS: &[&str] = &["description"]; +impl ExternalDriveBackupEligibilityStatusCheckedType { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_description = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); + } + field_description = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } } - EventTypeArg::SharedContentRemoveInvitees => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "shared_content_remove_invitees")?; - s.end() + } + if optional && nothing { + return Ok(None); + } + let result = ExternalDriveBackupEligibilityStatusCheckedType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("description", &self.description)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for ExternalDriveBackupEligibilityStatusCheckedType { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = ExternalDriveBackupEligibilityStatusCheckedType; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a ExternalDriveBackupEligibilityStatusCheckedType struct") } - EventTypeArg::SharedContentRemoveLinkExpiry => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "shared_content_remove_link_expiry")?; - s.end() + fn visit_map>(self, map: V) -> Result { + ExternalDriveBackupEligibilityStatusCheckedType::internal_deserialize(map) } - EventTypeArg::SharedContentRemoveLinkPassword => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "shared_content_remove_link_password")?; - s.end() + } + deserializer.deserialize_struct("ExternalDriveBackupEligibilityStatusCheckedType", EXTERNAL_DRIVE_BACKUP_ELIGIBILITY_STATUS_CHECKED_TYPE_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for ExternalDriveBackupEligibilityStatusCheckedType { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("ExternalDriveBackupEligibilityStatusCheckedType", 1)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +/// Policy for controlling team access to external drive backup feature +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // variants may be added in the future +pub enum ExternalDriveBackupPolicy { + Default, + Disabled, + Enabled, + /// Catch-all used for unrecognized values returned from the server. Encountering this value + /// typically indicates that this SDK version is out of date. + Other, +} + +impl<'de> ::serde::de::Deserialize<'de> for ExternalDriveBackupPolicy { + fn deserialize>(deserializer: D) -> Result { + // union deserializer + use serde::de::{self, MapAccess, Visitor}; + struct EnumVisitor; + impl<'de> Visitor<'de> for EnumVisitor { + type Value = ExternalDriveBackupPolicy; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a ExternalDriveBackupPolicy structure") } - EventTypeArg::SharedContentRemoveMember => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "shared_content_remove_member")?; - s.end() + fn visit_map>(self, mut map: V) -> Result { + let tag: &str = match map.next_key()? { + Some(".tag") => map.next_value()?, + _ => return Err(de::Error::missing_field(".tag")) + }; + let value = match tag { + "default" => ExternalDriveBackupPolicy::Default, + "disabled" => ExternalDriveBackupPolicy::Disabled, + "enabled" => ExternalDriveBackupPolicy::Enabled, + _ => ExternalDriveBackupPolicy::Other, + }; + crate::eat_json_fields(&mut map)?; + Ok(value) } - EventTypeArg::SharedContentRequestAccess => { + } + const VARIANTS: &[&str] = &["default", + "disabled", + "enabled", + "other"]; + deserializer.deserialize_struct("ExternalDriveBackupPolicy", VARIANTS, EnumVisitor) + } +} + +impl ::serde::ser::Serialize for ExternalDriveBackupPolicy { + fn serialize(&self, serializer: S) -> Result { + // union serializer + use serde::ser::SerializeStruct; + match self { + ExternalDriveBackupPolicy::Default => { // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "shared_content_request_access")?; + let mut s = serializer.serialize_struct("ExternalDriveBackupPolicy", 1)?; + s.serialize_field(".tag", "default")?; s.end() } - EventTypeArg::SharedContentRestoreInvitees => { + ExternalDriveBackupPolicy::Disabled => { // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "shared_content_restore_invitees")?; + let mut s = serializer.serialize_struct("ExternalDriveBackupPolicy", 1)?; + s.serialize_field(".tag", "disabled")?; s.end() } - EventTypeArg::SharedContentRestoreMember => { + ExternalDriveBackupPolicy::Enabled => { // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "shared_content_restore_member")?; + let mut s = serializer.serialize_struct("ExternalDriveBackupPolicy", 1)?; + s.serialize_field(".tag", "enabled")?; s.end() } - EventTypeArg::SharedContentUnshare => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "shared_content_unshare")?; - s.end() + ExternalDriveBackupPolicy::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) + } + } +} + +/// Changed external drive backup policy for team. +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct ExternalDriveBackupPolicyChangedDetails { + /// New external drive backup policy. + pub new_value: ExternalDriveBackupPolicy, + /// Previous external drive backup policy. + pub previous_value: ExternalDriveBackupPolicy, +} + +impl ExternalDriveBackupPolicyChangedDetails { + pub fn new( + new_value: ExternalDriveBackupPolicy, + previous_value: ExternalDriveBackupPolicy, + ) -> Self { + ExternalDriveBackupPolicyChangedDetails { + new_value, + previous_value, + } + } +} + +const EXTERNAL_DRIVE_BACKUP_POLICY_CHANGED_DETAILS_FIELDS: &[&str] = &["new_value", + "previous_value"]; +impl ExternalDriveBackupPolicyChangedDetails { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_new_value = None; + let mut field_previous_value = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "new_value" => { + if field_new_value.is_some() { + return Err(::serde::de::Error::duplicate_field("new_value")); + } + field_new_value = Some(map.next_value()?); + } + "previous_value" => { + if field_previous_value.is_some() { + return Err(::serde::de::Error::duplicate_field("previous_value")); + } + field_previous_value = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } } - EventTypeArg::SharedContentView => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "shared_content_view")?; - s.end() + } + if optional && nothing { + return Ok(None); + } + let result = ExternalDriveBackupPolicyChangedDetails { + new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, + previous_value: field_previous_value.ok_or_else(|| ::serde::de::Error::missing_field("previous_value"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("new_value", &self.new_value)?; + s.serialize_field("previous_value", &self.previous_value)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for ExternalDriveBackupPolicyChangedDetails { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = ExternalDriveBackupPolicyChangedDetails; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a ExternalDriveBackupPolicyChangedDetails struct") } - EventTypeArg::SharedFolderChangeLinkPolicy => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "shared_folder_change_link_policy")?; - s.end() + fn visit_map>(self, map: V) -> Result { + ExternalDriveBackupPolicyChangedDetails::internal_deserialize(map) } - EventTypeArg::SharedFolderChangeMembersInheritancePolicy => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "shared_folder_change_members_inheritance_policy")?; - s.end() + } + deserializer.deserialize_struct("ExternalDriveBackupPolicyChangedDetails", EXTERNAL_DRIVE_BACKUP_POLICY_CHANGED_DETAILS_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for ExternalDriveBackupPolicyChangedDetails { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("ExternalDriveBackupPolicyChangedDetails", 2)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct ExternalDriveBackupPolicyChangedType { + pub description: String, +} + +impl ExternalDriveBackupPolicyChangedType { + pub fn new(description: String) -> Self { + ExternalDriveBackupPolicyChangedType { + description, + } + } +} + +const EXTERNAL_DRIVE_BACKUP_POLICY_CHANGED_TYPE_FIELDS: &[&str] = &["description"]; +impl ExternalDriveBackupPolicyChangedType { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_description = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); + } + field_description = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } } - EventTypeArg::SharedFolderChangeMembersManagementPolicy => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "shared_folder_change_members_management_policy")?; - s.end() + } + if optional && nothing { + return Ok(None); + } + let result = ExternalDriveBackupPolicyChangedType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("description", &self.description)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for ExternalDriveBackupPolicyChangedType { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = ExternalDriveBackupPolicyChangedType; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a ExternalDriveBackupPolicyChangedType struct") } - EventTypeArg::SharedFolderChangeMembersPolicy => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "shared_folder_change_members_policy")?; - s.end() + fn visit_map>(self, map: V) -> Result { + ExternalDriveBackupPolicyChangedType::internal_deserialize(map) } - EventTypeArg::SharedFolderCreate => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "shared_folder_create")?; - s.end() + } + deserializer.deserialize_struct("ExternalDriveBackupPolicyChangedType", EXTERNAL_DRIVE_BACKUP_POLICY_CHANGED_TYPE_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for ExternalDriveBackupPolicyChangedType { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("ExternalDriveBackupPolicyChangedType", 1)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +/// External Drive Backup status +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // variants may be added in the future +pub enum ExternalDriveBackupStatus { + Broken, + Created, + CreatedOrBroken, + Deleted, + Empty, + Unknown, + /// Catch-all used for unrecognized values returned from the server. Encountering this value + /// typically indicates that this SDK version is out of date. + Other, +} + +impl<'de> ::serde::de::Deserialize<'de> for ExternalDriveBackupStatus { + fn deserialize>(deserializer: D) -> Result { + // union deserializer + use serde::de::{self, MapAccess, Visitor}; + struct EnumVisitor; + impl<'de> Visitor<'de> for EnumVisitor { + type Value = ExternalDriveBackupStatus; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a ExternalDriveBackupStatus structure") } - EventTypeArg::SharedFolderDeclineInvitation => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "shared_folder_decline_invitation")?; - s.end() + fn visit_map>(self, mut map: V) -> Result { + let tag: &str = match map.next_key()? { + Some(".tag") => map.next_value()?, + _ => return Err(de::Error::missing_field(".tag")) + }; + let value = match tag { + "broken" => ExternalDriveBackupStatus::Broken, + "created" => ExternalDriveBackupStatus::Created, + "created_or_broken" => ExternalDriveBackupStatus::CreatedOrBroken, + "deleted" => ExternalDriveBackupStatus::Deleted, + "empty" => ExternalDriveBackupStatus::Empty, + "unknown" => ExternalDriveBackupStatus::Unknown, + _ => ExternalDriveBackupStatus::Other, + }; + crate::eat_json_fields(&mut map)?; + Ok(value) } - EventTypeArg::SharedFolderMount => { + } + const VARIANTS: &[&str] = &["broken", + "created", + "created_or_broken", + "deleted", + "empty", + "unknown", + "other"]; + deserializer.deserialize_struct("ExternalDriveBackupStatus", VARIANTS, EnumVisitor) + } +} + +impl ::serde::ser::Serialize for ExternalDriveBackupStatus { + fn serialize(&self, serializer: S) -> Result { + // union serializer + use serde::ser::SerializeStruct; + match self { + ExternalDriveBackupStatus::Broken => { // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "shared_folder_mount")?; + let mut s = serializer.serialize_struct("ExternalDriveBackupStatus", 1)?; + s.serialize_field(".tag", "broken")?; s.end() } - EventTypeArg::SharedFolderNest => { + ExternalDriveBackupStatus::Created => { // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "shared_folder_nest")?; + let mut s = serializer.serialize_struct("ExternalDriveBackupStatus", 1)?; + s.serialize_field(".tag", "created")?; s.end() } - EventTypeArg::SharedFolderTransferOwnership => { + ExternalDriveBackupStatus::CreatedOrBroken => { // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "shared_folder_transfer_ownership")?; + let mut s = serializer.serialize_struct("ExternalDriveBackupStatus", 1)?; + s.serialize_field(".tag", "created_or_broken")?; s.end() } - EventTypeArg::SharedFolderUnmount => { + ExternalDriveBackupStatus::Deleted => { // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "shared_folder_unmount")?; + let mut s = serializer.serialize_struct("ExternalDriveBackupStatus", 1)?; + s.serialize_field(".tag", "deleted")?; s.end() } - EventTypeArg::SharedLinkAddExpiry => { + ExternalDriveBackupStatus::Empty => { // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "shared_link_add_expiry")?; + let mut s = serializer.serialize_struct("ExternalDriveBackupStatus", 1)?; + s.serialize_field(".tag", "empty")?; s.end() } - EventTypeArg::SharedLinkChangeExpiry => { + ExternalDriveBackupStatus::Unknown => { // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "shared_link_change_expiry")?; + let mut s = serializer.serialize_struct("ExternalDriveBackupStatus", 1)?; + s.serialize_field(".tag", "unknown")?; s.end() } - EventTypeArg::SharedLinkChangeVisibility => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "shared_link_change_visibility")?; - s.end() + ExternalDriveBackupStatus::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) + } + } +} + +/// Modified external drive backup. +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct ExternalDriveBackupStatusChangedDetails { + /// Device's session logged information. + pub desktop_device_session_info: DesktopDeviceSessionLogInfo, + /// Previous status of this external drive backup. + pub previous_value: ExternalDriveBackupStatus, + /// Next status of this external drive backup. + pub new_value: ExternalDriveBackupStatus, +} + +impl ExternalDriveBackupStatusChangedDetails { + pub fn new( + desktop_device_session_info: DesktopDeviceSessionLogInfo, + previous_value: ExternalDriveBackupStatus, + new_value: ExternalDriveBackupStatus, + ) -> Self { + ExternalDriveBackupStatusChangedDetails { + desktop_device_session_info, + previous_value, + new_value, + } + } +} + +const EXTERNAL_DRIVE_BACKUP_STATUS_CHANGED_DETAILS_FIELDS: &[&str] = &["desktop_device_session_info", + "previous_value", + "new_value"]; +impl ExternalDriveBackupStatusChangedDetails { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_desktop_device_session_info = None; + let mut field_previous_value = None; + let mut field_new_value = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "desktop_device_session_info" => { + if field_desktop_device_session_info.is_some() { + return Err(::serde::de::Error::duplicate_field("desktop_device_session_info")); + } + field_desktop_device_session_info = Some(map.next_value()?); + } + "previous_value" => { + if field_previous_value.is_some() { + return Err(::serde::de::Error::duplicate_field("previous_value")); + } + field_previous_value = Some(map.next_value()?); + } + "new_value" => { + if field_new_value.is_some() { + return Err(::serde::de::Error::duplicate_field("new_value")); + } + field_new_value = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } } - EventTypeArg::SharedLinkCopy => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "shared_link_copy")?; - s.end() + } + if optional && nothing { + return Ok(None); + } + let result = ExternalDriveBackupStatusChangedDetails { + desktop_device_session_info: field_desktop_device_session_info.ok_or_else(|| ::serde::de::Error::missing_field("desktop_device_session_info"))?, + previous_value: field_previous_value.ok_or_else(|| ::serde::de::Error::missing_field("previous_value"))?, + new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("desktop_device_session_info", &self.desktop_device_session_info)?; + s.serialize_field("previous_value", &self.previous_value)?; + s.serialize_field("new_value", &self.new_value)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for ExternalDriveBackupStatusChangedDetails { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = ExternalDriveBackupStatusChangedDetails; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a ExternalDriveBackupStatusChangedDetails struct") } - EventTypeArg::SharedLinkCreate => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "shared_link_create")?; - s.end() + fn visit_map>(self, map: V) -> Result { + ExternalDriveBackupStatusChangedDetails::internal_deserialize(map) } - EventTypeArg::SharedLinkDisable => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "shared_link_disable")?; - s.end() + } + deserializer.deserialize_struct("ExternalDriveBackupStatusChangedDetails", EXTERNAL_DRIVE_BACKUP_STATUS_CHANGED_DETAILS_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for ExternalDriveBackupStatusChangedDetails { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("ExternalDriveBackupStatusChangedDetails", 3)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct ExternalDriveBackupStatusChangedType { + pub description: String, +} + +impl ExternalDriveBackupStatusChangedType { + pub fn new(description: String) -> Self { + ExternalDriveBackupStatusChangedType { + description, + } + } +} + +const EXTERNAL_DRIVE_BACKUP_STATUS_CHANGED_TYPE_FIELDS: &[&str] = &["description"]; +impl ExternalDriveBackupStatusChangedType { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_description = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); + } + field_description = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } } - EventTypeArg::SharedLinkDownload => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "shared_link_download")?; - s.end() + } + if optional && nothing { + return Ok(None); + } + let result = ExternalDriveBackupStatusChangedType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("description", &self.description)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for ExternalDriveBackupStatusChangedType { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = ExternalDriveBackupStatusChangedType; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a ExternalDriveBackupStatusChangedType struct") } - EventTypeArg::SharedLinkRemoveExpiry => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "shared_link_remove_expiry")?; - s.end() + fn visit_map>(self, map: V) -> Result { + ExternalDriveBackupStatusChangedType::internal_deserialize(map) } - EventTypeArg::SharedLinkSettingsAddExpiration => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "shared_link_settings_add_expiration")?; - s.end() + } + deserializer.deserialize_struct("ExternalDriveBackupStatusChangedType", EXTERNAL_DRIVE_BACKUP_STATUS_CHANGED_TYPE_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for ExternalDriveBackupStatusChangedType { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("ExternalDriveBackupStatusChangedType", 1)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +/// Created External sharing report. +#[derive(Debug, Clone, PartialEq, Eq, Default)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct ExternalSharingCreateReportDetails { +} + +const EXTERNAL_SHARING_CREATE_REPORT_DETAILS_FIELDS: &[&str] = &[]; +impl ExternalSharingCreateReportDetails { + // no _opt deserializer + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + ) -> Result { + // ignore any fields found; none are presently recognized + crate::eat_json_fields(&mut map)?; + Ok(ExternalSharingCreateReportDetails {}) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for ExternalSharingCreateReportDetails { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = ExternalSharingCreateReportDetails; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a ExternalSharingCreateReportDetails struct") } - EventTypeArg::SharedLinkSettingsAddPassword => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "shared_link_settings_add_password")?; - s.end() + fn visit_map>(self, map: V) -> Result { + ExternalSharingCreateReportDetails::internal_deserialize(map) } - EventTypeArg::SharedLinkSettingsAllowDownloadDisabled => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "shared_link_settings_allow_download_disabled")?; - s.end() + } + deserializer.deserialize_struct("ExternalSharingCreateReportDetails", EXTERNAL_SHARING_CREATE_REPORT_DETAILS_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for ExternalSharingCreateReportDetails { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + serializer.serialize_struct("ExternalSharingCreateReportDetails", 0)?.end() + } +} + +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct ExternalSharingCreateReportType { + pub description: String, +} + +impl ExternalSharingCreateReportType { + pub fn new(description: String) -> Self { + ExternalSharingCreateReportType { + description, + } + } +} + +const EXTERNAL_SHARING_CREATE_REPORT_TYPE_FIELDS: &[&str] = &["description"]; +impl ExternalSharingCreateReportType { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_description = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); + } + field_description = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } } - EventTypeArg::SharedLinkSettingsAllowDownloadEnabled => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "shared_link_settings_allow_download_enabled")?; - s.end() + } + if optional && nothing { + return Ok(None); + } + let result = ExternalSharingCreateReportType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("description", &self.description)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for ExternalSharingCreateReportType { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = ExternalSharingCreateReportType; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a ExternalSharingCreateReportType struct") } - EventTypeArg::SharedLinkSettingsChangeAudience => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "shared_link_settings_change_audience")?; - s.end() + fn visit_map>(self, map: V) -> Result { + ExternalSharingCreateReportType::internal_deserialize(map) } - EventTypeArg::SharedLinkSettingsChangeExpiration => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "shared_link_settings_change_expiration")?; - s.end() + } + deserializer.deserialize_struct("ExternalSharingCreateReportType", EXTERNAL_SHARING_CREATE_REPORT_TYPE_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for ExternalSharingCreateReportType { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("ExternalSharingCreateReportType", 1)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +/// Couldn't create External sharing report. +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct ExternalSharingReportFailedDetails { + /// Failure reason. + pub failure_reason: crate::types::team::TeamReportFailureReason, +} + +impl ExternalSharingReportFailedDetails { + pub fn new(failure_reason: crate::types::team::TeamReportFailureReason) -> Self { + ExternalSharingReportFailedDetails { + failure_reason, + } + } +} + +const EXTERNAL_SHARING_REPORT_FAILED_DETAILS_FIELDS: &[&str] = &["failure_reason"]; +impl ExternalSharingReportFailedDetails { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_failure_reason = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "failure_reason" => { + if field_failure_reason.is_some() { + return Err(::serde::de::Error::duplicate_field("failure_reason")); + } + field_failure_reason = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } } - EventTypeArg::SharedLinkSettingsChangePassword => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "shared_link_settings_change_password")?; - s.end() + } + if optional && nothing { + return Ok(None); + } + let result = ExternalSharingReportFailedDetails { + failure_reason: field_failure_reason.ok_or_else(|| ::serde::de::Error::missing_field("failure_reason"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("failure_reason", &self.failure_reason)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for ExternalSharingReportFailedDetails { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = ExternalSharingReportFailedDetails; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a ExternalSharingReportFailedDetails struct") } - EventTypeArg::SharedLinkSettingsRemoveExpiration => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "shared_link_settings_remove_expiration")?; - s.end() + fn visit_map>(self, map: V) -> Result { + ExternalSharingReportFailedDetails::internal_deserialize(map) } - EventTypeArg::SharedLinkSettingsRemovePassword => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "shared_link_settings_remove_password")?; - s.end() + } + deserializer.deserialize_struct("ExternalSharingReportFailedDetails", EXTERNAL_SHARING_REPORT_FAILED_DETAILS_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for ExternalSharingReportFailedDetails { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("ExternalSharingReportFailedDetails", 1)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct ExternalSharingReportFailedType { + pub description: String, +} + +impl ExternalSharingReportFailedType { + pub fn new(description: String) -> Self { + ExternalSharingReportFailedType { + description, + } + } +} + +const EXTERNAL_SHARING_REPORT_FAILED_TYPE_FIELDS: &[&str] = &["description"]; +impl ExternalSharingReportFailedType { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_description = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); + } + field_description = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } } - EventTypeArg::SharedLinkShare => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "shared_link_share")?; - s.end() + } + if optional && nothing { + return Ok(None); + } + let result = ExternalSharingReportFailedType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("description", &self.description)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for ExternalSharingReportFailedType { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = ExternalSharingReportFailedType; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a ExternalSharingReportFailedType struct") } - EventTypeArg::SharedLinkView => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "shared_link_view")?; - s.end() + fn visit_map>(self, map: V) -> Result { + ExternalSharingReportFailedType::internal_deserialize(map) } - EventTypeArg::SharedNoteOpened => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "shared_note_opened")?; - s.end() + } + deserializer.deserialize_struct("ExternalSharingReportFailedType", EXTERNAL_SHARING_REPORT_FAILED_TYPE_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for ExternalSharingReportFailedType { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("ExternalSharingReportFailedType", 1)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +/// External sharing setting +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // variants may be added in the future +pub enum ExternalSharingSetting { + Allow, + Forbid, + Unset, + /// Catch-all used for unrecognized values returned from the server. Encountering this value + /// typically indicates that this SDK version is out of date. + Other, +} + +impl<'de> ::serde::de::Deserialize<'de> for ExternalSharingSetting { + fn deserialize>(deserializer: D) -> Result { + // union deserializer + use serde::de::{self, MapAccess, Visitor}; + struct EnumVisitor; + impl<'de> Visitor<'de> for EnumVisitor { + type Value = ExternalSharingSetting; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a ExternalSharingSetting structure") } - EventTypeArg::ShmodelDisableDownloads => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "shmodel_disable_downloads")?; - s.end() + fn visit_map>(self, mut map: V) -> Result { + let tag: &str = match map.next_key()? { + Some(".tag") => map.next_value()?, + _ => return Err(de::Error::missing_field(".tag")) + }; + let value = match tag { + "allow" => ExternalSharingSetting::Allow, + "forbid" => ExternalSharingSetting::Forbid, + "unset" => ExternalSharingSetting::Unset, + _ => ExternalSharingSetting::Other, + }; + crate::eat_json_fields(&mut map)?; + Ok(value) } - EventTypeArg::ShmodelEnableDownloads => { + } + const VARIANTS: &[&str] = &["allow", + "forbid", + "unset", + "other"]; + deserializer.deserialize_struct("ExternalSharingSetting", VARIANTS, EnumVisitor) + } +} + +impl ::serde::ser::Serialize for ExternalSharingSetting { + fn serialize(&self, serializer: S) -> Result { + // union serializer + use serde::ser::SerializeStruct; + match self { + ExternalSharingSetting::Allow => { // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "shmodel_enable_downloads")?; + let mut s = serializer.serialize_struct("ExternalSharingSetting", 1)?; + s.serialize_field(".tag", "allow")?; s.end() } - EventTypeArg::ShmodelGroupShare => { + ExternalSharingSetting::Forbid => { // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "shmodel_group_share")?; + let mut s = serializer.serialize_struct("ExternalSharingSetting", 1)?; + s.serialize_field(".tag", "forbid")?; s.end() } - EventTypeArg::ShowcaseAccessGranted => { + ExternalSharingSetting::Unset => { // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "showcase_access_granted")?; + let mut s = serializer.serialize_struct("ExternalSharingSetting", 1)?; + s.serialize_field(".tag", "unset")?; s.end() } - EventTypeArg::ShowcaseAddMember => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "showcase_add_member")?; - s.end() + ExternalSharingSetting::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) + } + } +} + +/// A user without a Dropbox account. +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct ExternalUserLogInfo { + /// An external user identifier. + pub user_identifier: String, + /// Identifier type. + pub identifier_type: IdentifierType, +} + +impl ExternalUserLogInfo { + pub fn new(user_identifier: String, identifier_type: IdentifierType) -> Self { + ExternalUserLogInfo { + user_identifier, + identifier_type, + } + } +} + +const EXTERNAL_USER_LOG_INFO_FIELDS: &[&str] = &["user_identifier", + "identifier_type"]; +impl ExternalUserLogInfo { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_user_identifier = None; + let mut field_identifier_type = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "user_identifier" => { + if field_user_identifier.is_some() { + return Err(::serde::de::Error::duplicate_field("user_identifier")); + } + field_user_identifier = Some(map.next_value()?); + } + "identifier_type" => { + if field_identifier_type.is_some() { + return Err(::serde::de::Error::duplicate_field("identifier_type")); + } + field_identifier_type = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } } - EventTypeArg::ShowcaseArchived => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "showcase_archived")?; - s.end() + } + if optional && nothing { + return Ok(None); + } + let result = ExternalUserLogInfo { + user_identifier: field_user_identifier.ok_or_else(|| ::serde::de::Error::missing_field("user_identifier"))?, + identifier_type: field_identifier_type.ok_or_else(|| ::serde::de::Error::missing_field("identifier_type"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("user_identifier", &self.user_identifier)?; + s.serialize_field("identifier_type", &self.identifier_type)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for ExternalUserLogInfo { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = ExternalUserLogInfo; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a ExternalUserLogInfo struct") } - EventTypeArg::ShowcaseCreated => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "showcase_created")?; - s.end() + fn visit_map>(self, map: V) -> Result { + ExternalUserLogInfo::internal_deserialize(map) } - EventTypeArg::ShowcaseDeleteComment => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "showcase_delete_comment")?; - s.end() + } + deserializer.deserialize_struct("ExternalUserLogInfo", EXTERNAL_USER_LOG_INFO_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for ExternalUserLogInfo { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("ExternalUserLogInfo", 2)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +/// Provides details about a failure +#[derive(Debug, Clone, PartialEq, Eq, Default)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct FailureDetailsLogInfo { + /// A user friendly explanation of the error. + pub user_friendly_message: Option, + /// A technical explanation of the error. This is relevant for some errors. + pub technical_error_message: Option, +} + +impl FailureDetailsLogInfo { + pub fn with_user_friendly_message(mut self, value: String) -> Self { + self.user_friendly_message = Some(value); + self + } + + pub fn with_technical_error_message(mut self, value: String) -> Self { + self.technical_error_message = Some(value); + self + } +} + +const FAILURE_DETAILS_LOG_INFO_FIELDS: &[&str] = &["user_friendly_message", + "technical_error_message"]; +impl FailureDetailsLogInfo { + // no _opt deserializer + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + ) -> Result { + let mut field_user_friendly_message = None; + let mut field_technical_error_message = None; + while let Some(key) = map.next_key::<&str>()? { + match key { + "user_friendly_message" => { + if field_user_friendly_message.is_some() { + return Err(::serde::de::Error::duplicate_field("user_friendly_message")); + } + field_user_friendly_message = Some(map.next_value()?); + } + "technical_error_message" => { + if field_technical_error_message.is_some() { + return Err(::serde::de::Error::duplicate_field("technical_error_message")); + } + field_technical_error_message = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } } - EventTypeArg::ShowcaseEdited => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "showcase_edited")?; - s.end() + } + let result = FailureDetailsLogInfo { + user_friendly_message: field_user_friendly_message.and_then(Option::flatten), + technical_error_message: field_technical_error_message.and_then(Option::flatten), + }; + Ok(result) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + if let Some(val) = &self.user_friendly_message { + s.serialize_field("user_friendly_message", val)?; + } + if let Some(val) = &self.technical_error_message { + s.serialize_field("technical_error_message", val)?; + } + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for FailureDetailsLogInfo { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = FailureDetailsLogInfo; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a FailureDetailsLogInfo struct") } - EventTypeArg::ShowcaseEditComment => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "showcase_edit_comment")?; - s.end() + fn visit_map>(self, map: V) -> Result { + FailureDetailsLogInfo::internal_deserialize(map) } - EventTypeArg::ShowcaseFileAdded => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "showcase_file_added")?; - s.end() + } + deserializer.deserialize_struct("FailureDetailsLogInfo", FAILURE_DETAILS_LOG_INFO_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for FailureDetailsLogInfo { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("FailureDetailsLogInfo", 2)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // variants may be added in the future +pub enum FedAdminRole { + EnterpriseAdmin, + NotEnterpriseAdmin, + /// Catch-all used for unrecognized values returned from the server. Encountering this value + /// typically indicates that this SDK version is out of date. + Other, +} + +impl<'de> ::serde::de::Deserialize<'de> for FedAdminRole { + fn deserialize>(deserializer: D) -> Result { + // union deserializer + use serde::de::{self, MapAccess, Visitor}; + struct EnumVisitor; + impl<'de> Visitor<'de> for EnumVisitor { + type Value = FedAdminRole; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a FedAdminRole structure") } - EventTypeArg::ShowcaseFileDownload => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "showcase_file_download")?; - s.end() + fn visit_map>(self, mut map: V) -> Result { + let tag: &str = match map.next_key()? { + Some(".tag") => map.next_value()?, + _ => return Err(de::Error::missing_field(".tag")) + }; + let value = match tag { + "enterprise_admin" => FedAdminRole::EnterpriseAdmin, + "not_enterprise_admin" => FedAdminRole::NotEnterpriseAdmin, + _ => FedAdminRole::Other, + }; + crate::eat_json_fields(&mut map)?; + Ok(value) } - EventTypeArg::ShowcaseFileRemoved => { + } + const VARIANTS: &[&str] = &["enterprise_admin", + "not_enterprise_admin", + "other"]; + deserializer.deserialize_struct("FedAdminRole", VARIANTS, EnumVisitor) + } +} + +impl ::serde::ser::Serialize for FedAdminRole { + fn serialize(&self, serializer: S) -> Result { + // union serializer + use serde::ser::SerializeStruct; + match self { + FedAdminRole::EnterpriseAdmin => { // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "showcase_file_removed")?; + let mut s = serializer.serialize_struct("FedAdminRole", 1)?; + s.serialize_field(".tag", "enterprise_admin")?; s.end() } - EventTypeArg::ShowcaseFileView => { + FedAdminRole::NotEnterpriseAdmin => { // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "showcase_file_view")?; + let mut s = serializer.serialize_struct("FedAdminRole", 1)?; + s.serialize_field(".tag", "not_enterprise_admin")?; s.end() } - EventTypeArg::ShowcasePermanentlyDeleted => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "showcase_permanently_deleted")?; - s.end() + FedAdminRole::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) + } + } +} + +/// More details about the organization or team. +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // variants may be added in the future +pub enum FedExtraDetails { + /// More details about the organization. + Organization(OrganizationDetails), + /// More details about the team. + Team(TeamDetails), + /// Catch-all used for unrecognized values returned from the server. Encountering this value + /// typically indicates that this SDK version is out of date. + Other, +} + +impl<'de> ::serde::de::Deserialize<'de> for FedExtraDetails { + fn deserialize>(deserializer: D) -> Result { + // union deserializer + use serde::de::{self, MapAccess, Visitor}; + struct EnumVisitor; + impl<'de> Visitor<'de> for EnumVisitor { + type Value = FedExtraDetails; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a FedExtraDetails structure") } - EventTypeArg::ShowcasePostComment => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "showcase_post_comment")?; - s.end() + fn visit_map>(self, mut map: V) -> Result { + let tag: &str = match map.next_key()? { + Some(".tag") => map.next_value()?, + _ => return Err(de::Error::missing_field(".tag")) + }; + let value = match tag { + "organization" => FedExtraDetails::Organization(OrganizationDetails::internal_deserialize(&mut map)?), + "team" => FedExtraDetails::Team(TeamDetails::internal_deserialize(&mut map)?), + _ => FedExtraDetails::Other, + }; + crate::eat_json_fields(&mut map)?; + Ok(value) } - EventTypeArg::ShowcaseRemoveMember => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "showcase_remove_member")?; + } + const VARIANTS: &[&str] = &["organization", + "team", + "other"]; + deserializer.deserialize_struct("FedExtraDetails", VARIANTS, EnumVisitor) + } +} + +impl ::serde::ser::Serialize for FedExtraDetails { + fn serialize(&self, serializer: S) -> Result { + // union serializer + use serde::ser::SerializeStruct; + match self { + FedExtraDetails::Organization(x) => { + // struct + let mut s = serializer.serialize_struct("FedExtraDetails", 2)?; + s.serialize_field(".tag", "organization")?; + x.internal_serialize::(&mut s)?; s.end() } - EventTypeArg::ShowcaseRenamed => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "showcase_renamed")?; + FedExtraDetails::Team(x) => { + // struct + let mut s = serializer.serialize_struct("FedExtraDetails", 2)?; + s.serialize_field(".tag", "team")?; + x.internal_serialize::(&mut s)?; s.end() } - EventTypeArg::ShowcaseRequestAccess => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "showcase_request_access")?; - s.end() + FedExtraDetails::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) + } + } +} + +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // variants may be added in the future +pub enum FedHandshakeAction { + AcceptedInvite, + CanceledInvite, + InviteExpired, + Invited, + RejectedInvite, + RemovedTeam, + /// Catch-all used for unrecognized values returned from the server. Encountering this value + /// typically indicates that this SDK version is out of date. + Other, +} + +impl<'de> ::serde::de::Deserialize<'de> for FedHandshakeAction { + fn deserialize>(deserializer: D) -> Result { + // union deserializer + use serde::de::{self, MapAccess, Visitor}; + struct EnumVisitor; + impl<'de> Visitor<'de> for EnumVisitor { + type Value = FedHandshakeAction; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a FedHandshakeAction structure") } - EventTypeArg::ShowcaseResolveComment => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "showcase_resolve_comment")?; - s.end() + fn visit_map>(self, mut map: V) -> Result { + let tag: &str = match map.next_key()? { + Some(".tag") => map.next_value()?, + _ => return Err(de::Error::missing_field(".tag")) + }; + let value = match tag { + "accepted_invite" => FedHandshakeAction::AcceptedInvite, + "canceled_invite" => FedHandshakeAction::CanceledInvite, + "invite_expired" => FedHandshakeAction::InviteExpired, + "invited" => FedHandshakeAction::Invited, + "rejected_invite" => FedHandshakeAction::RejectedInvite, + "removed_team" => FedHandshakeAction::RemovedTeam, + _ => FedHandshakeAction::Other, + }; + crate::eat_json_fields(&mut map)?; + Ok(value) } - EventTypeArg::ShowcaseRestored => { + } + const VARIANTS: &[&str] = &["accepted_invite", + "canceled_invite", + "invite_expired", + "invited", + "rejected_invite", + "removed_team", + "other"]; + deserializer.deserialize_struct("FedHandshakeAction", VARIANTS, EnumVisitor) + } +} + +impl ::serde::ser::Serialize for FedHandshakeAction { + fn serialize(&self, serializer: S) -> Result { + // union serializer + use serde::ser::SerializeStruct; + match self { + FedHandshakeAction::AcceptedInvite => { // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "showcase_restored")?; + let mut s = serializer.serialize_struct("FedHandshakeAction", 1)?; + s.serialize_field(".tag", "accepted_invite")?; s.end() } - EventTypeArg::ShowcaseTrashed => { + FedHandshakeAction::CanceledInvite => { // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "showcase_trashed")?; + let mut s = serializer.serialize_struct("FedHandshakeAction", 1)?; + s.serialize_field(".tag", "canceled_invite")?; s.end() } - EventTypeArg::ShowcaseTrashedDeprecated => { + FedHandshakeAction::InviteExpired => { // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "showcase_trashed_deprecated")?; + let mut s = serializer.serialize_struct("FedHandshakeAction", 1)?; + s.serialize_field(".tag", "invite_expired")?; s.end() } - EventTypeArg::ShowcaseUnresolveComment => { + FedHandshakeAction::Invited => { // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "showcase_unresolve_comment")?; + let mut s = serializer.serialize_struct("FedHandshakeAction", 1)?; + s.serialize_field(".tag", "invited")?; s.end() } - EventTypeArg::ShowcaseUntrashed => { + FedHandshakeAction::RejectedInvite => { // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "showcase_untrashed")?; + let mut s = serializer.serialize_struct("FedHandshakeAction", 1)?; + s.serialize_field(".tag", "rejected_invite")?; s.end() } - EventTypeArg::ShowcaseUntrashedDeprecated => { + FedHandshakeAction::RemovedTeam => { // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "showcase_untrashed_deprecated")?; + let mut s = serializer.serialize_struct("FedHandshakeAction", 1)?; + s.serialize_field(".tag", "removed_team")?; s.end() } - EventTypeArg::ShowcaseView => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "showcase_view")?; - s.end() + FedHandshakeAction::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) + } + } +} + +/// Additional information about the organization or connected team +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // variants may be added in the future +pub enum FederationStatusChangeAdditionalInfo { + /// The name of the team + ConnectedTeamName(ConnectedTeamName), + /// The email to which the request was sent + NonTrustedTeamDetails(NonTrustedTeamDetails), + /// The name of the organization + OrganizationName(OrganizationName), + /// Catch-all used for unrecognized values returned from the server. Encountering this value + /// typically indicates that this SDK version is out of date. + Other, +} + +impl<'de> ::serde::de::Deserialize<'de> for FederationStatusChangeAdditionalInfo { + fn deserialize>(deserializer: D) -> Result { + // union deserializer + use serde::de::{self, MapAccess, Visitor}; + struct EnumVisitor; + impl<'de> Visitor<'de> for EnumVisitor { + type Value = FederationStatusChangeAdditionalInfo; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a FederationStatusChangeAdditionalInfo structure") } - EventTypeArg::SsoAddCert => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "sso_add_cert")?; - s.end() + fn visit_map>(self, mut map: V) -> Result { + let tag: &str = match map.next_key()? { + Some(".tag") => map.next_value()?, + _ => return Err(de::Error::missing_field(".tag")) + }; + let value = match tag { + "connected_team_name" => FederationStatusChangeAdditionalInfo::ConnectedTeamName(ConnectedTeamName::internal_deserialize(&mut map)?), + "non_trusted_team_details" => FederationStatusChangeAdditionalInfo::NonTrustedTeamDetails(NonTrustedTeamDetails::internal_deserialize(&mut map)?), + "organization_name" => FederationStatusChangeAdditionalInfo::OrganizationName(OrganizationName::internal_deserialize(&mut map)?), + _ => FederationStatusChangeAdditionalInfo::Other, + }; + crate::eat_json_fields(&mut map)?; + Ok(value) } - EventTypeArg::SsoAddLoginUrl => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "sso_add_login_url")?; + } + const VARIANTS: &[&str] = &["connected_team_name", + "non_trusted_team_details", + "organization_name", + "other"]; + deserializer.deserialize_struct("FederationStatusChangeAdditionalInfo", VARIANTS, EnumVisitor) + } +} + +impl ::serde::ser::Serialize for FederationStatusChangeAdditionalInfo { + fn serialize(&self, serializer: S) -> Result { + // union serializer + use serde::ser::SerializeStruct; + match self { + FederationStatusChangeAdditionalInfo::ConnectedTeamName(x) => { + // struct + let mut s = serializer.serialize_struct("FederationStatusChangeAdditionalInfo", 2)?; + s.serialize_field(".tag", "connected_team_name")?; + x.internal_serialize::(&mut s)?; s.end() } - EventTypeArg::SsoAddLogoutUrl => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "sso_add_logout_url")?; + FederationStatusChangeAdditionalInfo::NonTrustedTeamDetails(x) => { + // struct + let mut s = serializer.serialize_struct("FederationStatusChangeAdditionalInfo", 2)?; + s.serialize_field(".tag", "non_trusted_team_details")?; + x.internal_serialize::(&mut s)?; s.end() } - EventTypeArg::SsoChangeCert => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "sso_change_cert")?; + FederationStatusChangeAdditionalInfo::OrganizationName(x) => { + // struct + let mut s = serializer.serialize_struct("FederationStatusChangeAdditionalInfo", 2)?; + s.serialize_field(".tag", "organization_name")?; + x.internal_serialize::(&mut s)?; s.end() } - EventTypeArg::SsoChangeLoginUrl => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "sso_change_login_url")?; - s.end() + FederationStatusChangeAdditionalInfo::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) + } + } +} + +/// Added file comment. +#[derive(Debug, Clone, PartialEq, Eq, Default)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct FileAddCommentDetails { + /// Comment text. + pub comment_text: Option, +} + +impl FileAddCommentDetails { + pub fn with_comment_text(mut self, value: String) -> Self { + self.comment_text = Some(value); + self + } +} + +const FILE_ADD_COMMENT_DETAILS_FIELDS: &[&str] = &["comment_text"]; +impl FileAddCommentDetails { + // no _opt deserializer + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + ) -> Result { + let mut field_comment_text = None; + while let Some(key) = map.next_key::<&str>()? { + match key { + "comment_text" => { + if field_comment_text.is_some() { + return Err(::serde::de::Error::duplicate_field("comment_text")); + } + field_comment_text = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } + } + } + let result = FileAddCommentDetails { + comment_text: field_comment_text.and_then(Option::flatten), + }; + Ok(result) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + if let Some(val) = &self.comment_text { + s.serialize_field("comment_text", val)?; + } + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for FileAddCommentDetails { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = FileAddCommentDetails; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a FileAddCommentDetails struct") + } + fn visit_map>(self, map: V) -> Result { + FileAddCommentDetails::internal_deserialize(map) + } + } + deserializer.deserialize_struct("FileAddCommentDetails", FILE_ADD_COMMENT_DETAILS_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for FileAddCommentDetails { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("FileAddCommentDetails", 1)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct FileAddCommentType { + pub description: String, +} + +impl FileAddCommentType { + pub fn new(description: String) -> Self { + FileAddCommentType { + description, + } + } +} + +const FILE_ADD_COMMENT_TYPE_FIELDS: &[&str] = &["description"]; +impl FileAddCommentType { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_description = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); + } + field_description = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } + } + } + if optional && nothing { + return Ok(None); + } + let result = FileAddCommentType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("description", &self.description)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for FileAddCommentType { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = FileAddCommentType; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a FileAddCommentType struct") + } + fn visit_map>(self, map: V) -> Result { + FileAddCommentType::internal_deserialize(map) + } + } + deserializer.deserialize_struct("FileAddCommentType", FILE_ADD_COMMENT_TYPE_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for FileAddCommentType { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("FileAddCommentType", 1)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +/// Added files and/or folders. +#[derive(Debug, Clone, PartialEq, Eq, Default)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct FileAddDetails { +} + +const FILE_ADD_DETAILS_FIELDS: &[&str] = &[]; +impl FileAddDetails { + // no _opt deserializer + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + ) -> Result { + // ignore any fields found; none are presently recognized + crate::eat_json_fields(&mut map)?; + Ok(FileAddDetails {}) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for FileAddDetails { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = FileAddDetails; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a FileAddDetails struct") + } + fn visit_map>(self, map: V) -> Result { + FileAddDetails::internal_deserialize(map) + } + } + deserializer.deserialize_struct("FileAddDetails", FILE_ADD_DETAILS_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for FileAddDetails { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + serializer.serialize_struct("FileAddDetails", 0)?.end() + } +} + +/// Added files and/or folders from automation. +#[derive(Debug, Clone, PartialEq, Eq, Default)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct FileAddFromAutomationDetails { +} + +const FILE_ADD_FROM_AUTOMATION_DETAILS_FIELDS: &[&str] = &[]; +impl FileAddFromAutomationDetails { + // no _opt deserializer + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + ) -> Result { + // ignore any fields found; none are presently recognized + crate::eat_json_fields(&mut map)?; + Ok(FileAddFromAutomationDetails {}) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for FileAddFromAutomationDetails { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = FileAddFromAutomationDetails; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a FileAddFromAutomationDetails struct") + } + fn visit_map>(self, map: V) -> Result { + FileAddFromAutomationDetails::internal_deserialize(map) + } + } + deserializer.deserialize_struct("FileAddFromAutomationDetails", FILE_ADD_FROM_AUTOMATION_DETAILS_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for FileAddFromAutomationDetails { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + serializer.serialize_struct("FileAddFromAutomationDetails", 0)?.end() + } +} + +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct FileAddFromAutomationType { + pub description: String, +} + +impl FileAddFromAutomationType { + pub fn new(description: String) -> Self { + FileAddFromAutomationType { + description, + } + } +} + +const FILE_ADD_FROM_AUTOMATION_TYPE_FIELDS: &[&str] = &["description"]; +impl FileAddFromAutomationType { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_description = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); + } + field_description = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } + } + } + if optional && nothing { + return Ok(None); + } + let result = FileAddFromAutomationType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("description", &self.description)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for FileAddFromAutomationType { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = FileAddFromAutomationType; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a FileAddFromAutomationType struct") + } + fn visit_map>(self, map: V) -> Result { + FileAddFromAutomationType::internal_deserialize(map) + } + } + deserializer.deserialize_struct("FileAddFromAutomationType", FILE_ADD_FROM_AUTOMATION_TYPE_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for FileAddFromAutomationType { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("FileAddFromAutomationType", 1)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct FileAddType { + pub description: String, +} + +impl FileAddType { + pub fn new(description: String) -> Self { + FileAddType { + description, + } + } +} + +const FILE_ADD_TYPE_FIELDS: &[&str] = &["description"]; +impl FileAddType { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_description = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); + } + field_description = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } } - EventTypeArg::SsoChangeLogoutUrl => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "sso_change_logout_url")?; - s.end() + } + if optional && nothing { + return Ok(None); + } + let result = FileAddType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("description", &self.description)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for FileAddType { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = FileAddType; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a FileAddType struct") } - EventTypeArg::SsoChangeSamlIdentityMode => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "sso_change_saml_identity_mode")?; - s.end() + fn visit_map>(self, map: V) -> Result { + FileAddType::internal_deserialize(map) } - EventTypeArg::SsoRemoveCert => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "sso_remove_cert")?; - s.end() + } + deserializer.deserialize_struct("FileAddType", FILE_ADD_TYPE_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for FileAddType { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("FileAddType", 1)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +/// Subscribed to or unsubscribed from comment notifications for file. +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct FileChangeCommentSubscriptionDetails { + /// New file comment subscription. + pub new_value: FileCommentNotificationPolicy, + /// Previous file comment subscription. Might be missing due to historical data gap. + pub previous_value: Option, +} + +impl FileChangeCommentSubscriptionDetails { + pub fn new(new_value: FileCommentNotificationPolicy) -> Self { + FileChangeCommentSubscriptionDetails { + new_value, + previous_value: None, + } + } + + pub fn with_previous_value(mut self, value: FileCommentNotificationPolicy) -> Self { + self.previous_value = Some(value); + self + } +} + +const FILE_CHANGE_COMMENT_SUBSCRIPTION_DETAILS_FIELDS: &[&str] = &["new_value", + "previous_value"]; +impl FileChangeCommentSubscriptionDetails { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_new_value = None; + let mut field_previous_value = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "new_value" => { + if field_new_value.is_some() { + return Err(::serde::de::Error::duplicate_field("new_value")); + } + field_new_value = Some(map.next_value()?); + } + "previous_value" => { + if field_previous_value.is_some() { + return Err(::serde::de::Error::duplicate_field("previous_value")); + } + field_previous_value = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } } - EventTypeArg::SsoRemoveLoginUrl => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "sso_remove_login_url")?; - s.end() + } + if optional && nothing { + return Ok(None); + } + let result = FileChangeCommentSubscriptionDetails { + new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, + previous_value: field_previous_value.and_then(Option::flatten), + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("new_value", &self.new_value)?; + if let Some(val) = &self.previous_value { + s.serialize_field("previous_value", val)?; + } + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for FileChangeCommentSubscriptionDetails { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = FileChangeCommentSubscriptionDetails; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a FileChangeCommentSubscriptionDetails struct") } - EventTypeArg::SsoRemoveLogoutUrl => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "sso_remove_logout_url")?; - s.end() + fn visit_map>(self, map: V) -> Result { + FileChangeCommentSubscriptionDetails::internal_deserialize(map) } - EventTypeArg::TeamFolderChangeStatus => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "team_folder_change_status")?; - s.end() + } + deserializer.deserialize_struct("FileChangeCommentSubscriptionDetails", FILE_CHANGE_COMMENT_SUBSCRIPTION_DETAILS_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for FileChangeCommentSubscriptionDetails { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("FileChangeCommentSubscriptionDetails", 2)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct FileChangeCommentSubscriptionType { + pub description: String, +} + +impl FileChangeCommentSubscriptionType { + pub fn new(description: String) -> Self { + FileChangeCommentSubscriptionType { + description, + } + } +} + +const FILE_CHANGE_COMMENT_SUBSCRIPTION_TYPE_FIELDS: &[&str] = &["description"]; +impl FileChangeCommentSubscriptionType { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_description = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); + } + field_description = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } } - EventTypeArg::TeamFolderCreate => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "team_folder_create")?; - s.end() + } + if optional && nothing { + return Ok(None); + } + let result = FileChangeCommentSubscriptionType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("description", &self.description)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for FileChangeCommentSubscriptionType { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = FileChangeCommentSubscriptionType; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a FileChangeCommentSubscriptionType struct") } - EventTypeArg::TeamFolderDowngrade => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "team_folder_downgrade")?; - s.end() + fn visit_map>(self, map: V) -> Result { + FileChangeCommentSubscriptionType::internal_deserialize(map) } - EventTypeArg::TeamFolderPermanentlyDelete => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "team_folder_permanently_delete")?; - s.end() + } + deserializer.deserialize_struct("FileChangeCommentSubscriptionType", FILE_CHANGE_COMMENT_SUBSCRIPTION_TYPE_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for FileChangeCommentSubscriptionType { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("FileChangeCommentSubscriptionType", 1)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +/// Enable or disable file comments notifications +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // variants may be added in the future +pub enum FileCommentNotificationPolicy { + Disabled, + Enabled, + /// Catch-all used for unrecognized values returned from the server. Encountering this value + /// typically indicates that this SDK version is out of date. + Other, +} + +impl<'de> ::serde::de::Deserialize<'de> for FileCommentNotificationPolicy { + fn deserialize>(deserializer: D) -> Result { + // union deserializer + use serde::de::{self, MapAccess, Visitor}; + struct EnumVisitor; + impl<'de> Visitor<'de> for EnumVisitor { + type Value = FileCommentNotificationPolicy; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a FileCommentNotificationPolicy structure") } - EventTypeArg::TeamFolderRename => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "team_folder_rename")?; - s.end() + fn visit_map>(self, mut map: V) -> Result { + let tag: &str = match map.next_key()? { + Some(".tag") => map.next_value()?, + _ => return Err(de::Error::missing_field(".tag")) + }; + let value = match tag { + "disabled" => FileCommentNotificationPolicy::Disabled, + "enabled" => FileCommentNotificationPolicy::Enabled, + _ => FileCommentNotificationPolicy::Other, + }; + crate::eat_json_fields(&mut map)?; + Ok(value) } - EventTypeArg::TeamSelectiveSyncSettingsChanged => { + } + const VARIANTS: &[&str] = &["disabled", + "enabled", + "other"]; + deserializer.deserialize_struct("FileCommentNotificationPolicy", VARIANTS, EnumVisitor) + } +} + +impl ::serde::ser::Serialize for FileCommentNotificationPolicy { + fn serialize(&self, serializer: S) -> Result { + // union serializer + use serde::ser::SerializeStruct; + match self { + FileCommentNotificationPolicy::Disabled => { // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "team_selective_sync_settings_changed")?; + let mut s = serializer.serialize_struct("FileCommentNotificationPolicy", 1)?; + s.serialize_field(".tag", "disabled")?; s.end() } - EventTypeArg::AccountCaptureChangePolicy => { + FileCommentNotificationPolicy::Enabled => { // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "account_capture_change_policy")?; + let mut s = serializer.serialize_struct("FileCommentNotificationPolicy", 1)?; + s.serialize_field(".tag", "enabled")?; s.end() } - EventTypeArg::AdminEmailRemindersChanged => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "admin_email_reminders_changed")?; - s.end() + FileCommentNotificationPolicy::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) + } + } +} + +/// Enabled/disabled commenting on team files. +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct FileCommentsChangePolicyDetails { + /// New commenting on team files policy. + pub new_value: FileCommentsPolicy, + /// Previous commenting on team files policy. Might be missing due to historical data gap. + pub previous_value: Option, +} + +impl FileCommentsChangePolicyDetails { + pub fn new(new_value: FileCommentsPolicy) -> Self { + FileCommentsChangePolicyDetails { + new_value, + previous_value: None, + } + } + + pub fn with_previous_value(mut self, value: FileCommentsPolicy) -> Self { + self.previous_value = Some(value); + self + } +} + +const FILE_COMMENTS_CHANGE_POLICY_DETAILS_FIELDS: &[&str] = &["new_value", + "previous_value"]; +impl FileCommentsChangePolicyDetails { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_new_value = None; + let mut field_previous_value = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "new_value" => { + if field_new_value.is_some() { + return Err(::serde::de::Error::duplicate_field("new_value")); + } + field_new_value = Some(map.next_value()?); + } + "previous_value" => { + if field_previous_value.is_some() { + return Err(::serde::de::Error::duplicate_field("previous_value")); + } + field_previous_value = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } } - EventTypeArg::AllowDownloadDisabled => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "allow_download_disabled")?; - s.end() + } + if optional && nothing { + return Ok(None); + } + let result = FileCommentsChangePolicyDetails { + new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, + previous_value: field_previous_value.and_then(Option::flatten), + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("new_value", &self.new_value)?; + if let Some(val) = &self.previous_value { + s.serialize_field("previous_value", val)?; + } + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for FileCommentsChangePolicyDetails { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = FileCommentsChangePolicyDetails; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a FileCommentsChangePolicyDetails struct") } - EventTypeArg::AllowDownloadEnabled => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "allow_download_enabled")?; - s.end() + fn visit_map>(self, map: V) -> Result { + FileCommentsChangePolicyDetails::internal_deserialize(map) } - EventTypeArg::AppPermissionsChanged => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "app_permissions_changed")?; - s.end() + } + deserializer.deserialize_struct("FileCommentsChangePolicyDetails", FILE_COMMENTS_CHANGE_POLICY_DETAILS_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for FileCommentsChangePolicyDetails { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("FileCommentsChangePolicyDetails", 2)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct FileCommentsChangePolicyType { + pub description: String, +} + +impl FileCommentsChangePolicyType { + pub fn new(description: String) -> Self { + FileCommentsChangePolicyType { + description, + } + } +} + +const FILE_COMMENTS_CHANGE_POLICY_TYPE_FIELDS: &[&str] = &["description"]; +impl FileCommentsChangePolicyType { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_description = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); + } + field_description = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } } - EventTypeArg::CameraUploadsPolicyChanged => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "camera_uploads_policy_changed")?; - s.end() + } + if optional && nothing { + return Ok(None); + } + let result = FileCommentsChangePolicyType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("description", &self.description)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for FileCommentsChangePolicyType { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = FileCommentsChangePolicyType; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a FileCommentsChangePolicyType struct") } - EventTypeArg::CaptureTranscriptPolicyChanged => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "capture_transcript_policy_changed")?; - s.end() + fn visit_map>(self, map: V) -> Result { + FileCommentsChangePolicyType::internal_deserialize(map) } - EventTypeArg::ClassificationChangePolicy => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "classification_change_policy")?; - s.end() + } + deserializer.deserialize_struct("FileCommentsChangePolicyType", FILE_COMMENTS_CHANGE_POLICY_TYPE_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for FileCommentsChangePolicyType { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("FileCommentsChangePolicyType", 1)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +/// File comments policy +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // variants may be added in the future +pub enum FileCommentsPolicy { + Disabled, + Enabled, + /// Catch-all used for unrecognized values returned from the server. Encountering this value + /// typically indicates that this SDK version is out of date. + Other, +} + +impl<'de> ::serde::de::Deserialize<'de> for FileCommentsPolicy { + fn deserialize>(deserializer: D) -> Result { + // union deserializer + use serde::de::{self, MapAccess, Visitor}; + struct EnumVisitor; + impl<'de> Visitor<'de> for EnumVisitor { + type Value = FileCommentsPolicy; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a FileCommentsPolicy structure") } - EventTypeArg::ComputerBackupPolicyChanged => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "computer_backup_policy_changed")?; - s.end() + fn visit_map>(self, mut map: V) -> Result { + let tag: &str = match map.next_key()? { + Some(".tag") => map.next_value()?, + _ => return Err(de::Error::missing_field(".tag")) + }; + let value = match tag { + "disabled" => FileCommentsPolicy::Disabled, + "enabled" => FileCommentsPolicy::Enabled, + _ => FileCommentsPolicy::Other, + }; + crate::eat_json_fields(&mut map)?; + Ok(value) } - EventTypeArg::ContentAdministrationPolicyChanged => { + } + const VARIANTS: &[&str] = &["disabled", + "enabled", + "other"]; + deserializer.deserialize_struct("FileCommentsPolicy", VARIANTS, EnumVisitor) + } +} + +impl ::serde::ser::Serialize for FileCommentsPolicy { + fn serialize(&self, serializer: S) -> Result { + // union serializer + use serde::ser::SerializeStruct; + match self { + FileCommentsPolicy::Disabled => { // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "content_administration_policy_changed")?; + let mut s = serializer.serialize_struct("FileCommentsPolicy", 1)?; + s.serialize_field(".tag", "disabled")?; s.end() } - EventTypeArg::DataPlacementRestrictionChangePolicy => { + FileCommentsPolicy::Enabled => { // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "data_placement_restriction_change_policy")?; + let mut s = serializer.serialize_struct("FileCommentsPolicy", 1)?; + s.serialize_field(".tag", "enabled")?; s.end() } - EventTypeArg::DataPlacementRestrictionSatisfyPolicy => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "data_placement_restriction_satisfy_policy")?; - s.end() + FileCommentsPolicy::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) + } + } +} + +/// Copied files and/or folders. +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct FileCopyDetails { + /// Relocate action details. + pub relocate_action_details: Vec, +} + +impl FileCopyDetails { + pub fn new(relocate_action_details: Vec) -> Self { + FileCopyDetails { + relocate_action_details, + } + } +} + +const FILE_COPY_DETAILS_FIELDS: &[&str] = &["relocate_action_details"]; +impl FileCopyDetails { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_relocate_action_details = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "relocate_action_details" => { + if field_relocate_action_details.is_some() { + return Err(::serde::de::Error::duplicate_field("relocate_action_details")); + } + field_relocate_action_details = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } } - EventTypeArg::DeviceApprovalsAddException => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "device_approvals_add_exception")?; - s.end() + } + if optional && nothing { + return Ok(None); + } + let result = FileCopyDetails { + relocate_action_details: field_relocate_action_details.ok_or_else(|| ::serde::de::Error::missing_field("relocate_action_details"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("relocate_action_details", &self.relocate_action_details)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for FileCopyDetails { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = FileCopyDetails; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a FileCopyDetails struct") } - EventTypeArg::DeviceApprovalsChangeDesktopPolicy => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "device_approvals_change_desktop_policy")?; - s.end() + fn visit_map>(self, map: V) -> Result { + FileCopyDetails::internal_deserialize(map) } - EventTypeArg::DeviceApprovalsChangeMobilePolicy => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "device_approvals_change_mobile_policy")?; - s.end() + } + deserializer.deserialize_struct("FileCopyDetails", FILE_COPY_DETAILS_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for FileCopyDetails { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("FileCopyDetails", 1)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct FileCopyType { + pub description: String, +} + +impl FileCopyType { + pub fn new(description: String) -> Self { + FileCopyType { + description, + } + } +} + +const FILE_COPY_TYPE_FIELDS: &[&str] = &["description"]; +impl FileCopyType { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_description = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); + } + field_description = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } } - EventTypeArg::DeviceApprovalsChangeOverageAction => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "device_approvals_change_overage_action")?; - s.end() + } + if optional && nothing { + return Ok(None); + } + let result = FileCopyType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("description", &self.description)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for FileCopyType { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = FileCopyType; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a FileCopyType struct") } - EventTypeArg::DeviceApprovalsChangeUnlinkAction => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "device_approvals_change_unlink_action")?; - s.end() + fn visit_map>(self, map: V) -> Result { + FileCopyType::internal_deserialize(map) } - EventTypeArg::DeviceApprovalsRemoveException => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "device_approvals_remove_exception")?; - s.end() + } + deserializer.deserialize_struct("FileCopyType", FILE_COPY_TYPE_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for FileCopyType { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("FileCopyType", 1)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +/// Deleted file comment. +#[derive(Debug, Clone, PartialEq, Eq, Default)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct FileDeleteCommentDetails { + /// Comment text. + pub comment_text: Option, +} + +impl FileDeleteCommentDetails { + pub fn with_comment_text(mut self, value: String) -> Self { + self.comment_text = Some(value); + self + } +} + +const FILE_DELETE_COMMENT_DETAILS_FIELDS: &[&str] = &["comment_text"]; +impl FileDeleteCommentDetails { + // no _opt deserializer + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + ) -> Result { + let mut field_comment_text = None; + while let Some(key) = map.next_key::<&str>()? { + match key { + "comment_text" => { + if field_comment_text.is_some() { + return Err(::serde::de::Error::duplicate_field("comment_text")); + } + field_comment_text = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } } - EventTypeArg::DirectoryRestrictionsAddMembers => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "directory_restrictions_add_members")?; - s.end() + } + let result = FileDeleteCommentDetails { + comment_text: field_comment_text.and_then(Option::flatten), + }; + Ok(result) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + if let Some(val) = &self.comment_text { + s.serialize_field("comment_text", val)?; + } + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for FileDeleteCommentDetails { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = FileDeleteCommentDetails; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a FileDeleteCommentDetails struct") } - EventTypeArg::DirectoryRestrictionsRemoveMembers => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "directory_restrictions_remove_members")?; - s.end() + fn visit_map>(self, map: V) -> Result { + FileDeleteCommentDetails::internal_deserialize(map) } - EventTypeArg::DropboxPasswordsPolicyChanged => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "dropbox_passwords_policy_changed")?; - s.end() + } + deserializer.deserialize_struct("FileDeleteCommentDetails", FILE_DELETE_COMMENT_DETAILS_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for FileDeleteCommentDetails { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("FileDeleteCommentDetails", 1)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct FileDeleteCommentType { + pub description: String, +} + +impl FileDeleteCommentType { + pub fn new(description: String) -> Self { + FileDeleteCommentType { + description, + } + } +} + +const FILE_DELETE_COMMENT_TYPE_FIELDS: &[&str] = &["description"]; +impl FileDeleteCommentType { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_description = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); + } + field_description = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } } - EventTypeArg::EmailIngestPolicyChanged => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "email_ingest_policy_changed")?; - s.end() + } + if optional && nothing { + return Ok(None); + } + let result = FileDeleteCommentType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("description", &self.description)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for FileDeleteCommentType { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = FileDeleteCommentType; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a FileDeleteCommentType struct") } - EventTypeArg::EmmAddException => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "emm_add_exception")?; - s.end() + fn visit_map>(self, map: V) -> Result { + FileDeleteCommentType::internal_deserialize(map) } - EventTypeArg::EmmChangePolicy => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "emm_change_policy")?; - s.end() + } + deserializer.deserialize_struct("FileDeleteCommentType", FILE_DELETE_COMMENT_TYPE_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for FileDeleteCommentType { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("FileDeleteCommentType", 1)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +/// Deleted files and/or folders. +#[derive(Debug, Clone, PartialEq, Eq, Default)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct FileDeleteDetails { +} + +const FILE_DELETE_DETAILS_FIELDS: &[&str] = &[]; +impl FileDeleteDetails { + // no _opt deserializer + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + ) -> Result { + // ignore any fields found; none are presently recognized + crate::eat_json_fields(&mut map)?; + Ok(FileDeleteDetails {}) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for FileDeleteDetails { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = FileDeleteDetails; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a FileDeleteDetails struct") } - EventTypeArg::EmmRemoveException => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "emm_remove_exception")?; - s.end() + fn visit_map>(self, map: V) -> Result { + FileDeleteDetails::internal_deserialize(map) } - EventTypeArg::ExtendedVersionHistoryChangePolicy => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "extended_version_history_change_policy")?; - s.end() + } + deserializer.deserialize_struct("FileDeleteDetails", FILE_DELETE_DETAILS_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for FileDeleteDetails { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + serializer.serialize_struct("FileDeleteDetails", 0)?.end() + } +} + +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct FileDeleteType { + pub description: String, +} + +impl FileDeleteType { + pub fn new(description: String) -> Self { + FileDeleteType { + description, + } + } +} + +const FILE_DELETE_TYPE_FIELDS: &[&str] = &["description"]; +impl FileDeleteType { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_description = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); + } + field_description = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } } - EventTypeArg::ExternalDriveBackupPolicyChanged => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "external_drive_backup_policy_changed")?; - s.end() + } + if optional && nothing { + return Ok(None); + } + let result = FileDeleteType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("description", &self.description)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for FileDeleteType { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = FileDeleteType; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a FileDeleteType struct") } - EventTypeArg::FileCommentsChangePolicy => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "file_comments_change_policy")?; - s.end() + fn visit_map>(self, map: V) -> Result { + FileDeleteType::internal_deserialize(map) } - EventTypeArg::FileLockingPolicyChanged => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "file_locking_policy_changed")?; - s.end() + } + deserializer.deserialize_struct("FileDeleteType", FILE_DELETE_TYPE_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for FileDeleteType { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("FileDeleteType", 1)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +/// Downloaded files and/or folders. +#[derive(Debug, Clone, PartialEq, Eq, Default)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct FileDownloadDetails { +} + +const FILE_DOWNLOAD_DETAILS_FIELDS: &[&str] = &[]; +impl FileDownloadDetails { + // no _opt deserializer + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + ) -> Result { + // ignore any fields found; none are presently recognized + crate::eat_json_fields(&mut map)?; + Ok(FileDownloadDetails {}) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for FileDownloadDetails { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = FileDownloadDetails; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a FileDownloadDetails struct") } - EventTypeArg::FileProviderMigrationPolicyChanged => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "file_provider_migration_policy_changed")?; - s.end() + fn visit_map>(self, map: V) -> Result { + FileDownloadDetails::internal_deserialize(map) } - EventTypeArg::FileRequestsChangePolicy => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "file_requests_change_policy")?; - s.end() + } + deserializer.deserialize_struct("FileDownloadDetails", FILE_DOWNLOAD_DETAILS_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for FileDownloadDetails { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + serializer.serialize_struct("FileDownloadDetails", 0)?.end() + } +} + +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct FileDownloadType { + pub description: String, +} + +impl FileDownloadType { + pub fn new(description: String) -> Self { + FileDownloadType { + description, + } + } +} + +const FILE_DOWNLOAD_TYPE_FIELDS: &[&str] = &["description"]; +impl FileDownloadType { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_description = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); + } + field_description = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } } - EventTypeArg::FileRequestsEmailsEnabled => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "file_requests_emails_enabled")?; - s.end() + } + if optional && nothing { + return Ok(None); + } + let result = FileDownloadType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("description", &self.description)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for FileDownloadType { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = FileDownloadType; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a FileDownloadType struct") } - EventTypeArg::FileRequestsEmailsRestrictedToTeamOnly => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "file_requests_emails_restricted_to_team_only")?; - s.end() + fn visit_map>(self, map: V) -> Result { + FileDownloadType::internal_deserialize(map) } - EventTypeArg::FileTransfersPolicyChanged => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "file_transfers_policy_changed")?; - s.end() + } + deserializer.deserialize_struct("FileDownloadType", FILE_DOWNLOAD_TYPE_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for FileDownloadType { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("FileDownloadType", 1)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +/// Edited file comment. +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct FileEditCommentDetails { + /// Previous comment text. + pub previous_comment_text: String, + /// Comment text. + pub comment_text: Option, +} + +impl FileEditCommentDetails { + pub fn new(previous_comment_text: String) -> Self { + FileEditCommentDetails { + previous_comment_text, + comment_text: None, + } + } + + pub fn with_comment_text(mut self, value: String) -> Self { + self.comment_text = Some(value); + self + } +} + +const FILE_EDIT_COMMENT_DETAILS_FIELDS: &[&str] = &["previous_comment_text", + "comment_text"]; +impl FileEditCommentDetails { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_previous_comment_text = None; + let mut field_comment_text = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "previous_comment_text" => { + if field_previous_comment_text.is_some() { + return Err(::serde::de::Error::duplicate_field("previous_comment_text")); + } + field_previous_comment_text = Some(map.next_value()?); + } + "comment_text" => { + if field_comment_text.is_some() { + return Err(::serde::de::Error::duplicate_field("comment_text")); + } + field_comment_text = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } } - EventTypeArg::FolderLinkRestrictionPolicyChanged => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "folder_link_restriction_policy_changed")?; - s.end() + } + if optional && nothing { + return Ok(None); + } + let result = FileEditCommentDetails { + previous_comment_text: field_previous_comment_text.ok_or_else(|| ::serde::de::Error::missing_field("previous_comment_text"))?, + comment_text: field_comment_text.and_then(Option::flatten), + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("previous_comment_text", &self.previous_comment_text)?; + if let Some(val) = &self.comment_text { + s.serialize_field("comment_text", val)?; + } + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for FileEditCommentDetails { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = FileEditCommentDetails; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a FileEditCommentDetails struct") } - EventTypeArg::GoogleSsoChangePolicy => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "google_sso_change_policy")?; - s.end() + fn visit_map>(self, map: V) -> Result { + FileEditCommentDetails::internal_deserialize(map) } - EventTypeArg::GroupUserManagementChangePolicy => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "group_user_management_change_policy")?; - s.end() + } + deserializer.deserialize_struct("FileEditCommentDetails", FILE_EDIT_COMMENT_DETAILS_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for FileEditCommentDetails { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("FileEditCommentDetails", 2)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct FileEditCommentType { + pub description: String, +} + +impl FileEditCommentType { + pub fn new(description: String) -> Self { + FileEditCommentType { + description, + } + } +} + +const FILE_EDIT_COMMENT_TYPE_FIELDS: &[&str] = &["description"]; +impl FileEditCommentType { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_description = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); + } + field_description = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } } - EventTypeArg::IntegrationPolicyChanged => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "integration_policy_changed")?; - s.end() + } + if optional && nothing { + return Ok(None); + } + let result = FileEditCommentType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("description", &self.description)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for FileEditCommentType { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = FileEditCommentType; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a FileEditCommentType struct") } - EventTypeArg::InviteAcceptanceEmailPolicyChanged => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "invite_acceptance_email_policy_changed")?; - s.end() + fn visit_map>(self, map: V) -> Result { + FileEditCommentType::internal_deserialize(map) } - EventTypeArg::MemberRequestsChangePolicy => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "member_requests_change_policy")?; - s.end() + } + deserializer.deserialize_struct("FileEditCommentType", FILE_EDIT_COMMENT_TYPE_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for FileEditCommentType { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("FileEditCommentType", 1)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +/// Edited files. +#[derive(Debug, Clone, PartialEq, Eq, Default)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct FileEditDetails { +} + +const FILE_EDIT_DETAILS_FIELDS: &[&str] = &[]; +impl FileEditDetails { + // no _opt deserializer + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + ) -> Result { + // ignore any fields found; none are presently recognized + crate::eat_json_fields(&mut map)?; + Ok(FileEditDetails {}) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for FileEditDetails { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = FileEditDetails; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a FileEditDetails struct") } - EventTypeArg::MemberSendInvitePolicyChanged => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "member_send_invite_policy_changed")?; - s.end() + fn visit_map>(self, map: V) -> Result { + FileEditDetails::internal_deserialize(map) } - EventTypeArg::MemberSpaceLimitsAddException => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "member_space_limits_add_exception")?; - s.end() + } + deserializer.deserialize_struct("FileEditDetails", FILE_EDIT_DETAILS_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for FileEditDetails { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + serializer.serialize_struct("FileEditDetails", 0)?.end() + } +} + +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct FileEditType { + pub description: String, +} + +impl FileEditType { + pub fn new(description: String) -> Self { + FileEditType { + description, + } + } +} + +const FILE_EDIT_TYPE_FIELDS: &[&str] = &["description"]; +impl FileEditType { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_description = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); + } + field_description = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } } - EventTypeArg::MemberSpaceLimitsChangeCapsTypePolicy => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "member_space_limits_change_caps_type_policy")?; - s.end() + } + if optional && nothing { + return Ok(None); + } + let result = FileEditType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("description", &self.description)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for FileEditType { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = FileEditType; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a FileEditType struct") } - EventTypeArg::MemberSpaceLimitsChangePolicy => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "member_space_limits_change_policy")?; - s.end() + fn visit_map>(self, map: V) -> Result { + FileEditType::internal_deserialize(map) } - EventTypeArg::MemberSpaceLimitsRemoveException => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "member_space_limits_remove_exception")?; - s.end() + } + deserializer.deserialize_struct("FileEditType", FILE_EDIT_TYPE_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for FileEditType { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("FileEditType", 1)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +/// Created copy reference to file/folder. +#[derive(Debug, Clone, PartialEq, Eq, Default)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct FileGetCopyReferenceDetails { +} + +const FILE_GET_COPY_REFERENCE_DETAILS_FIELDS: &[&str] = &[]; +impl FileGetCopyReferenceDetails { + // no _opt deserializer + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + ) -> Result { + // ignore any fields found; none are presently recognized + crate::eat_json_fields(&mut map)?; + Ok(FileGetCopyReferenceDetails {}) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for FileGetCopyReferenceDetails { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = FileGetCopyReferenceDetails; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a FileGetCopyReferenceDetails struct") } - EventTypeArg::MemberSuggestionsChangePolicy => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "member_suggestions_change_policy")?; - s.end() + fn visit_map>(self, map: V) -> Result { + FileGetCopyReferenceDetails::internal_deserialize(map) } - EventTypeArg::MicrosoftOfficeAddinChangePolicy => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "microsoft_office_addin_change_policy")?; - s.end() + } + deserializer.deserialize_struct("FileGetCopyReferenceDetails", FILE_GET_COPY_REFERENCE_DETAILS_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for FileGetCopyReferenceDetails { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + serializer.serialize_struct("FileGetCopyReferenceDetails", 0)?.end() + } +} + +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct FileGetCopyReferenceType { + pub description: String, +} + +impl FileGetCopyReferenceType { + pub fn new(description: String) -> Self { + FileGetCopyReferenceType { + description, + } + } +} + +const FILE_GET_COPY_REFERENCE_TYPE_FIELDS: &[&str] = &["description"]; +impl FileGetCopyReferenceType { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_description = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); + } + field_description = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } } - EventTypeArg::NetworkControlChangePolicy => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "network_control_change_policy")?; - s.end() + } + if optional && nothing { + return Ok(None); + } + let result = FileGetCopyReferenceType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("description", &self.description)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for FileGetCopyReferenceType { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = FileGetCopyReferenceType; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a FileGetCopyReferenceType struct") } - EventTypeArg::PaperChangeDeploymentPolicy => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "paper_change_deployment_policy")?; - s.end() + fn visit_map>(self, map: V) -> Result { + FileGetCopyReferenceType::internal_deserialize(map) } - EventTypeArg::PaperChangeMemberLinkPolicy => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "paper_change_member_link_policy")?; - s.end() + } + deserializer.deserialize_struct("FileGetCopyReferenceType", FILE_GET_COPY_REFERENCE_TYPE_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for FileGetCopyReferenceType { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("FileGetCopyReferenceType", 1)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +/// Liked file comment. +#[derive(Debug, Clone, PartialEq, Eq, Default)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct FileLikeCommentDetails { + /// Comment text. + pub comment_text: Option, +} + +impl FileLikeCommentDetails { + pub fn with_comment_text(mut self, value: String) -> Self { + self.comment_text = Some(value); + self + } +} + +const FILE_LIKE_COMMENT_DETAILS_FIELDS: &[&str] = &["comment_text"]; +impl FileLikeCommentDetails { + // no _opt deserializer + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + ) -> Result { + let mut field_comment_text = None; + while let Some(key) = map.next_key::<&str>()? { + match key { + "comment_text" => { + if field_comment_text.is_some() { + return Err(::serde::de::Error::duplicate_field("comment_text")); + } + field_comment_text = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } } - EventTypeArg::PaperChangeMemberPolicy => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "paper_change_member_policy")?; - s.end() + } + let result = FileLikeCommentDetails { + comment_text: field_comment_text.and_then(Option::flatten), + }; + Ok(result) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + if let Some(val) = &self.comment_text { + s.serialize_field("comment_text", val)?; + } + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for FileLikeCommentDetails { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = FileLikeCommentDetails; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a FileLikeCommentDetails struct") } - EventTypeArg::PaperChangePolicy => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "paper_change_policy")?; - s.end() + fn visit_map>(self, map: V) -> Result { + FileLikeCommentDetails::internal_deserialize(map) } - EventTypeArg::PaperDefaultFolderPolicyChanged => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "paper_default_folder_policy_changed")?; - s.end() + } + deserializer.deserialize_struct("FileLikeCommentDetails", FILE_LIKE_COMMENT_DETAILS_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for FileLikeCommentDetails { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("FileLikeCommentDetails", 1)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct FileLikeCommentType { + pub description: String, +} + +impl FileLikeCommentType { + pub fn new(description: String) -> Self { + FileLikeCommentType { + description, + } + } +} + +const FILE_LIKE_COMMENT_TYPE_FIELDS: &[&str] = &["description"]; +impl FileLikeCommentType { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_description = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); + } + field_description = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } } - EventTypeArg::PaperDesktopPolicyChanged => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "paper_desktop_policy_changed")?; - s.end() + } + if optional && nothing { + return Ok(None); + } + let result = FileLikeCommentType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("description", &self.description)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for FileLikeCommentType { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = FileLikeCommentType; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a FileLikeCommentType struct") } - EventTypeArg::PaperEnabledUsersGroupAddition => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "paper_enabled_users_group_addition")?; - s.end() + fn visit_map>(self, map: V) -> Result { + FileLikeCommentType::internal_deserialize(map) } - EventTypeArg::PaperEnabledUsersGroupRemoval => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "paper_enabled_users_group_removal")?; - s.end() + } + deserializer.deserialize_struct("FileLikeCommentType", FILE_LIKE_COMMENT_TYPE_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for FileLikeCommentType { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("FileLikeCommentType", 1)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +/// Locked/unlocked editing for a file. +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct FileLockingLockStatusChangedDetails { + /// Previous lock status of the file. + pub previous_value: LockStatus, + /// New lock status of the file. + pub new_value: LockStatus, +} + +impl FileLockingLockStatusChangedDetails { + pub fn new(previous_value: LockStatus, new_value: LockStatus) -> Self { + FileLockingLockStatusChangedDetails { + previous_value, + new_value, + } + } +} + +const FILE_LOCKING_LOCK_STATUS_CHANGED_DETAILS_FIELDS: &[&str] = &["previous_value", + "new_value"]; +impl FileLockingLockStatusChangedDetails { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_previous_value = None; + let mut field_new_value = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "previous_value" => { + if field_previous_value.is_some() { + return Err(::serde::de::Error::duplicate_field("previous_value")); + } + field_previous_value = Some(map.next_value()?); + } + "new_value" => { + if field_new_value.is_some() { + return Err(::serde::de::Error::duplicate_field("new_value")); + } + field_new_value = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } } - EventTypeArg::PasswordStrengthRequirementsChangePolicy => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "password_strength_requirements_change_policy")?; - s.end() + } + if optional && nothing { + return Ok(None); + } + let result = FileLockingLockStatusChangedDetails { + previous_value: field_previous_value.ok_or_else(|| ::serde::de::Error::missing_field("previous_value"))?, + new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("previous_value", &self.previous_value)?; + s.serialize_field("new_value", &self.new_value)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for FileLockingLockStatusChangedDetails { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = FileLockingLockStatusChangedDetails; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a FileLockingLockStatusChangedDetails struct") } - EventTypeArg::PermanentDeleteChangePolicy => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "permanent_delete_change_policy")?; - s.end() + fn visit_map>(self, map: V) -> Result { + FileLockingLockStatusChangedDetails::internal_deserialize(map) } - EventTypeArg::ResellerSupportChangePolicy => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "reseller_support_change_policy")?; - s.end() + } + deserializer.deserialize_struct("FileLockingLockStatusChangedDetails", FILE_LOCKING_LOCK_STATUS_CHANGED_DETAILS_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for FileLockingLockStatusChangedDetails { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("FileLockingLockStatusChangedDetails", 2)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct FileLockingLockStatusChangedType { + pub description: String, +} + +impl FileLockingLockStatusChangedType { + pub fn new(description: String) -> Self { + FileLockingLockStatusChangedType { + description, + } + } +} + +const FILE_LOCKING_LOCK_STATUS_CHANGED_TYPE_FIELDS: &[&str] = &["description"]; +impl FileLockingLockStatusChangedType { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_description = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); + } + field_description = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } } - EventTypeArg::RewindPolicyChanged => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "rewind_policy_changed")?; - s.end() + } + if optional && nothing { + return Ok(None); + } + let result = FileLockingLockStatusChangedType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("description", &self.description)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for FileLockingLockStatusChangedType { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = FileLockingLockStatusChangedType; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a FileLockingLockStatusChangedType struct") } - EventTypeArg::SendForSignaturePolicyChanged => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "send_for_signature_policy_changed")?; - s.end() + fn visit_map>(self, map: V) -> Result { + FileLockingLockStatusChangedType::internal_deserialize(map) } - EventTypeArg::SharingChangeFolderJoinPolicy => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "sharing_change_folder_join_policy")?; - s.end() + } + deserializer.deserialize_struct("FileLockingLockStatusChangedType", FILE_LOCKING_LOCK_STATUS_CHANGED_TYPE_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for FileLockingLockStatusChangedType { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("FileLockingLockStatusChangedType", 1)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +/// Changed file locking policy for team. +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct FileLockingPolicyChangedDetails { + /// New file locking policy. + pub new_value: crate::types::team_policies::FileLockingPolicyState, + /// Previous file locking policy. + pub previous_value: crate::types::team_policies::FileLockingPolicyState, +} + +impl FileLockingPolicyChangedDetails { + pub fn new( + new_value: crate::types::team_policies::FileLockingPolicyState, + previous_value: crate::types::team_policies::FileLockingPolicyState, + ) -> Self { + FileLockingPolicyChangedDetails { + new_value, + previous_value, + } + } +} + +const FILE_LOCKING_POLICY_CHANGED_DETAILS_FIELDS: &[&str] = &["new_value", + "previous_value"]; +impl FileLockingPolicyChangedDetails { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_new_value = None; + let mut field_previous_value = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "new_value" => { + if field_new_value.is_some() { + return Err(::serde::de::Error::duplicate_field("new_value")); + } + field_new_value = Some(map.next_value()?); + } + "previous_value" => { + if field_previous_value.is_some() { + return Err(::serde::de::Error::duplicate_field("previous_value")); + } + field_previous_value = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } } - EventTypeArg::SharingChangeLinkAllowChangeExpirationPolicy => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "sharing_change_link_allow_change_expiration_policy")?; - s.end() + } + if optional && nothing { + return Ok(None); + } + let result = FileLockingPolicyChangedDetails { + new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, + previous_value: field_previous_value.ok_or_else(|| ::serde::de::Error::missing_field("previous_value"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("new_value", &self.new_value)?; + s.serialize_field("previous_value", &self.previous_value)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for FileLockingPolicyChangedDetails { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = FileLockingPolicyChangedDetails; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a FileLockingPolicyChangedDetails struct") } - EventTypeArg::SharingChangeLinkDefaultExpirationPolicy => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "sharing_change_link_default_expiration_policy")?; - s.end() + fn visit_map>(self, map: V) -> Result { + FileLockingPolicyChangedDetails::internal_deserialize(map) } - EventTypeArg::SharingChangeLinkEnforcePasswordPolicy => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "sharing_change_link_enforce_password_policy")?; - s.end() + } + deserializer.deserialize_struct("FileLockingPolicyChangedDetails", FILE_LOCKING_POLICY_CHANGED_DETAILS_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for FileLockingPolicyChangedDetails { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("FileLockingPolicyChangedDetails", 2)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct FileLockingPolicyChangedType { + pub description: String, +} + +impl FileLockingPolicyChangedType { + pub fn new(description: String) -> Self { + FileLockingPolicyChangedType { + description, + } + } +} + +const FILE_LOCKING_POLICY_CHANGED_TYPE_FIELDS: &[&str] = &["description"]; +impl FileLockingPolicyChangedType { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_description = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); + } + field_description = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } } - EventTypeArg::SharingChangeLinkPolicy => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "sharing_change_link_policy")?; - s.end() + } + if optional && nothing { + return Ok(None); + } + let result = FileLockingPolicyChangedType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("description", &self.description)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for FileLockingPolicyChangedType { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = FileLockingPolicyChangedType; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a FileLockingPolicyChangedType struct") } - EventTypeArg::SharingChangeMemberPolicy => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "sharing_change_member_policy")?; - s.end() + fn visit_map>(self, map: V) -> Result { + FileLockingPolicyChangedType::internal_deserialize(map) + } + } + deserializer.deserialize_struct("FileLockingPolicyChangedType", FILE_LOCKING_POLICY_CHANGED_TYPE_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for FileLockingPolicyChangedType { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("FileLockingPolicyChangedType", 1)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +/// File's logged information. +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct FileLogInfo { + /// Path relative to event context. + pub path: PathLogInfo, + /// Display name. + pub display_name: Option, + /// Unique ID. + pub file_id: Option, + /// File or folder size in bytes. + pub file_size: Option, +} + +impl FileLogInfo { + pub fn new(path: PathLogInfo) -> Self { + FileLogInfo { + path, + display_name: None, + file_id: None, + file_size: None, + } + } + + pub fn with_display_name(mut self, value: String) -> Self { + self.display_name = Some(value); + self + } + + pub fn with_file_id(mut self, value: String) -> Self { + self.file_id = Some(value); + self + } + + pub fn with_file_size(mut self, value: u64) -> Self { + self.file_size = Some(value); + self + } +} + +const FILE_LOG_INFO_FIELDS: &[&str] = &["path", + "display_name", + "file_id", + "file_size"]; +impl FileLogInfo { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_path = None; + let mut field_display_name = None; + let mut field_file_id = None; + let mut field_file_size = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "path" => { + if field_path.is_some() { + return Err(::serde::de::Error::duplicate_field("path")); + } + field_path = Some(map.next_value()?); + } + "display_name" => { + if field_display_name.is_some() { + return Err(::serde::de::Error::duplicate_field("display_name")); + } + field_display_name = Some(map.next_value()?); + } + "file_id" => { + if field_file_id.is_some() { + return Err(::serde::de::Error::duplicate_field("file_id")); + } + field_file_id = Some(map.next_value()?); + } + "file_size" => { + if field_file_size.is_some() { + return Err(::serde::de::Error::duplicate_field("file_size")); + } + field_file_size = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } } - EventTypeArg::ShowcaseChangeDownloadPolicy => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "showcase_change_download_policy")?; - s.end() + } + if optional && nothing { + return Ok(None); + } + let result = FileLogInfo { + path: field_path.ok_or_else(|| ::serde::de::Error::missing_field("path"))?, + display_name: field_display_name.and_then(Option::flatten), + file_id: field_file_id.and_then(Option::flatten), + file_size: field_file_size.and_then(Option::flatten), + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("path", &self.path)?; + if let Some(val) = &self.display_name { + s.serialize_field("display_name", val)?; + } + if let Some(val) = &self.file_id { + s.serialize_field("file_id", val)?; + } + if let Some(val) = &self.file_size { + s.serialize_field("file_size", val)?; + } + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for FileLogInfo { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = FileLogInfo; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a FileLogInfo struct") } - EventTypeArg::ShowcaseChangeEnabledPolicy => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "showcase_change_enabled_policy")?; - s.end() + fn visit_map>(self, map: V) -> Result { + FileLogInfo::internal_deserialize(map) } - EventTypeArg::ShowcaseChangeExternalSharingPolicy => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "showcase_change_external_sharing_policy")?; - s.end() + } + deserializer.deserialize_struct("FileLogInfo", FILE_LOG_INFO_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for FileLogInfo { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("FileLogInfo", 4)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +// struct extends FileOrFolderLogInfo +impl From for FileOrFolderLogInfo { + fn from(subtype: FileLogInfo) -> Self { + Self { + path: subtype.path, + display_name: subtype.display_name, + file_id: subtype.file_id, + file_size: subtype.file_size, + } + } +} +/// Moved files and/or folders. +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct FileMoveDetails { + /// Relocate action details. + pub relocate_action_details: Vec, +} + +impl FileMoveDetails { + pub fn new(relocate_action_details: Vec) -> Self { + FileMoveDetails { + relocate_action_details, + } + } +} + +const FILE_MOVE_DETAILS_FIELDS: &[&str] = &["relocate_action_details"]; +impl FileMoveDetails { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_relocate_action_details = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "relocate_action_details" => { + if field_relocate_action_details.is_some() { + return Err(::serde::de::Error::duplicate_field("relocate_action_details")); + } + field_relocate_action_details = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } } - EventTypeArg::SmarterSmartSyncPolicyChanged => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "smarter_smart_sync_policy_changed")?; - s.end() + } + if optional && nothing { + return Ok(None); + } + let result = FileMoveDetails { + relocate_action_details: field_relocate_action_details.ok_or_else(|| ::serde::de::Error::missing_field("relocate_action_details"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("relocate_action_details", &self.relocate_action_details)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for FileMoveDetails { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = FileMoveDetails; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a FileMoveDetails struct") } - EventTypeArg::SmartSyncChangePolicy => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "smart_sync_change_policy")?; - s.end() + fn visit_map>(self, map: V) -> Result { + FileMoveDetails::internal_deserialize(map) } - EventTypeArg::SmartSyncNotOptOut => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "smart_sync_not_opt_out")?; - s.end() + } + deserializer.deserialize_struct("FileMoveDetails", FILE_MOVE_DETAILS_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for FileMoveDetails { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("FileMoveDetails", 1)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct FileMoveType { + pub description: String, +} + +impl FileMoveType { + pub fn new(description: String) -> Self { + FileMoveType { + description, + } + } +} + +const FILE_MOVE_TYPE_FIELDS: &[&str] = &["description"]; +impl FileMoveType { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_description = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); + } + field_description = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } } - EventTypeArg::SmartSyncOptOut => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "smart_sync_opt_out")?; - s.end() + } + if optional && nothing { + return Ok(None); + } + let result = FileMoveType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("description", &self.description)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for FileMoveType { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = FileMoveType; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a FileMoveType struct") } - EventTypeArg::SsoChangePolicy => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "sso_change_policy")?; - s.end() + fn visit_map>(self, map: V) -> Result { + FileMoveType::internal_deserialize(map) } - EventTypeArg::TeamBrandingPolicyChanged => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "team_branding_policy_changed")?; - s.end() + } + deserializer.deserialize_struct("FileMoveType", FILE_MOVE_TYPE_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for FileMoveType { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("FileMoveType", 1)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +/// Generic information relevant both for files and folders +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct FileOrFolderLogInfo { + /// Path relative to event context. + pub path: PathLogInfo, + /// Display name. + pub display_name: Option, + /// Unique ID. + pub file_id: Option, + /// File or folder size in bytes. + pub file_size: Option, +} + +impl FileOrFolderLogInfo { + pub fn new(path: PathLogInfo) -> Self { + FileOrFolderLogInfo { + path, + display_name: None, + file_id: None, + file_size: None, + } + } + + pub fn with_display_name(mut self, value: String) -> Self { + self.display_name = Some(value); + self + } + + pub fn with_file_id(mut self, value: String) -> Self { + self.file_id = Some(value); + self + } + + pub fn with_file_size(mut self, value: u64) -> Self { + self.file_size = Some(value); + self + } +} + +const FILE_OR_FOLDER_LOG_INFO_FIELDS: &[&str] = &["path", + "display_name", + "file_id", + "file_size"]; +impl FileOrFolderLogInfo { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_path = None; + let mut field_display_name = None; + let mut field_file_id = None; + let mut field_file_size = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "path" => { + if field_path.is_some() { + return Err(::serde::de::Error::duplicate_field("path")); + } + field_path = Some(map.next_value()?); + } + "display_name" => { + if field_display_name.is_some() { + return Err(::serde::de::Error::duplicate_field("display_name")); + } + field_display_name = Some(map.next_value()?); + } + "file_id" => { + if field_file_id.is_some() { + return Err(::serde::de::Error::duplicate_field("file_id")); + } + field_file_id = Some(map.next_value()?); + } + "file_size" => { + if field_file_size.is_some() { + return Err(::serde::de::Error::duplicate_field("file_size")); + } + field_file_size = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } } - EventTypeArg::TeamExtensionsPolicyChanged => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "team_extensions_policy_changed")?; - s.end() + } + if optional && nothing { + return Ok(None); + } + let result = FileOrFolderLogInfo { + path: field_path.ok_or_else(|| ::serde::de::Error::missing_field("path"))?, + display_name: field_display_name.and_then(Option::flatten), + file_id: field_file_id.and_then(Option::flatten), + file_size: field_file_size.and_then(Option::flatten), + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("path", &self.path)?; + if let Some(val) = &self.display_name { + s.serialize_field("display_name", val)?; + } + if let Some(val) = &self.file_id { + s.serialize_field("file_id", val)?; + } + if let Some(val) = &self.file_size { + s.serialize_field("file_size", val)?; + } + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for FileOrFolderLogInfo { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = FileOrFolderLogInfo; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a FileOrFolderLogInfo struct") } - EventTypeArg::TeamSelectiveSyncPolicyChanged => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "team_selective_sync_policy_changed")?; - s.end() + fn visit_map>(self, map: V) -> Result { + FileOrFolderLogInfo::internal_deserialize(map) } - EventTypeArg::TeamSharingWhitelistSubjectsChanged => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "team_sharing_whitelist_subjects_changed")?; - s.end() + } + deserializer.deserialize_struct("FileOrFolderLogInfo", FILE_OR_FOLDER_LOG_INFO_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for FileOrFolderLogInfo { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("FileOrFolderLogInfo", 4)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +/// Permanently deleted files and/or folders. +#[derive(Debug, Clone, PartialEq, Eq, Default)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct FilePermanentlyDeleteDetails { +} + +const FILE_PERMANENTLY_DELETE_DETAILS_FIELDS: &[&str] = &[]; +impl FilePermanentlyDeleteDetails { + // no _opt deserializer + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + ) -> Result { + // ignore any fields found; none are presently recognized + crate::eat_json_fields(&mut map)?; + Ok(FilePermanentlyDeleteDetails {}) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for FilePermanentlyDeleteDetails { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = FilePermanentlyDeleteDetails; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a FilePermanentlyDeleteDetails struct") } - EventTypeArg::TfaAddException => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "tfa_add_exception")?; - s.end() + fn visit_map>(self, map: V) -> Result { + FilePermanentlyDeleteDetails::internal_deserialize(map) } - EventTypeArg::TfaChangePolicy => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "tfa_change_policy")?; - s.end() + } + deserializer.deserialize_struct("FilePermanentlyDeleteDetails", FILE_PERMANENTLY_DELETE_DETAILS_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for FilePermanentlyDeleteDetails { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + serializer.serialize_struct("FilePermanentlyDeleteDetails", 0)?.end() + } +} + +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct FilePermanentlyDeleteType { + pub description: String, +} + +impl FilePermanentlyDeleteType { + pub fn new(description: String) -> Self { + FilePermanentlyDeleteType { + description, + } + } +} + +const FILE_PERMANENTLY_DELETE_TYPE_FIELDS: &[&str] = &["description"]; +impl FilePermanentlyDeleteType { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_description = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); + } + field_description = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } } - EventTypeArg::TfaRemoveException => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "tfa_remove_exception")?; - s.end() + } + if optional && nothing { + return Ok(None); + } + let result = FilePermanentlyDeleteType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("description", &self.description)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for FilePermanentlyDeleteType { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = FilePermanentlyDeleteType; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a FilePermanentlyDeleteType struct") } - EventTypeArg::TwoAccountChangePolicy => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "two_account_change_policy")?; - s.end() + fn visit_map>(self, map: V) -> Result { + FilePermanentlyDeleteType::internal_deserialize(map) } - EventTypeArg::ViewerInfoPolicyChanged => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "viewer_info_policy_changed")?; - s.end() + } + deserializer.deserialize_struct("FilePermanentlyDeleteType", FILE_PERMANENTLY_DELETE_TYPE_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for FilePermanentlyDeleteType { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("FilePermanentlyDeleteType", 1)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +/// Previewed files and/or folders. +#[derive(Debug, Clone, PartialEq, Eq, Default)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct FilePreviewDetails { +} + +const FILE_PREVIEW_DETAILS_FIELDS: &[&str] = &[]; +impl FilePreviewDetails { + // no _opt deserializer + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + ) -> Result { + // ignore any fields found; none are presently recognized + crate::eat_json_fields(&mut map)?; + Ok(FilePreviewDetails {}) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for FilePreviewDetails { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = FilePreviewDetails; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a FilePreviewDetails struct") } - EventTypeArg::WatermarkingPolicyChanged => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "watermarking_policy_changed")?; - s.end() + fn visit_map>(self, map: V) -> Result { + FilePreviewDetails::internal_deserialize(map) } - EventTypeArg::WebSessionsChangeActiveSessionLimit => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "web_sessions_change_active_session_limit")?; - s.end() + } + deserializer.deserialize_struct("FilePreviewDetails", FILE_PREVIEW_DETAILS_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for FilePreviewDetails { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + serializer.serialize_struct("FilePreviewDetails", 0)?.end() + } +} + +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct FilePreviewType { + pub description: String, +} + +impl FilePreviewType { + pub fn new(description: String) -> Self { + FilePreviewType { + description, + } + } +} + +const FILE_PREVIEW_TYPE_FIELDS: &[&str] = &["description"]; +impl FilePreviewType { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_description = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); + } + field_description = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } } - EventTypeArg::WebSessionsChangeFixedLengthPolicy => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "web_sessions_change_fixed_length_policy")?; - s.end() + } + if optional && nothing { + return Ok(None); + } + let result = FilePreviewType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("description", &self.description)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for FilePreviewType { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = FilePreviewType; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a FilePreviewType struct") } - EventTypeArg::WebSessionsChangeIdleLengthPolicy => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "web_sessions_change_idle_length_policy")?; - s.end() + fn visit_map>(self, map: V) -> Result { + FilePreviewType::internal_deserialize(map) } - EventTypeArg::DataResidencyMigrationRequestSuccessful => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "data_residency_migration_request_successful")?; - s.end() + } + deserializer.deserialize_struct("FilePreviewType", FILE_PREVIEW_TYPE_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for FilePreviewType { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("FilePreviewType", 1)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +/// Changed File Provider Migration policy for team. +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct FileProviderMigrationPolicyChangedDetails { + /// To. + pub new_value: crate::types::team_policies::FileProviderMigrationPolicyState, + /// From. + pub previous_value: crate::types::team_policies::FileProviderMigrationPolicyState, +} + +impl FileProviderMigrationPolicyChangedDetails { + pub fn new( + new_value: crate::types::team_policies::FileProviderMigrationPolicyState, + previous_value: crate::types::team_policies::FileProviderMigrationPolicyState, + ) -> Self { + FileProviderMigrationPolicyChangedDetails { + new_value, + previous_value, + } + } +} + +const FILE_PROVIDER_MIGRATION_POLICY_CHANGED_DETAILS_FIELDS: &[&str] = &["new_value", + "previous_value"]; +impl FileProviderMigrationPolicyChangedDetails { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_new_value = None; + let mut field_previous_value = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "new_value" => { + if field_new_value.is_some() { + return Err(::serde::de::Error::duplicate_field("new_value")); + } + field_new_value = Some(map.next_value()?); + } + "previous_value" => { + if field_previous_value.is_some() { + return Err(::serde::de::Error::duplicate_field("previous_value")); + } + field_previous_value = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } } - EventTypeArg::DataResidencyMigrationRequestUnsuccessful => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "data_residency_migration_request_unsuccessful")?; - s.end() + } + if optional && nothing { + return Ok(None); + } + let result = FileProviderMigrationPolicyChangedDetails { + new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, + previous_value: field_previous_value.ok_or_else(|| ::serde::de::Error::missing_field("previous_value"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("new_value", &self.new_value)?; + s.serialize_field("previous_value", &self.previous_value)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for FileProviderMigrationPolicyChangedDetails { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = FileProviderMigrationPolicyChangedDetails; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a FileProviderMigrationPolicyChangedDetails struct") } - EventTypeArg::TeamMergeFrom => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "team_merge_from")?; - s.end() + fn visit_map>(self, map: V) -> Result { + FileProviderMigrationPolicyChangedDetails::internal_deserialize(map) } - EventTypeArg::TeamMergeTo => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "team_merge_to")?; - s.end() + } + deserializer.deserialize_struct("FileProviderMigrationPolicyChangedDetails", FILE_PROVIDER_MIGRATION_POLICY_CHANGED_DETAILS_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for FileProviderMigrationPolicyChangedDetails { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("FileProviderMigrationPolicyChangedDetails", 2)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct FileProviderMigrationPolicyChangedType { + pub description: String, +} + +impl FileProviderMigrationPolicyChangedType { + pub fn new(description: String) -> Self { + FileProviderMigrationPolicyChangedType { + description, + } + } +} + +const FILE_PROVIDER_MIGRATION_POLICY_CHANGED_TYPE_FIELDS: &[&str] = &["description"]; +impl FileProviderMigrationPolicyChangedType { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_description = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); + } + field_description = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } + } + } + if optional && nothing { + return Ok(None); + } + let result = FileProviderMigrationPolicyChangedType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("description", &self.description)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for FileProviderMigrationPolicyChangedType { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = FileProviderMigrationPolicyChangedType; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a FileProviderMigrationPolicyChangedType struct") } - EventTypeArg::TeamProfileAddBackground => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "team_profile_add_background")?; - s.end() + fn visit_map>(self, map: V) -> Result { + FileProviderMigrationPolicyChangedType::internal_deserialize(map) } - EventTypeArg::TeamProfileAddLogo => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "team_profile_add_logo")?; - s.end() + } + deserializer.deserialize_struct("FileProviderMigrationPolicyChangedType", FILE_PROVIDER_MIGRATION_POLICY_CHANGED_TYPE_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for FileProviderMigrationPolicyChangedType { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("FileProviderMigrationPolicyChangedType", 1)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +/// Renamed files and/or folders. +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct FileRenameDetails { + /// Relocate action details. + pub relocate_action_details: Vec, +} + +impl FileRenameDetails { + pub fn new(relocate_action_details: Vec) -> Self { + FileRenameDetails { + relocate_action_details, + } + } +} + +const FILE_RENAME_DETAILS_FIELDS: &[&str] = &["relocate_action_details"]; +impl FileRenameDetails { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_relocate_action_details = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "relocate_action_details" => { + if field_relocate_action_details.is_some() { + return Err(::serde::de::Error::duplicate_field("relocate_action_details")); + } + field_relocate_action_details = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } } - EventTypeArg::TeamProfileChangeBackground => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "team_profile_change_background")?; - s.end() + } + if optional && nothing { + return Ok(None); + } + let result = FileRenameDetails { + relocate_action_details: field_relocate_action_details.ok_or_else(|| ::serde::de::Error::missing_field("relocate_action_details"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("relocate_action_details", &self.relocate_action_details)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for FileRenameDetails { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = FileRenameDetails; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a FileRenameDetails struct") } - EventTypeArg::TeamProfileChangeDefaultLanguage => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "team_profile_change_default_language")?; - s.end() + fn visit_map>(self, map: V) -> Result { + FileRenameDetails::internal_deserialize(map) } - EventTypeArg::TeamProfileChangeLogo => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "team_profile_change_logo")?; - s.end() + } + deserializer.deserialize_struct("FileRenameDetails", FILE_RENAME_DETAILS_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for FileRenameDetails { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("FileRenameDetails", 1)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct FileRenameType { + pub description: String, +} + +impl FileRenameType { + pub fn new(description: String) -> Self { + FileRenameType { + description, + } + } +} + +const FILE_RENAME_TYPE_FIELDS: &[&str] = &["description"]; +impl FileRenameType { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_description = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); + } + field_description = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } } - EventTypeArg::TeamProfileChangeName => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "team_profile_change_name")?; - s.end() + } + if optional && nothing { + return Ok(None); + } + let result = FileRenameType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("description", &self.description)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for FileRenameType { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = FileRenameType; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a FileRenameType struct") } - EventTypeArg::TeamProfileRemoveBackground => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "team_profile_remove_background")?; - s.end() + fn visit_map>(self, map: V) -> Result { + FileRenameType::internal_deserialize(map) } - EventTypeArg::TeamProfileRemoveLogo => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "team_profile_remove_logo")?; - s.end() + } + deserializer.deserialize_struct("FileRenameType", FILE_RENAME_TYPE_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for FileRenameType { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("FileRenameType", 1)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +/// Auto closed file request. +#[derive(Debug, Clone, PartialEq, Eq, Default)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct FileRequestAutoCloseDetails { + /// File request id. Might be missing due to historical data gap. + pub file_request_id: Option, + /// Reason for the auto close. + pub reason: Option, + /// Previous file request details. Might be missing due to historical data gap. + pub previous_details: Option, +} + +impl FileRequestAutoCloseDetails { + pub fn with_file_request_id( + mut self, + value: crate::types::file_requests::FileRequestId, + ) -> Self { + self.file_request_id = Some(value); + self + } + + pub fn with_reason(mut self, value: String) -> Self { + self.reason = Some(value); + self + } + + pub fn with_previous_details(mut self, value: FileRequestDetails) -> Self { + self.previous_details = Some(value); + self + } +} + +const FILE_REQUEST_AUTO_CLOSE_DETAILS_FIELDS: &[&str] = &["file_request_id", + "reason", + "previous_details"]; +impl FileRequestAutoCloseDetails { + // no _opt deserializer + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + ) -> Result { + let mut field_file_request_id = None; + let mut field_reason = None; + let mut field_previous_details = None; + while let Some(key) = map.next_key::<&str>()? { + match key { + "file_request_id" => { + if field_file_request_id.is_some() { + return Err(::serde::de::Error::duplicate_field("file_request_id")); + } + field_file_request_id = Some(map.next_value()?); + } + "reason" => { + if field_reason.is_some() { + return Err(::serde::de::Error::duplicate_field("reason")); + } + field_reason = Some(map.next_value()?); + } + "previous_details" => { + if field_previous_details.is_some() { + return Err(::serde::de::Error::duplicate_field("previous_details")); + } + field_previous_details = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } } - EventTypeArg::TfaAddBackupPhone => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "tfa_add_backup_phone")?; - s.end() + } + let result = FileRequestAutoCloseDetails { + file_request_id: field_file_request_id.and_then(Option::flatten), + reason: field_reason.and_then(Option::flatten), + previous_details: field_previous_details.and_then(Option::flatten), + }; + Ok(result) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + if let Some(val) = &self.file_request_id { + s.serialize_field("file_request_id", val)?; + } + if let Some(val) = &self.reason { + s.serialize_field("reason", val)?; + } + if let Some(val) = &self.previous_details { + s.serialize_field("previous_details", val)?; + } + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for FileRequestAutoCloseDetails { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = FileRequestAutoCloseDetails; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a FileRequestAutoCloseDetails struct") } - EventTypeArg::TfaAddSecurityKey => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "tfa_add_security_key")?; - s.end() + fn visit_map>(self, map: V) -> Result { + FileRequestAutoCloseDetails::internal_deserialize(map) } - EventTypeArg::TfaChangeBackupPhone => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "tfa_change_backup_phone")?; - s.end() + } + deserializer.deserialize_struct("FileRequestAutoCloseDetails", FILE_REQUEST_AUTO_CLOSE_DETAILS_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for FileRequestAutoCloseDetails { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("FileRequestAutoCloseDetails", 3)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct FileRequestAutoCloseType { + pub description: String, +} + +impl FileRequestAutoCloseType { + pub fn new(description: String) -> Self { + FileRequestAutoCloseType { + description, + } + } +} + +const FILE_REQUEST_AUTO_CLOSE_TYPE_FIELDS: &[&str] = &["description"]; +impl FileRequestAutoCloseType { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_description = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); + } + field_description = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } } - EventTypeArg::TfaChangeStatus => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "tfa_change_status")?; - s.end() + } + if optional && nothing { + return Ok(None); + } + let result = FileRequestAutoCloseType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("description", &self.description)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for FileRequestAutoCloseType { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = FileRequestAutoCloseType; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a FileRequestAutoCloseType struct") } - EventTypeArg::TfaRemoveBackupPhone => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "tfa_remove_backup_phone")?; - s.end() + fn visit_map>(self, map: V) -> Result { + FileRequestAutoCloseType::internal_deserialize(map) } - EventTypeArg::TfaRemoveSecurityKey => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "tfa_remove_security_key")?; - s.end() + } + deserializer.deserialize_struct("FileRequestAutoCloseType", FILE_REQUEST_AUTO_CLOSE_TYPE_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for FileRequestAutoCloseType { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("FileRequestAutoCloseType", 1)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +/// Changed file request. +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct FileRequestChangeDetails { + /// New file request details. + pub new_details: FileRequestDetails, + /// File request id. Might be missing due to historical data gap. + pub file_request_id: Option, + /// Previous file request details. Might be missing due to historical data gap. + pub previous_details: Option, +} + +impl FileRequestChangeDetails { + pub fn new(new_details: FileRequestDetails) -> Self { + FileRequestChangeDetails { + new_details, + file_request_id: None, + previous_details: None, + } + } + + pub fn with_file_request_id( + mut self, + value: crate::types::file_requests::FileRequestId, + ) -> Self { + self.file_request_id = Some(value); + self + } + + pub fn with_previous_details(mut self, value: FileRequestDetails) -> Self { + self.previous_details = Some(value); + self + } +} + +const FILE_REQUEST_CHANGE_DETAILS_FIELDS: &[&str] = &["new_details", + "file_request_id", + "previous_details"]; +impl FileRequestChangeDetails { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_new_details = None; + let mut field_file_request_id = None; + let mut field_previous_details = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "new_details" => { + if field_new_details.is_some() { + return Err(::serde::de::Error::duplicate_field("new_details")); + } + field_new_details = Some(map.next_value()?); + } + "file_request_id" => { + if field_file_request_id.is_some() { + return Err(::serde::de::Error::duplicate_field("file_request_id")); + } + field_file_request_id = Some(map.next_value()?); + } + "previous_details" => { + if field_previous_details.is_some() { + return Err(::serde::de::Error::duplicate_field("previous_details")); + } + field_previous_details = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } } - EventTypeArg::TfaReset => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "tfa_reset")?; - s.end() + } + if optional && nothing { + return Ok(None); + } + let result = FileRequestChangeDetails { + new_details: field_new_details.ok_or_else(|| ::serde::de::Error::missing_field("new_details"))?, + file_request_id: field_file_request_id.and_then(Option::flatten), + previous_details: field_previous_details.and_then(Option::flatten), + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("new_details", &self.new_details)?; + if let Some(val) = &self.file_request_id { + s.serialize_field("file_request_id", val)?; + } + if let Some(val) = &self.previous_details { + s.serialize_field("previous_details", val)?; + } + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for FileRequestChangeDetails { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = FileRequestChangeDetails; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a FileRequestChangeDetails struct") } - EventTypeArg::ChangedEnterpriseAdminRole => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "changed_enterprise_admin_role")?; - s.end() + fn visit_map>(self, map: V) -> Result { + FileRequestChangeDetails::internal_deserialize(map) } - EventTypeArg::ChangedEnterpriseConnectedTeamStatus => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "changed_enterprise_connected_team_status")?; - s.end() + } + deserializer.deserialize_struct("FileRequestChangeDetails", FILE_REQUEST_CHANGE_DETAILS_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for FileRequestChangeDetails { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("FileRequestChangeDetails", 3)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct FileRequestChangeType { + pub description: String, +} + +impl FileRequestChangeType { + pub fn new(description: String) -> Self { + FileRequestChangeType { + description, + } + } +} + +const FILE_REQUEST_CHANGE_TYPE_FIELDS: &[&str] = &["description"]; +impl FileRequestChangeType { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_description = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); + } + field_description = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } } - EventTypeArg::EndedEnterpriseAdminSession => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "ended_enterprise_admin_session")?; - s.end() + } + if optional && nothing { + return Ok(None); + } + let result = FileRequestChangeType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("description", &self.description)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for FileRequestChangeType { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = FileRequestChangeType; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a FileRequestChangeType struct") } - EventTypeArg::EndedEnterpriseAdminSessionDeprecated => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "ended_enterprise_admin_session_deprecated")?; - s.end() + fn visit_map>(self, map: V) -> Result { + FileRequestChangeType::internal_deserialize(map) } - EventTypeArg::EnterpriseSettingsLocking => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "enterprise_settings_locking")?; - s.end() + } + deserializer.deserialize_struct("FileRequestChangeType", FILE_REQUEST_CHANGE_TYPE_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for FileRequestChangeType { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("FileRequestChangeType", 1)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +/// Closed file request. +#[derive(Debug, Clone, PartialEq, Eq, Default)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct FileRequestCloseDetails { + /// File request id. Might be missing due to historical data gap. + pub file_request_id: Option, + /// Previous file request details. Might be missing due to historical data gap. + pub previous_details: Option, +} + +impl FileRequestCloseDetails { + pub fn with_file_request_id( + mut self, + value: crate::types::file_requests::FileRequestId, + ) -> Self { + self.file_request_id = Some(value); + self + } + + pub fn with_previous_details(mut self, value: FileRequestDetails) -> Self { + self.previous_details = Some(value); + self + } +} + +const FILE_REQUEST_CLOSE_DETAILS_FIELDS: &[&str] = &["file_request_id", + "previous_details"]; +impl FileRequestCloseDetails { + // no _opt deserializer + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + ) -> Result { + let mut field_file_request_id = None; + let mut field_previous_details = None; + while let Some(key) = map.next_key::<&str>()? { + match key { + "file_request_id" => { + if field_file_request_id.is_some() { + return Err(::serde::de::Error::duplicate_field("file_request_id")); + } + field_file_request_id = Some(map.next_value()?); + } + "previous_details" => { + if field_previous_details.is_some() { + return Err(::serde::de::Error::duplicate_field("previous_details")); + } + field_previous_details = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } } - EventTypeArg::GuestAdminChangeStatus => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "guest_admin_change_status")?; - s.end() + } + let result = FileRequestCloseDetails { + file_request_id: field_file_request_id.and_then(Option::flatten), + previous_details: field_previous_details.and_then(Option::flatten), + }; + Ok(result) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + if let Some(val) = &self.file_request_id { + s.serialize_field("file_request_id", val)?; + } + if let Some(val) = &self.previous_details { + s.serialize_field("previous_details", val)?; + } + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for FileRequestCloseDetails { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = FileRequestCloseDetails; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a FileRequestCloseDetails struct") } - EventTypeArg::StartedEnterpriseAdminSession => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "started_enterprise_admin_session")?; - s.end() + fn visit_map>(self, map: V) -> Result { + FileRequestCloseDetails::internal_deserialize(map) } - EventTypeArg::TeamMergeRequestAccepted => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "team_merge_request_accepted")?; - s.end() + } + deserializer.deserialize_struct("FileRequestCloseDetails", FILE_REQUEST_CLOSE_DETAILS_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for FileRequestCloseDetails { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("FileRequestCloseDetails", 2)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct FileRequestCloseType { + pub description: String, +} + +impl FileRequestCloseType { + pub fn new(description: String) -> Self { + FileRequestCloseType { + description, + } + } +} + +const FILE_REQUEST_CLOSE_TYPE_FIELDS: &[&str] = &["description"]; +impl FileRequestCloseType { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_description = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); + } + field_description = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } } - EventTypeArg::TeamMergeRequestAcceptedShownToPrimaryTeam => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "team_merge_request_accepted_shown_to_primary_team")?; - s.end() + } + if optional && nothing { + return Ok(None); + } + let result = FileRequestCloseType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("description", &self.description)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for FileRequestCloseType { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = FileRequestCloseType; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a FileRequestCloseType struct") } - EventTypeArg::TeamMergeRequestAcceptedShownToSecondaryTeam => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "team_merge_request_accepted_shown_to_secondary_team")?; - s.end() + fn visit_map>(self, map: V) -> Result { + FileRequestCloseType::internal_deserialize(map) } - EventTypeArg::TeamMergeRequestAutoCanceled => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "team_merge_request_auto_canceled")?; - s.end() + } + deserializer.deserialize_struct("FileRequestCloseType", FILE_REQUEST_CLOSE_TYPE_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for FileRequestCloseType { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("FileRequestCloseType", 1)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +/// Created file request. +#[derive(Debug, Clone, PartialEq, Eq, Default)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct FileRequestCreateDetails { + /// File request id. Might be missing due to historical data gap. + pub file_request_id: Option, + /// File request details. Might be missing due to historical data gap. + pub request_details: Option, +} + +impl FileRequestCreateDetails { + pub fn with_file_request_id( + mut self, + value: crate::types::file_requests::FileRequestId, + ) -> Self { + self.file_request_id = Some(value); + self + } + + pub fn with_request_details(mut self, value: FileRequestDetails) -> Self { + self.request_details = Some(value); + self + } +} + +const FILE_REQUEST_CREATE_DETAILS_FIELDS: &[&str] = &["file_request_id", + "request_details"]; +impl FileRequestCreateDetails { + // no _opt deserializer + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + ) -> Result { + let mut field_file_request_id = None; + let mut field_request_details = None; + while let Some(key) = map.next_key::<&str>()? { + match key { + "file_request_id" => { + if field_file_request_id.is_some() { + return Err(::serde::de::Error::duplicate_field("file_request_id")); + } + field_file_request_id = Some(map.next_value()?); + } + "request_details" => { + if field_request_details.is_some() { + return Err(::serde::de::Error::duplicate_field("request_details")); + } + field_request_details = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } } - EventTypeArg::TeamMergeRequestCanceled => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "team_merge_request_canceled")?; - s.end() + } + let result = FileRequestCreateDetails { + file_request_id: field_file_request_id.and_then(Option::flatten), + request_details: field_request_details.and_then(Option::flatten), + }; + Ok(result) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + if let Some(val) = &self.file_request_id { + s.serialize_field("file_request_id", val)?; + } + if let Some(val) = &self.request_details { + s.serialize_field("request_details", val)?; + } + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for FileRequestCreateDetails { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = FileRequestCreateDetails; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a FileRequestCreateDetails struct") } - EventTypeArg::TeamMergeRequestCanceledShownToPrimaryTeam => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "team_merge_request_canceled_shown_to_primary_team")?; - s.end() + fn visit_map>(self, map: V) -> Result { + FileRequestCreateDetails::internal_deserialize(map) } - EventTypeArg::TeamMergeRequestCanceledShownToSecondaryTeam => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "team_merge_request_canceled_shown_to_secondary_team")?; - s.end() + } + deserializer.deserialize_struct("FileRequestCreateDetails", FILE_REQUEST_CREATE_DETAILS_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for FileRequestCreateDetails { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("FileRequestCreateDetails", 2)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct FileRequestCreateType { + pub description: String, +} + +impl FileRequestCreateType { + pub fn new(description: String) -> Self { + FileRequestCreateType { + description, + } + } +} + +const FILE_REQUEST_CREATE_TYPE_FIELDS: &[&str] = &["description"]; +impl FileRequestCreateType { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_description = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); + } + field_description = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } } - EventTypeArg::TeamMergeRequestExpired => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "team_merge_request_expired")?; - s.end() + } + if optional && nothing { + return Ok(None); + } + let result = FileRequestCreateType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("description", &self.description)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for FileRequestCreateType { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = FileRequestCreateType; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a FileRequestCreateType struct") } - EventTypeArg::TeamMergeRequestExpiredShownToPrimaryTeam => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "team_merge_request_expired_shown_to_primary_team")?; - s.end() + fn visit_map>(self, map: V) -> Result { + FileRequestCreateType::internal_deserialize(map) } - EventTypeArg::TeamMergeRequestExpiredShownToSecondaryTeam => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "team_merge_request_expired_shown_to_secondary_team")?; - s.end() + } + deserializer.deserialize_struct("FileRequestCreateType", FILE_REQUEST_CREATE_TYPE_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for FileRequestCreateType { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("FileRequestCreateType", 1)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +/// File request deadline +#[derive(Debug, Clone, PartialEq, Eq, Default)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct FileRequestDeadline { + /// The deadline for this file request. Might be missing due to historical data gap. + pub deadline: Option, + /// If set, allow uploads after the deadline has passed. + pub allow_late_uploads: Option, +} + +impl FileRequestDeadline { + pub fn with_deadline(mut self, value: crate::types::common::DropboxTimestamp) -> Self { + self.deadline = Some(value); + self + } + + pub fn with_allow_late_uploads(mut self, value: String) -> Self { + self.allow_late_uploads = Some(value); + self + } +} + +const FILE_REQUEST_DEADLINE_FIELDS: &[&str] = &["deadline", + "allow_late_uploads"]; +impl FileRequestDeadline { + // no _opt deserializer + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + ) -> Result { + let mut field_deadline = None; + let mut field_allow_late_uploads = None; + while let Some(key) = map.next_key::<&str>()? { + match key { + "deadline" => { + if field_deadline.is_some() { + return Err(::serde::de::Error::duplicate_field("deadline")); + } + field_deadline = Some(map.next_value()?); + } + "allow_late_uploads" => { + if field_allow_late_uploads.is_some() { + return Err(::serde::de::Error::duplicate_field("allow_late_uploads")); + } + field_allow_late_uploads = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } } - EventTypeArg::TeamMergeRequestRejectedShownToPrimaryTeam => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "team_merge_request_rejected_shown_to_primary_team")?; - s.end() + } + let result = FileRequestDeadline { + deadline: field_deadline.and_then(Option::flatten), + allow_late_uploads: field_allow_late_uploads.and_then(Option::flatten), + }; + Ok(result) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + if let Some(val) = &self.deadline { + s.serialize_field("deadline", val)?; + } + if let Some(val) = &self.allow_late_uploads { + s.serialize_field("allow_late_uploads", val)?; + } + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for FileRequestDeadline { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = FileRequestDeadline; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a FileRequestDeadline struct") } - EventTypeArg::TeamMergeRequestRejectedShownToSecondaryTeam => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "team_merge_request_rejected_shown_to_secondary_team")?; - s.end() + fn visit_map>(self, map: V) -> Result { + FileRequestDeadline::internal_deserialize(map) } - EventTypeArg::TeamMergeRequestReminder => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "team_merge_request_reminder")?; - s.end() + } + deserializer.deserialize_struct("FileRequestDeadline", FILE_REQUEST_DEADLINE_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for FileRequestDeadline { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("FileRequestDeadline", 2)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +/// Delete file request. +#[derive(Debug, Clone, PartialEq, Eq, Default)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct FileRequestDeleteDetails { + /// File request id. Might be missing due to historical data gap. + pub file_request_id: Option, + /// Previous file request details. Might be missing due to historical data gap. + pub previous_details: Option, +} + +impl FileRequestDeleteDetails { + pub fn with_file_request_id( + mut self, + value: crate::types::file_requests::FileRequestId, + ) -> Self { + self.file_request_id = Some(value); + self + } + + pub fn with_previous_details(mut self, value: FileRequestDetails) -> Self { + self.previous_details = Some(value); + self + } +} + +const FILE_REQUEST_DELETE_DETAILS_FIELDS: &[&str] = &["file_request_id", + "previous_details"]; +impl FileRequestDeleteDetails { + // no _opt deserializer + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + ) -> Result { + let mut field_file_request_id = None; + let mut field_previous_details = None; + while let Some(key) = map.next_key::<&str>()? { + match key { + "file_request_id" => { + if field_file_request_id.is_some() { + return Err(::serde::de::Error::duplicate_field("file_request_id")); + } + field_file_request_id = Some(map.next_value()?); + } + "previous_details" => { + if field_previous_details.is_some() { + return Err(::serde::de::Error::duplicate_field("previous_details")); + } + field_previous_details = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } } - EventTypeArg::TeamMergeRequestReminderShownToPrimaryTeam => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "team_merge_request_reminder_shown_to_primary_team")?; - s.end() + } + let result = FileRequestDeleteDetails { + file_request_id: field_file_request_id.and_then(Option::flatten), + previous_details: field_previous_details.and_then(Option::flatten), + }; + Ok(result) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + if let Some(val) = &self.file_request_id { + s.serialize_field("file_request_id", val)?; + } + if let Some(val) = &self.previous_details { + s.serialize_field("previous_details", val)?; + } + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for FileRequestDeleteDetails { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = FileRequestDeleteDetails; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a FileRequestDeleteDetails struct") } - EventTypeArg::TeamMergeRequestReminderShownToSecondaryTeam => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "team_merge_request_reminder_shown_to_secondary_team")?; - s.end() + fn visit_map>(self, map: V) -> Result { + FileRequestDeleteDetails::internal_deserialize(map) } - EventTypeArg::TeamMergeRequestRevoked => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "team_merge_request_revoked")?; - s.end() + } + deserializer.deserialize_struct("FileRequestDeleteDetails", FILE_REQUEST_DELETE_DETAILS_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for FileRequestDeleteDetails { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("FileRequestDeleteDetails", 2)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct FileRequestDeleteType { + pub description: String, +} + +impl FileRequestDeleteType { + pub fn new(description: String) -> Self { + FileRequestDeleteType { + description, + } + } +} + +const FILE_REQUEST_DELETE_TYPE_FIELDS: &[&str] = &["description"]; +impl FileRequestDeleteType { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_description = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); + } + field_description = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } } - EventTypeArg::TeamMergeRequestSentShownToPrimaryTeam => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "team_merge_request_sent_shown_to_primary_team")?; - s.end() + } + if optional && nothing { + return Ok(None); + } + let result = FileRequestDeleteType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("description", &self.description)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for FileRequestDeleteType { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = FileRequestDeleteType; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a FileRequestDeleteType struct") } - EventTypeArg::TeamMergeRequestSentShownToSecondaryTeam => { - // unit - let mut s = serializer.serialize_struct("EventTypeArg", 1)?; - s.serialize_field(".tag", "team_merge_request_sent_shown_to_secondary_team")?; - s.end() + fn visit_map>(self, map: V) -> Result { + FileRequestDeleteType::internal_deserialize(map) } - EventTypeArg::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) } + deserializer.deserialize_struct("FileRequestDeleteType", FILE_REQUEST_DELETE_TYPE_FIELDS, StructVisitor) } } -/// Created member data report. -#[derive(Debug, Clone, PartialEq, Eq, Default)] +impl ::serde::ser::Serialize for FileRequestDeleteType { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("FileRequestDeleteType", 1)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +/// File request details +#[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct ExportMembersReportDetails { +pub struct FileRequestDetails { + /// Asset position in the Assets list. + pub asset_index: u64, + /// File request deadline. + pub deadline: Option, + /// Flag represents if this file request has password. + pub has_password: Option, } -const EXPORT_MEMBERS_REPORT_DETAILS_FIELDS: &[&str] = &[]; -impl ExportMembersReportDetails { - // no _opt deserializer +impl FileRequestDetails { + pub fn new(asset_index: u64) -> Self { + FileRequestDetails { + asset_index, + deadline: None, + has_password: None, + } + } + + pub fn with_deadline(mut self, value: FileRequestDeadline) -> Self { + self.deadline = Some(value); + self + } + + pub fn with_has_password(mut self, value: bool) -> Self { + self.has_password = Some(value); + self + } +} + +const FILE_REQUEST_DETAILS_FIELDS: &[&str] = &["asset_index", + "deadline", + "has_password"]; +impl FileRequestDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - ) -> Result { - // ignore any fields found; none are presently recognized - crate::eat_json_fields(&mut map)?; - Ok(ExportMembersReportDetails {}) + optional: bool, + ) -> Result, V::Error> { + let mut field_asset_index = None; + let mut field_deadline = None; + let mut field_has_password = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "asset_index" => { + if field_asset_index.is_some() { + return Err(::serde::de::Error::duplicate_field("asset_index")); + } + field_asset_index = Some(map.next_value()?); + } + "deadline" => { + if field_deadline.is_some() { + return Err(::serde::de::Error::duplicate_field("deadline")); + } + field_deadline = Some(map.next_value()?); + } + "has_password" => { + if field_has_password.is_some() { + return Err(::serde::de::Error::duplicate_field("has_password")); + } + field_has_password = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } + } + } + if optional && nothing { + return Ok(None); + } + let result = FileRequestDetails { + asset_index: field_asset_index.ok_or_else(|| ::serde::de::Error::missing_field("asset_index"))?, + deadline: field_deadline.and_then(Option::flatten), + has_password: field_has_password.and_then(Option::flatten), + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("asset_index", &self.asset_index)?; + if let Some(val) = &self.deadline { + s.serialize_field("deadline", val)?; + } + if let Some(val) = &self.has_password { + s.serialize_field("has_password", val)?; + } + Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for ExportMembersReportDetails { +impl<'de> ::serde::de::Deserialize<'de> for FileRequestDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = ExportMembersReportDetails; + type Value = FileRequestDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a ExportMembersReportDetails struct") + f.write_str("a FileRequestDetails struct") } fn visit_map>(self, map: V) -> Result { - ExportMembersReportDetails::internal_deserialize(map) + FileRequestDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("ExportMembersReportDetails", EXPORT_MEMBERS_REPORT_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("FileRequestDetails", FILE_REQUEST_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for ExportMembersReportDetails { +impl ::serde::ser::Serialize for FileRequestDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - serializer.serialize_struct("ExportMembersReportDetails", 0)?.end() + let mut s = serializer.serialize_struct("FileRequestDetails", 3)?; + self.internal_serialize::(&mut s)?; + s.end() } } -/// Failed to create members data report. +/// Received files for file request. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct ExportMembersReportFailDetails { - /// Failure reason. - pub failure_reason: crate::types::team::TeamReportFailureReason, +pub struct FileRequestReceiveFileDetails { + /// Submitted file names. + pub submitted_file_names: Vec, + /// File request id. Might be missing due to historical data gap. + pub file_request_id: Option, + /// File request details. Might be missing due to historical data gap. + pub file_request_details: Option, + /// The name as provided by the submitter. + pub submitter_name: Option, + /// The email as provided by the submitter. + pub submitter_email: Option, } -impl ExportMembersReportFailDetails { - pub fn new(failure_reason: crate::types::team::TeamReportFailureReason) -> Self { - ExportMembersReportFailDetails { - failure_reason, +impl FileRequestReceiveFileDetails { + pub fn new(submitted_file_names: Vec) -> Self { + FileRequestReceiveFileDetails { + submitted_file_names, + file_request_id: None, + file_request_details: None, + submitter_name: None, + submitter_email: None, } } + + pub fn with_file_request_id( + mut self, + value: crate::types::file_requests::FileRequestId, + ) -> Self { + self.file_request_id = Some(value); + self + } + + pub fn with_file_request_details(mut self, value: FileRequestDetails) -> Self { + self.file_request_details = Some(value); + self + } + + pub fn with_submitter_name(mut self, value: crate::types::common::DisplayNameLegacy) -> Self { + self.submitter_name = Some(value); + self + } + + pub fn with_submitter_email(mut self, value: EmailAddress) -> Self { + self.submitter_email = Some(value); + self + } } -const EXPORT_MEMBERS_REPORT_FAIL_DETAILS_FIELDS: &[&str] = &["failure_reason"]; -impl ExportMembersReportFailDetails { +const FILE_REQUEST_RECEIVE_FILE_DETAILS_FIELDS: &[&str] = &["submitted_file_names", + "file_request_id", + "file_request_details", + "submitter_name", + "submitter_email"]; +impl FileRequestReceiveFileDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_failure_reason = None; + ) -> Result, V::Error> { + let mut field_submitted_file_names = None; + let mut field_file_request_id = None; + let mut field_file_request_details = None; + let mut field_submitter_name = None; + let mut field_submitter_email = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "failure_reason" => { - if field_failure_reason.is_some() { - return Err(::serde::de::Error::duplicate_field("failure_reason")); + "submitted_file_names" => { + if field_submitted_file_names.is_some() { + return Err(::serde::de::Error::duplicate_field("submitted_file_names")); } - field_failure_reason = Some(map.next_value()?); + field_submitted_file_names = Some(map.next_value()?); + } + "file_request_id" => { + if field_file_request_id.is_some() { + return Err(::serde::de::Error::duplicate_field("file_request_id")); + } + field_file_request_id = Some(map.next_value()?); + } + "file_request_details" => { + if field_file_request_details.is_some() { + return Err(::serde::de::Error::duplicate_field("file_request_details")); + } + field_file_request_details = Some(map.next_value()?); + } + "submitter_name" => { + if field_submitter_name.is_some() { + return Err(::serde::de::Error::duplicate_field("submitter_name")); + } + field_submitter_name = Some(map.next_value()?); + } + "submitter_email" => { + if field_submitter_email.is_some() { + return Err(::serde::de::Error::duplicate_field("submitter_email")); + } + field_submitter_email = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -36378,8 +57199,12 @@ impl ExportMembersReportFailDetails { if optional && nothing { return Ok(None); } - let result = ExportMembersReportFailDetails { - failure_reason: field_failure_reason.ok_or_else(|| ::serde::de::Error::missing_field("failure_reason"))?, + let result = FileRequestReceiveFileDetails { + submitted_file_names: field_submitted_file_names.ok_or_else(|| ::serde::de::Error::missing_field("submitted_file_names"))?, + file_request_id: field_file_request_id.and_then(Option::flatten), + file_request_details: field_file_request_details.and_then(Option::flatten), + submitter_name: field_submitter_name.and_then(Option::flatten), + submitter_email: field_submitter_email.and_then(Option::flatten), }; Ok(Some(result)) } @@ -36389,34 +57214,46 @@ impl ExportMembersReportFailDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("failure_reason", &self.failure_reason)?; + s.serialize_field("submitted_file_names", &self.submitted_file_names)?; + if let Some(val) = &self.file_request_id { + s.serialize_field("file_request_id", val)?; + } + if let Some(val) = &self.file_request_details { + s.serialize_field("file_request_details", val)?; + } + if let Some(val) = &self.submitter_name { + s.serialize_field("submitter_name", val)?; + } + if let Some(val) = &self.submitter_email { + s.serialize_field("submitter_email", val)?; + } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for ExportMembersReportFailDetails { +impl<'de> ::serde::de::Deserialize<'de> for FileRequestReceiveFileDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = ExportMembersReportFailDetails; + type Value = FileRequestReceiveFileDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a ExportMembersReportFailDetails struct") + f.write_str("a FileRequestReceiveFileDetails struct") } fn visit_map>(self, map: V) -> Result { - ExportMembersReportFailDetails::internal_deserialize(map) + FileRequestReceiveFileDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("ExportMembersReportFailDetails", EXPORT_MEMBERS_REPORT_FAIL_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("FileRequestReceiveFileDetails", FILE_REQUEST_RECEIVE_FILE_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for ExportMembersReportFailDetails { +impl ::serde::ser::Serialize for FileRequestReceiveFileDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("ExportMembersReportFailDetails", 1)?; + let mut s = serializer.serialize_struct("FileRequestReceiveFileDetails", 5)?; self.internal_serialize::(&mut s)?; s.end() } @@ -36424,30 +57261,30 @@ impl ::serde::ser::Serialize for ExportMembersReportFailDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct ExportMembersReportFailType { +pub struct FileRequestReceiveFileType { pub description: String, } -impl ExportMembersReportFailType { +impl FileRequestReceiveFileType { pub fn new(description: String) -> Self { - ExportMembersReportFailType { + FileRequestReceiveFileType { description, } } } -const EXPORT_MEMBERS_REPORT_FAIL_TYPE_FIELDS: &[&str] = &["description"]; -impl ExportMembersReportFailType { +const FILE_REQUEST_RECEIVE_FILE_TYPE_FIELDS: &[&str] = &["description"]; +impl FileRequestReceiveFileType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -36468,7 +57305,7 @@ impl ExportMembersReportFailType { if optional && nothing { return Ok(None); } - let result = ExportMembersReportFailType { + let result = FileRequestReceiveFileType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -36484,60 +57321,172 @@ impl ExportMembersReportFailType { } } -impl<'de> ::serde::de::Deserialize<'de> for ExportMembersReportFailType { +impl<'de> ::serde::de::Deserialize<'de> for FileRequestReceiveFileType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = ExportMembersReportFailType; + type Value = FileRequestReceiveFileType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a ExportMembersReportFailType struct") + f.write_str("a FileRequestReceiveFileType struct") } fn visit_map>(self, map: V) -> Result { - ExportMembersReportFailType::internal_deserialize(map) + FileRequestReceiveFileType::internal_deserialize(map) } } - deserializer.deserialize_struct("ExportMembersReportFailType", EXPORT_MEMBERS_REPORT_FAIL_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("FileRequestReceiveFileType", FILE_REQUEST_RECEIVE_FILE_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for ExportMembersReportFailType { +impl ::serde::ser::Serialize for FileRequestReceiveFileType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("ExportMembersReportFailType", 1)?; + let mut s = serializer.serialize_struct("FileRequestReceiveFileType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } +/// Enabled/disabled file requests. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct ExportMembersReportType { +pub struct FileRequestsChangePolicyDetails { + /// New file requests policy. + pub new_value: FileRequestsPolicy, + /// Previous file requests policy. Might be missing due to historical data gap. + pub previous_value: Option, +} + +impl FileRequestsChangePolicyDetails { + pub fn new(new_value: FileRequestsPolicy) -> Self { + FileRequestsChangePolicyDetails { + new_value, + previous_value: None, + } + } + + pub fn with_previous_value(mut self, value: FileRequestsPolicy) -> Self { + self.previous_value = Some(value); + self + } +} + +const FILE_REQUESTS_CHANGE_POLICY_DETAILS_FIELDS: &[&str] = &["new_value", + "previous_value"]; +impl FileRequestsChangePolicyDetails { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_new_value = None; + let mut field_previous_value = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "new_value" => { + if field_new_value.is_some() { + return Err(::serde::de::Error::duplicate_field("new_value")); + } + field_new_value = Some(map.next_value()?); + } + "previous_value" => { + if field_previous_value.is_some() { + return Err(::serde::de::Error::duplicate_field("previous_value")); + } + field_previous_value = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } + } + } + if optional && nothing { + return Ok(None); + } + let result = FileRequestsChangePolicyDetails { + new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, + previous_value: field_previous_value.and_then(Option::flatten), + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("new_value", &self.new_value)?; + if let Some(val) = &self.previous_value { + s.serialize_field("previous_value", val)?; + } + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for FileRequestsChangePolicyDetails { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = FileRequestsChangePolicyDetails; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a FileRequestsChangePolicyDetails struct") + } + fn visit_map>(self, map: V) -> Result { + FileRequestsChangePolicyDetails::internal_deserialize(map) + } + } + deserializer.deserialize_struct("FileRequestsChangePolicyDetails", FILE_REQUESTS_CHANGE_POLICY_DETAILS_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for FileRequestsChangePolicyDetails { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("FileRequestsChangePolicyDetails", 2)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct FileRequestsChangePolicyType { pub description: String, } -impl ExportMembersReportType { +impl FileRequestsChangePolicyType { pub fn new(description: String) -> Self { - ExportMembersReportType { + FileRequestsChangePolicyType { description, } } } -const EXPORT_MEMBERS_REPORT_TYPE_FIELDS: &[&str] = &["description"]; -impl ExportMembersReportType { +const FILE_REQUESTS_CHANGE_POLICY_TYPE_FIELDS: &[&str] = &["description"]; +impl FileRequestsChangePolicyType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -36558,7 +57507,7 @@ impl ExportMembersReportType { if optional && nothing { return Ok(None); } - let result = ExportMembersReportType { + let result = FileRequestsChangePolicyType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -36574,88 +57523,114 @@ impl ExportMembersReportType { } } -impl<'de> ::serde::de::Deserialize<'de> for ExportMembersReportType { +impl<'de> ::serde::de::Deserialize<'de> for FileRequestsChangePolicyType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = ExportMembersReportType; + type Value = FileRequestsChangePolicyType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a ExportMembersReportType struct") + f.write_str("a FileRequestsChangePolicyType struct") } fn visit_map>(self, map: V) -> Result { - ExportMembersReportType::internal_deserialize(map) + FileRequestsChangePolicyType::internal_deserialize(map) } } - deserializer.deserialize_struct("ExportMembersReportType", EXPORT_MEMBERS_REPORT_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("FileRequestsChangePolicyType", FILE_REQUESTS_CHANGE_POLICY_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for ExportMembersReportType { +impl ::serde::ser::Serialize for FileRequestsChangePolicyType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("ExportMembersReportType", 1)?; + let mut s = serializer.serialize_struct("FileRequestsChangePolicyType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Accepted/opted out of extended version history. -#[derive(Debug, Clone, PartialEq, Eq)] +/// Enabled file request emails for everyone. +#[derive(Debug, Clone, PartialEq, Eq, Default)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct ExtendedVersionHistoryChangePolicyDetails { - /// New extended version history policy. - pub new_value: ExtendedVersionHistoryPolicy, - /// Previous extended version history policy. Might be missing due to historical data gap. - pub previous_value: Option, +pub struct FileRequestsEmailsEnabledDetails { } -impl ExtendedVersionHistoryChangePolicyDetails { - pub fn new(new_value: ExtendedVersionHistoryPolicy) -> Self { - ExtendedVersionHistoryChangePolicyDetails { - new_value, - previous_value: None, +const FILE_REQUESTS_EMAILS_ENABLED_DETAILS_FIELDS: &[&str] = &[]; +impl FileRequestsEmailsEnabledDetails { + // no _opt deserializer + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + ) -> Result { + // ignore any fields found; none are presently recognized + crate::eat_json_fields(&mut map)?; + Ok(FileRequestsEmailsEnabledDetails {}) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for FileRequestsEmailsEnabledDetails { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = FileRequestsEmailsEnabledDetails; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a FileRequestsEmailsEnabledDetails struct") + } + fn visit_map>(self, map: V) -> Result { + FileRequestsEmailsEnabledDetails::internal_deserialize(map) + } } + deserializer.deserialize_struct("FileRequestsEmailsEnabledDetails", FILE_REQUESTS_EMAILS_ENABLED_DETAILS_FIELDS, StructVisitor) } +} - pub fn with_previous_value(mut self, value: ExtendedVersionHistoryPolicy) -> Self { - self.previous_value = Some(value); - self +impl ::serde::ser::Serialize for FileRequestsEmailsEnabledDetails { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + serializer.serialize_struct("FileRequestsEmailsEnabledDetails", 0)?.end() } } -const EXTENDED_VERSION_HISTORY_CHANGE_POLICY_DETAILS_FIELDS: &[&str] = &["new_value", - "previous_value"]; -impl ExtendedVersionHistoryChangePolicyDetails { +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct FileRequestsEmailsEnabledType { + pub description: String, +} + +impl FileRequestsEmailsEnabledType { + pub fn new(description: String) -> Self { + FileRequestsEmailsEnabledType { + description, + } + } +} + +const FILE_REQUESTS_EMAILS_ENABLED_TYPE_FIELDS: &[&str] = &["description"]; +impl FileRequestsEmailsEnabledType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_new_value = None; - let mut field_previous_value = None; + ) -> Result, V::Error> { + let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "new_value" => { - if field_new_value.is_some() { - return Err(::serde::de::Error::duplicate_field("new_value")); - } - field_new_value = Some(map.next_value()?); - } - "previous_value" => { - if field_previous_value.is_some() { - return Err(::serde::de::Error::duplicate_field("previous_value")); + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); } - field_previous_value = Some(map.next_value()?); + field_description = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -36666,9 +57641,8 @@ impl ExtendedVersionHistoryChangePolicyDetails { if optional && nothing { return Ok(None); } - let result = ExtendedVersionHistoryChangePolicyDetails { - new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, - previous_value: field_previous_value.and_then(Option::flatten), + let result = FileRequestsEmailsEnabledType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) } @@ -36678,68 +57652,109 @@ impl ExtendedVersionHistoryChangePolicyDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("new_value", &self.new_value)?; - if let Some(val) = &self.previous_value { - s.serialize_field("previous_value", val)?; - } + s.serialize_field("description", &self.description)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for ExtendedVersionHistoryChangePolicyDetails { +impl<'de> ::serde::de::Deserialize<'de> for FileRequestsEmailsEnabledType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = ExtendedVersionHistoryChangePolicyDetails; + type Value = FileRequestsEmailsEnabledType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a ExtendedVersionHistoryChangePolicyDetails struct") + f.write_str("a FileRequestsEmailsEnabledType struct") } fn visit_map>(self, map: V) -> Result { - ExtendedVersionHistoryChangePolicyDetails::internal_deserialize(map) + FileRequestsEmailsEnabledType::internal_deserialize(map) } } - deserializer.deserialize_struct("ExtendedVersionHistoryChangePolicyDetails", EXTENDED_VERSION_HISTORY_CHANGE_POLICY_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("FileRequestsEmailsEnabledType", FILE_REQUESTS_EMAILS_ENABLED_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for ExtendedVersionHistoryChangePolicyDetails { +impl ::serde::ser::Serialize for FileRequestsEmailsEnabledType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("ExtendedVersionHistoryChangePolicyDetails", 2)?; + let mut s = serializer.serialize_struct("FileRequestsEmailsEnabledType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } +/// Enabled file request emails for team. +#[derive(Debug, Clone, PartialEq, Eq, Default)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct FileRequestsEmailsRestrictedToTeamOnlyDetails { +} + +const FILE_REQUESTS_EMAILS_RESTRICTED_TO_TEAM_ONLY_DETAILS_FIELDS: &[&str] = &[]; +impl FileRequestsEmailsRestrictedToTeamOnlyDetails { + // no _opt deserializer + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + ) -> Result { + // ignore any fields found; none are presently recognized + crate::eat_json_fields(&mut map)?; + Ok(FileRequestsEmailsRestrictedToTeamOnlyDetails {}) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for FileRequestsEmailsRestrictedToTeamOnlyDetails { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = FileRequestsEmailsRestrictedToTeamOnlyDetails; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a FileRequestsEmailsRestrictedToTeamOnlyDetails struct") + } + fn visit_map>(self, map: V) -> Result { + FileRequestsEmailsRestrictedToTeamOnlyDetails::internal_deserialize(map) + } + } + deserializer.deserialize_struct("FileRequestsEmailsRestrictedToTeamOnlyDetails", FILE_REQUESTS_EMAILS_RESTRICTED_TO_TEAM_ONLY_DETAILS_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for FileRequestsEmailsRestrictedToTeamOnlyDetails { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + serializer.serialize_struct("FileRequestsEmailsRestrictedToTeamOnlyDetails", 0)?.end() + } +} + #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct ExtendedVersionHistoryChangePolicyType { +pub struct FileRequestsEmailsRestrictedToTeamOnlyType { pub description: String, } -impl ExtendedVersionHistoryChangePolicyType { +impl FileRequestsEmailsRestrictedToTeamOnlyType { pub fn new(description: String) -> Self { - ExtendedVersionHistoryChangePolicyType { + FileRequestsEmailsRestrictedToTeamOnlyType { description, } } } -const EXTENDED_VERSION_HISTORY_CHANGE_POLICY_TYPE_FIELDS: &[&str] = &["description"]; -impl ExtendedVersionHistoryChangePolicyType { +const FILE_REQUESTS_EMAILS_RESTRICTED_TO_TEAM_ONLY_TYPE_FIELDS: &[&str] = &["description"]; +impl FileRequestsEmailsRestrictedToTeamOnlyType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -36760,7 +57775,7 @@ impl ExtendedVersionHistoryChangePolicyType { if optional && nothing { return Ok(None); } - let result = ExtendedVersionHistoryChangePolicyType { + let result = FileRequestsEmailsRestrictedToTeamOnlyType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -36776,55 +57791,54 @@ impl ExtendedVersionHistoryChangePolicyType { } } -impl<'de> ::serde::de::Deserialize<'de> for ExtendedVersionHistoryChangePolicyType { +impl<'de> ::serde::de::Deserialize<'de> for FileRequestsEmailsRestrictedToTeamOnlyType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = ExtendedVersionHistoryChangePolicyType; + type Value = FileRequestsEmailsRestrictedToTeamOnlyType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a ExtendedVersionHistoryChangePolicyType struct") + f.write_str("a FileRequestsEmailsRestrictedToTeamOnlyType struct") } fn visit_map>(self, map: V) -> Result { - ExtendedVersionHistoryChangePolicyType::internal_deserialize(map) + FileRequestsEmailsRestrictedToTeamOnlyType::internal_deserialize(map) } } - deserializer.deserialize_struct("ExtendedVersionHistoryChangePolicyType", EXTENDED_VERSION_HISTORY_CHANGE_POLICY_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("FileRequestsEmailsRestrictedToTeamOnlyType", FILE_REQUESTS_EMAILS_RESTRICTED_TO_TEAM_ONLY_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for ExtendedVersionHistoryChangePolicyType { +impl ::serde::ser::Serialize for FileRequestsEmailsRestrictedToTeamOnlyType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("ExtendedVersionHistoryChangePolicyType", 1)?; + let mut s = serializer.serialize_struct("FileRequestsEmailsRestrictedToTeamOnlyType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } +/// File requests policy #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // variants may be added in the future -pub enum ExtendedVersionHistoryPolicy { - ExplicitlyLimited, - ExplicitlyUnlimited, - ImplicitlyLimited, - ImplicitlyUnlimited, +pub enum FileRequestsPolicy { + Disabled, + Enabled, /// Catch-all used for unrecognized values returned from the server. Encountering this value /// typically indicates that this SDK version is out of date. Other, } -impl<'de> ::serde::de::Deserialize<'de> for ExtendedVersionHistoryPolicy { +impl<'de> ::serde::de::Deserialize<'de> for FileRequestsPolicy { fn deserialize>(deserializer: D) -> Result { // union deserializer use serde::de::{self, MapAccess, Visitor}; struct EnumVisitor; impl<'de> Visitor<'de> for EnumVisitor { - type Value = ExtendedVersionHistoryPolicy; + type Value = FileRequestsPolicy; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a ExtendedVersionHistoryPolicy structure") + f.write_str("a FileRequestsPolicy structure") } fn visit_map>(self, mut map: V) -> Result { let tag: &str = match map.next_key()? { @@ -36832,187 +57846,161 @@ impl<'de> ::serde::de::Deserialize<'de> for ExtendedVersionHistoryPolicy { _ => return Err(de::Error::missing_field(".tag")) }; let value = match tag { - "explicitly_limited" => ExtendedVersionHistoryPolicy::ExplicitlyLimited, - "explicitly_unlimited" => ExtendedVersionHistoryPolicy::ExplicitlyUnlimited, - "implicitly_limited" => ExtendedVersionHistoryPolicy::ImplicitlyLimited, - "implicitly_unlimited" => ExtendedVersionHistoryPolicy::ImplicitlyUnlimited, - _ => ExtendedVersionHistoryPolicy::Other, + "disabled" => FileRequestsPolicy::Disabled, + "enabled" => FileRequestsPolicy::Enabled, + _ => FileRequestsPolicy::Other, }; crate::eat_json_fields(&mut map)?; Ok(value) } } - const VARIANTS: &[&str] = &["explicitly_limited", - "explicitly_unlimited", - "implicitly_limited", - "implicitly_unlimited", + const VARIANTS: &[&str] = &["disabled", + "enabled", "other"]; - deserializer.deserialize_struct("ExtendedVersionHistoryPolicy", VARIANTS, EnumVisitor) + deserializer.deserialize_struct("FileRequestsPolicy", VARIANTS, EnumVisitor) } } -impl ::serde::ser::Serialize for ExtendedVersionHistoryPolicy { +impl ::serde::ser::Serialize for FileRequestsPolicy { fn serialize(&self, serializer: S) -> Result { // union serializer use serde::ser::SerializeStruct; match self { - ExtendedVersionHistoryPolicy::ExplicitlyLimited => { - // unit - let mut s = serializer.serialize_struct("ExtendedVersionHistoryPolicy", 1)?; - s.serialize_field(".tag", "explicitly_limited")?; - s.end() - } - ExtendedVersionHistoryPolicy::ExplicitlyUnlimited => { - // unit - let mut s = serializer.serialize_struct("ExtendedVersionHistoryPolicy", 1)?; - s.serialize_field(".tag", "explicitly_unlimited")?; - s.end() - } - ExtendedVersionHistoryPolicy::ImplicitlyLimited => { + FileRequestsPolicy::Disabled => { // unit - let mut s = serializer.serialize_struct("ExtendedVersionHistoryPolicy", 1)?; - s.serialize_field(".tag", "implicitly_limited")?; + let mut s = serializer.serialize_struct("FileRequestsPolicy", 1)?; + s.serialize_field(".tag", "disabled")?; s.end() } - ExtendedVersionHistoryPolicy::ImplicitlyUnlimited => { + FileRequestsPolicy::Enabled => { // unit - let mut s = serializer.serialize_struct("ExtendedVersionHistoryPolicy", 1)?; - s.serialize_field(".tag", "implicitly_unlimited")?; + let mut s = serializer.serialize_struct("FileRequestsPolicy", 1)?; + s.serialize_field(".tag", "enabled")?; s.end() } - ExtendedVersionHistoryPolicy::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) + FileRequestsPolicy::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) } } } -/// External Drive Backup eligibility status -#[derive(Debug, Clone, PartialEq, Eq)] -#[non_exhaustive] // variants may be added in the future -pub enum ExternalDriveBackupEligibilityStatus { - ExceedLicenseCap, - Success, - /// Catch-all used for unrecognized values returned from the server. Encountering this value - /// typically indicates that this SDK version is out of date. - Other, +/// Resolved file comment. +#[derive(Debug, Clone, PartialEq, Eq, Default)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct FileResolveCommentDetails { + /// Comment text. + pub comment_text: Option, } -impl<'de> ::serde::de::Deserialize<'de> for ExternalDriveBackupEligibilityStatus { +impl FileResolveCommentDetails { + pub fn with_comment_text(mut self, value: String) -> Self { + self.comment_text = Some(value); + self + } +} + +const FILE_RESOLVE_COMMENT_DETAILS_FIELDS: &[&str] = &["comment_text"]; +impl FileResolveCommentDetails { + // no _opt deserializer + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + ) -> Result { + let mut field_comment_text = None; + while let Some(key) = map.next_key::<&str>()? { + match key { + "comment_text" => { + if field_comment_text.is_some() { + return Err(::serde::de::Error::duplicate_field("comment_text")); + } + field_comment_text = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } + } + } + let result = FileResolveCommentDetails { + comment_text: field_comment_text.and_then(Option::flatten), + }; + Ok(result) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + if let Some(val) = &self.comment_text { + s.serialize_field("comment_text", val)?; + } + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for FileResolveCommentDetails { fn deserialize>(deserializer: D) -> Result { - // union deserializer - use serde::de::{self, MapAccess, Visitor}; - struct EnumVisitor; - impl<'de> Visitor<'de> for EnumVisitor { - type Value = ExternalDriveBackupEligibilityStatus; + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = FileResolveCommentDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a ExternalDriveBackupEligibilityStatus structure") + f.write_str("a FileResolveCommentDetails struct") } - fn visit_map>(self, mut map: V) -> Result { - let tag: &str = match map.next_key()? { - Some(".tag") => map.next_value()?, - _ => return Err(de::Error::missing_field(".tag")) - }; - let value = match tag { - "exceed_license_cap" => ExternalDriveBackupEligibilityStatus::ExceedLicenseCap, - "success" => ExternalDriveBackupEligibilityStatus::Success, - _ => ExternalDriveBackupEligibilityStatus::Other, - }; - crate::eat_json_fields(&mut map)?; - Ok(value) + fn visit_map>(self, map: V) -> Result { + FileResolveCommentDetails::internal_deserialize(map) } } - const VARIANTS: &[&str] = &["exceed_license_cap", - "success", - "other"]; - deserializer.deserialize_struct("ExternalDriveBackupEligibilityStatus", VARIANTS, EnumVisitor) + deserializer.deserialize_struct("FileResolveCommentDetails", FILE_RESOLVE_COMMENT_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for ExternalDriveBackupEligibilityStatus { +impl ::serde::ser::Serialize for FileResolveCommentDetails { fn serialize(&self, serializer: S) -> Result { - // union serializer + // struct serializer use serde::ser::SerializeStruct; - match self { - ExternalDriveBackupEligibilityStatus::ExceedLicenseCap => { - // unit - let mut s = serializer.serialize_struct("ExternalDriveBackupEligibilityStatus", 1)?; - s.serialize_field(".tag", "exceed_license_cap")?; - s.end() - } - ExternalDriveBackupEligibilityStatus::Success => { - // unit - let mut s = serializer.serialize_struct("ExternalDriveBackupEligibilityStatus", 1)?; - s.serialize_field(".tag", "success")?; - s.end() - } - ExternalDriveBackupEligibilityStatus::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) - } + let mut s = serializer.serialize_struct("FileResolveCommentDetails", 1)?; + self.internal_serialize::(&mut s)?; + s.end() } } -/// Checked external drive backup eligibility status. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct ExternalDriveBackupEligibilityStatusCheckedDetails { - /// Device's session logged information. - pub desktop_device_session_info: DesktopDeviceSessionLogInfo, - /// Current eligibility status of external drive backup. - pub status: ExternalDriveBackupEligibilityStatus, - /// Total number of valid external drive backup for all the team members. - pub number_of_external_drive_backup: u64, +pub struct FileResolveCommentType { + pub description: String, } -impl ExternalDriveBackupEligibilityStatusCheckedDetails { - pub fn new( - desktop_device_session_info: DesktopDeviceSessionLogInfo, - status: ExternalDriveBackupEligibilityStatus, - number_of_external_drive_backup: u64, - ) -> Self { - ExternalDriveBackupEligibilityStatusCheckedDetails { - desktop_device_session_info, - status, - number_of_external_drive_backup, +impl FileResolveCommentType { + pub fn new(description: String) -> Self { + FileResolveCommentType { + description, } } } -const EXTERNAL_DRIVE_BACKUP_ELIGIBILITY_STATUS_CHECKED_DETAILS_FIELDS: &[&str] = &["desktop_device_session_info", - "status", - "number_of_external_drive_backup"]; -impl ExternalDriveBackupEligibilityStatusCheckedDetails { +const FILE_RESOLVE_COMMENT_TYPE_FIELDS: &[&str] = &["description"]; +impl FileResolveCommentType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_desktop_device_session_info = None; - let mut field_status = None; - let mut field_number_of_external_drive_backup = None; + ) -> Result, V::Error> { + let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "desktop_device_session_info" => { - if field_desktop_device_session_info.is_some() { - return Err(::serde::de::Error::duplicate_field("desktop_device_session_info")); - } - field_desktop_device_session_info = Some(map.next_value()?); - } - "status" => { - if field_status.is_some() { - return Err(::serde::de::Error::duplicate_field("status")); - } - field_status = Some(map.next_value()?); - } - "number_of_external_drive_backup" => { - if field_number_of_external_drive_backup.is_some() { - return Err(::serde::de::Error::duplicate_field("number_of_external_drive_backup")); + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); } - field_number_of_external_drive_backup = Some(map.next_value()?); + field_description = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -37023,10 +58011,8 @@ impl ExternalDriveBackupEligibilityStatusCheckedDetails { if optional && nothing { return Ok(None); } - let result = ExternalDriveBackupEligibilityStatusCheckedDetails { - desktop_device_session_info: field_desktop_device_session_info.ok_or_else(|| ::serde::de::Error::missing_field("desktop_device_session_info"))?, - status: field_status.ok_or_else(|| ::serde::de::Error::missing_field("status"))?, - number_of_external_drive_backup: field_number_of_external_drive_backup.ok_or_else(|| ::serde::de::Error::missing_field("number_of_external_drive_backup"))?, + let result = FileResolveCommentType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) } @@ -37036,67 +58022,109 @@ impl ExternalDriveBackupEligibilityStatusCheckedDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("desktop_device_session_info", &self.desktop_device_session_info)?; - s.serialize_field("status", &self.status)?; - s.serialize_field("number_of_external_drive_backup", &self.number_of_external_drive_backup)?; + s.serialize_field("description", &self.description)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for ExternalDriveBackupEligibilityStatusCheckedDetails { +impl<'de> ::serde::de::Deserialize<'de> for FileResolveCommentType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = ExternalDriveBackupEligibilityStatusCheckedDetails; + type Value = FileResolveCommentType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a ExternalDriveBackupEligibilityStatusCheckedDetails struct") + f.write_str("a FileResolveCommentType struct") } fn visit_map>(self, map: V) -> Result { - ExternalDriveBackupEligibilityStatusCheckedDetails::internal_deserialize(map) + FileResolveCommentType::internal_deserialize(map) } } - deserializer.deserialize_struct("ExternalDriveBackupEligibilityStatusCheckedDetails", EXTERNAL_DRIVE_BACKUP_ELIGIBILITY_STATUS_CHECKED_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("FileResolveCommentType", FILE_RESOLVE_COMMENT_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for ExternalDriveBackupEligibilityStatusCheckedDetails { +impl ::serde::ser::Serialize for FileResolveCommentType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("ExternalDriveBackupEligibilityStatusCheckedDetails", 3)?; + let mut s = serializer.serialize_struct("FileResolveCommentType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } +/// Restored deleted files and/or folders. +#[derive(Debug, Clone, PartialEq, Eq, Default)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct FileRestoreDetails { +} + +const FILE_RESTORE_DETAILS_FIELDS: &[&str] = &[]; +impl FileRestoreDetails { + // no _opt deserializer + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + ) -> Result { + // ignore any fields found; none are presently recognized + crate::eat_json_fields(&mut map)?; + Ok(FileRestoreDetails {}) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for FileRestoreDetails { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = FileRestoreDetails; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a FileRestoreDetails struct") + } + fn visit_map>(self, map: V) -> Result { + FileRestoreDetails::internal_deserialize(map) + } + } + deserializer.deserialize_struct("FileRestoreDetails", FILE_RESTORE_DETAILS_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for FileRestoreDetails { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + serializer.serialize_struct("FileRestoreDetails", 0)?.end() + } +} + #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct ExternalDriveBackupEligibilityStatusCheckedType { +pub struct FileRestoreType { pub description: String, } -impl ExternalDriveBackupEligibilityStatusCheckedType { +impl FileRestoreType { pub fn new(description: String) -> Self { - ExternalDriveBackupEligibilityStatusCheckedType { + FileRestoreType { description, } } } -const EXTERNAL_DRIVE_BACKUP_ELIGIBILITY_STATUS_CHECKED_TYPE_FIELDS: &[&str] = &["description"]; -impl ExternalDriveBackupEligibilityStatusCheckedType { +const FILE_RESTORE_TYPE_FIELDS: &[&str] = &["description"]; +impl FileRestoreType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -37117,7 +58145,7 @@ impl ExternalDriveBackupEligibilityStatusCheckedType { if optional && nothing { return Ok(None); } - let result = ExternalDriveBackupEligibilityStatusCheckedType { + let result = FileRestoreType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -37133,159 +58161,114 @@ impl ExternalDriveBackupEligibilityStatusCheckedType { } } -impl<'de> ::serde::de::Deserialize<'de> for ExternalDriveBackupEligibilityStatusCheckedType { +impl<'de> ::serde::de::Deserialize<'de> for FileRestoreType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = ExternalDriveBackupEligibilityStatusCheckedType; + type Value = FileRestoreType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a ExternalDriveBackupEligibilityStatusCheckedType struct") + f.write_str("a FileRestoreType struct") } fn visit_map>(self, map: V) -> Result { - ExternalDriveBackupEligibilityStatusCheckedType::internal_deserialize(map) + FileRestoreType::internal_deserialize(map) } } - deserializer.deserialize_struct("ExternalDriveBackupEligibilityStatusCheckedType", EXTERNAL_DRIVE_BACKUP_ELIGIBILITY_STATUS_CHECKED_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("FileRestoreType", FILE_RESTORE_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for ExternalDriveBackupEligibilityStatusCheckedType { +impl ::serde::ser::Serialize for FileRestoreType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("ExternalDriveBackupEligibilityStatusCheckedType", 1)?; + let mut s = serializer.serialize_struct("FileRestoreType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Policy for controlling team access to external drive backup feature -#[derive(Debug, Clone, PartialEq, Eq)] -#[non_exhaustive] // variants may be added in the future -pub enum ExternalDriveBackupPolicy { - Default, - Disabled, - Enabled, - /// Catch-all used for unrecognized values returned from the server. Encountering this value - /// typically indicates that this SDK version is out of date. - Other, +/// Reverted files to previous version. +#[derive(Debug, Clone, PartialEq, Eq, Default)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct FileRevertDetails { } -impl<'de> ::serde::de::Deserialize<'de> for ExternalDriveBackupPolicy { +const FILE_REVERT_DETAILS_FIELDS: &[&str] = &[]; +impl FileRevertDetails { + // no _opt deserializer + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + ) -> Result { + // ignore any fields found; none are presently recognized + crate::eat_json_fields(&mut map)?; + Ok(FileRevertDetails {}) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for FileRevertDetails { fn deserialize>(deserializer: D) -> Result { - // union deserializer - use serde::de::{self, MapAccess, Visitor}; - struct EnumVisitor; - impl<'de> Visitor<'de> for EnumVisitor { - type Value = ExternalDriveBackupPolicy; + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = FileRevertDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a ExternalDriveBackupPolicy structure") + f.write_str("a FileRevertDetails struct") } - fn visit_map>(self, mut map: V) -> Result { - let tag: &str = match map.next_key()? { - Some(".tag") => map.next_value()?, - _ => return Err(de::Error::missing_field(".tag")) - }; - let value = match tag { - "default" => ExternalDriveBackupPolicy::Default, - "disabled" => ExternalDriveBackupPolicy::Disabled, - "enabled" => ExternalDriveBackupPolicy::Enabled, - _ => ExternalDriveBackupPolicy::Other, - }; - crate::eat_json_fields(&mut map)?; - Ok(value) + fn visit_map>(self, map: V) -> Result { + FileRevertDetails::internal_deserialize(map) } } - const VARIANTS: &[&str] = &["default", - "disabled", - "enabled", - "other"]; - deserializer.deserialize_struct("ExternalDriveBackupPolicy", VARIANTS, EnumVisitor) + deserializer.deserialize_struct("FileRevertDetails", FILE_REVERT_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for ExternalDriveBackupPolicy { +impl ::serde::ser::Serialize for FileRevertDetails { fn serialize(&self, serializer: S) -> Result { - // union serializer + // struct serializer use serde::ser::SerializeStruct; - match self { - ExternalDriveBackupPolicy::Default => { - // unit - let mut s = serializer.serialize_struct("ExternalDriveBackupPolicy", 1)?; - s.serialize_field(".tag", "default")?; - s.end() - } - ExternalDriveBackupPolicy::Disabled => { - // unit - let mut s = serializer.serialize_struct("ExternalDriveBackupPolicy", 1)?; - s.serialize_field(".tag", "disabled")?; - s.end() - } - ExternalDriveBackupPolicy::Enabled => { - // unit - let mut s = serializer.serialize_struct("ExternalDriveBackupPolicy", 1)?; - s.serialize_field(".tag", "enabled")?; - s.end() - } - ExternalDriveBackupPolicy::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) - } + serializer.serialize_struct("FileRevertDetails", 0)?.end() } } -/// Changed external drive backup policy for team. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct ExternalDriveBackupPolicyChangedDetails { - /// New external drive backup policy. - pub new_value: ExternalDriveBackupPolicy, - /// Previous external drive backup policy. - pub previous_value: ExternalDriveBackupPolicy, +pub struct FileRevertType { + pub description: String, } -impl ExternalDriveBackupPolicyChangedDetails { - pub fn new( - new_value: ExternalDriveBackupPolicy, - previous_value: ExternalDriveBackupPolicy, - ) -> Self { - ExternalDriveBackupPolicyChangedDetails { - new_value, - previous_value, +impl FileRevertType { + pub fn new(description: String) -> Self { + FileRevertType { + description, } } } -const EXTERNAL_DRIVE_BACKUP_POLICY_CHANGED_DETAILS_FIELDS: &[&str] = &["new_value", - "previous_value"]; -impl ExternalDriveBackupPolicyChangedDetails { +const FILE_REVERT_TYPE_FIELDS: &[&str] = &["description"]; +impl FileRevertType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_new_value = None; - let mut field_previous_value = None; + ) -> Result, V::Error> { + let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "new_value" => { - if field_new_value.is_some() { - return Err(::serde::de::Error::duplicate_field("new_value")); - } - field_new_value = Some(map.next_value()?); - } - "previous_value" => { - if field_previous_value.is_some() { - return Err(::serde::de::Error::duplicate_field("previous_value")); + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); } - field_previous_value = Some(map.next_value()?); + field_description = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -37296,78 +58279,120 @@ impl ExternalDriveBackupPolicyChangedDetails { if optional && nothing { return Ok(None); } - let result = ExternalDriveBackupPolicyChangedDetails { - new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, - previous_value: field_previous_value.ok_or_else(|| ::serde::de::Error::missing_field("previous_value"))?, + let result = FileRevertType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) } - pub(crate) fn internal_serialize( - &self, - s: &mut S::SerializeStruct, - ) -> Result<(), S::Error> { - use serde::ser::SerializeStruct; - s.serialize_field("new_value", &self.new_value)?; - s.serialize_field("previous_value", &self.previous_value)?; - Ok(()) + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("description", &self.description)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for FileRevertType { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = FileRevertType; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a FileRevertType struct") + } + fn visit_map>(self, map: V) -> Result { + FileRevertType::internal_deserialize(map) + } + } + deserializer.deserialize_struct("FileRevertType", FILE_REVERT_TYPE_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for FileRevertType { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("FileRevertType", 1)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +/// Rolled back file actions. +#[derive(Debug, Clone, PartialEq, Eq, Default)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct FileRollbackChangesDetails { +} + +const FILE_ROLLBACK_CHANGES_DETAILS_FIELDS: &[&str] = &[]; +impl FileRollbackChangesDetails { + // no _opt deserializer + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + ) -> Result { + // ignore any fields found; none are presently recognized + crate::eat_json_fields(&mut map)?; + Ok(FileRollbackChangesDetails {}) } } -impl<'de> ::serde::de::Deserialize<'de> for ExternalDriveBackupPolicyChangedDetails { +impl<'de> ::serde::de::Deserialize<'de> for FileRollbackChangesDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = ExternalDriveBackupPolicyChangedDetails; + type Value = FileRollbackChangesDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a ExternalDriveBackupPolicyChangedDetails struct") + f.write_str("a FileRollbackChangesDetails struct") } fn visit_map>(self, map: V) -> Result { - ExternalDriveBackupPolicyChangedDetails::internal_deserialize(map) + FileRollbackChangesDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("ExternalDriveBackupPolicyChangedDetails", EXTERNAL_DRIVE_BACKUP_POLICY_CHANGED_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("FileRollbackChangesDetails", FILE_ROLLBACK_CHANGES_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for ExternalDriveBackupPolicyChangedDetails { +impl ::serde::ser::Serialize for FileRollbackChangesDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("ExternalDriveBackupPolicyChangedDetails", 2)?; - self.internal_serialize::(&mut s)?; - s.end() + serializer.serialize_struct("FileRollbackChangesDetails", 0)?.end() } } #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct ExternalDriveBackupPolicyChangedType { +pub struct FileRollbackChangesType { pub description: String, } -impl ExternalDriveBackupPolicyChangedType { +impl FileRollbackChangesType { pub fn new(description: String) -> Self { - ExternalDriveBackupPolicyChangedType { + FileRollbackChangesType { description, } } } -const EXTERNAL_DRIVE_BACKUP_POLICY_CHANGED_TYPE_FIELDS: &[&str] = &["description"]; -impl ExternalDriveBackupPolicyChangedType { +const FILE_ROLLBACK_CHANGES_TYPE_FIELDS: &[&str] = &["description"]; +impl FileRollbackChangesType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -37388,7 +58413,7 @@ impl ExternalDriveBackupPolicyChangedType { if optional && nothing { return Ok(None); } - let result = ExternalDriveBackupPolicyChangedType { + let result = FileRollbackChangesType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -37404,198 +58429,72 @@ impl ExternalDriveBackupPolicyChangedType { } } -impl<'de> ::serde::de::Deserialize<'de> for ExternalDriveBackupPolicyChangedType { +impl<'de> ::serde::de::Deserialize<'de> for FileRollbackChangesType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = ExternalDriveBackupPolicyChangedType; + type Value = FileRollbackChangesType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a ExternalDriveBackupPolicyChangedType struct") + f.write_str("a FileRollbackChangesType struct") } fn visit_map>(self, map: V) -> Result { - ExternalDriveBackupPolicyChangedType::internal_deserialize(map) + FileRollbackChangesType::internal_deserialize(map) } } - deserializer.deserialize_struct("ExternalDriveBackupPolicyChangedType", EXTERNAL_DRIVE_BACKUP_POLICY_CHANGED_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("FileRollbackChangesType", FILE_ROLLBACK_CHANGES_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for ExternalDriveBackupPolicyChangedType { +impl ::serde::ser::Serialize for FileRollbackChangesType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("ExternalDriveBackupPolicyChangedType", 1)?; + let mut s = serializer.serialize_struct("FileRollbackChangesType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// External Drive Backup status -#[derive(Debug, Clone, PartialEq, Eq)] -#[non_exhaustive] // variants may be added in the future -pub enum ExternalDriveBackupStatus { - Broken, - Created, - CreatedOrBroken, - Deleted, - Empty, - Unknown, - /// Catch-all used for unrecognized values returned from the server. Encountering this value - /// typically indicates that this SDK version is out of date. - Other, -} - -impl<'de> ::serde::de::Deserialize<'de> for ExternalDriveBackupStatus { - fn deserialize>(deserializer: D) -> Result { - // union deserializer - use serde::de::{self, MapAccess, Visitor}; - struct EnumVisitor; - impl<'de> Visitor<'de> for EnumVisitor { - type Value = ExternalDriveBackupStatus; - fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a ExternalDriveBackupStatus structure") - } - fn visit_map>(self, mut map: V) -> Result { - let tag: &str = match map.next_key()? { - Some(".tag") => map.next_value()?, - _ => return Err(de::Error::missing_field(".tag")) - }; - let value = match tag { - "broken" => ExternalDriveBackupStatus::Broken, - "created" => ExternalDriveBackupStatus::Created, - "created_or_broken" => ExternalDriveBackupStatus::CreatedOrBroken, - "deleted" => ExternalDriveBackupStatus::Deleted, - "empty" => ExternalDriveBackupStatus::Empty, - "unknown" => ExternalDriveBackupStatus::Unknown, - _ => ExternalDriveBackupStatus::Other, - }; - crate::eat_json_fields(&mut map)?; - Ok(value) - } - } - const VARIANTS: &[&str] = &["broken", - "created", - "created_or_broken", - "deleted", - "empty", - "unknown", - "other"]; - deserializer.deserialize_struct("ExternalDriveBackupStatus", VARIANTS, EnumVisitor) - } -} - -impl ::serde::ser::Serialize for ExternalDriveBackupStatus { - fn serialize(&self, serializer: S) -> Result { - // union serializer - use serde::ser::SerializeStruct; - match self { - ExternalDriveBackupStatus::Broken => { - // unit - let mut s = serializer.serialize_struct("ExternalDriveBackupStatus", 1)?; - s.serialize_field(".tag", "broken")?; - s.end() - } - ExternalDriveBackupStatus::Created => { - // unit - let mut s = serializer.serialize_struct("ExternalDriveBackupStatus", 1)?; - s.serialize_field(".tag", "created")?; - s.end() - } - ExternalDriveBackupStatus::CreatedOrBroken => { - // unit - let mut s = serializer.serialize_struct("ExternalDriveBackupStatus", 1)?; - s.serialize_field(".tag", "created_or_broken")?; - s.end() - } - ExternalDriveBackupStatus::Deleted => { - // unit - let mut s = serializer.serialize_struct("ExternalDriveBackupStatus", 1)?; - s.serialize_field(".tag", "deleted")?; - s.end() - } - ExternalDriveBackupStatus::Empty => { - // unit - let mut s = serializer.serialize_struct("ExternalDriveBackupStatus", 1)?; - s.serialize_field(".tag", "empty")?; - s.end() - } - ExternalDriveBackupStatus::Unknown => { - // unit - let mut s = serializer.serialize_struct("ExternalDriveBackupStatus", 1)?; - s.serialize_field(".tag", "unknown")?; - s.end() - } - ExternalDriveBackupStatus::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) - } - } -} - -/// Modified external drive backup. +/// Saved file/folder using copy reference. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct ExternalDriveBackupStatusChangedDetails { - /// Device's session logged information. - pub desktop_device_session_info: DesktopDeviceSessionLogInfo, - /// Previous status of this external drive backup. - pub previous_value: ExternalDriveBackupStatus, - /// Next status of this external drive backup. - pub new_value: ExternalDriveBackupStatus, +pub struct FileSaveCopyReferenceDetails { + /// Relocate action details. + pub relocate_action_details: Vec, } -impl ExternalDriveBackupStatusChangedDetails { - pub fn new( - desktop_device_session_info: DesktopDeviceSessionLogInfo, - previous_value: ExternalDriveBackupStatus, - new_value: ExternalDriveBackupStatus, - ) -> Self { - ExternalDriveBackupStatusChangedDetails { - desktop_device_session_info, - previous_value, - new_value, +impl FileSaveCopyReferenceDetails { + pub fn new(relocate_action_details: Vec) -> Self { + FileSaveCopyReferenceDetails { + relocate_action_details, } } } -const EXTERNAL_DRIVE_BACKUP_STATUS_CHANGED_DETAILS_FIELDS: &[&str] = &["desktop_device_session_info", - "previous_value", - "new_value"]; -impl ExternalDriveBackupStatusChangedDetails { +const FILE_SAVE_COPY_REFERENCE_DETAILS_FIELDS: &[&str] = &["relocate_action_details"]; +impl FileSaveCopyReferenceDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_desktop_device_session_info = None; - let mut field_previous_value = None; - let mut field_new_value = None; + ) -> Result, V::Error> { + let mut field_relocate_action_details = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "desktop_device_session_info" => { - if field_desktop_device_session_info.is_some() { - return Err(::serde::de::Error::duplicate_field("desktop_device_session_info")); - } - field_desktop_device_session_info = Some(map.next_value()?); - } - "previous_value" => { - if field_previous_value.is_some() { - return Err(::serde::de::Error::duplicate_field("previous_value")); - } - field_previous_value = Some(map.next_value()?); - } - "new_value" => { - if field_new_value.is_some() { - return Err(::serde::de::Error::duplicate_field("new_value")); + "relocate_action_details" => { + if field_relocate_action_details.is_some() { + return Err(::serde::de::Error::duplicate_field("relocate_action_details")); } - field_new_value = Some(map.next_value()?); + field_relocate_action_details = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -37606,10 +58505,8 @@ impl ExternalDriveBackupStatusChangedDetails { if optional && nothing { return Ok(None); } - let result = ExternalDriveBackupStatusChangedDetails { - desktop_device_session_info: field_desktop_device_session_info.ok_or_else(|| ::serde::de::Error::missing_field("desktop_device_session_info"))?, - previous_value: field_previous_value.ok_or_else(|| ::serde::de::Error::missing_field("previous_value"))?, - new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, + let result = FileSaveCopyReferenceDetails { + relocate_action_details: field_relocate_action_details.ok_or_else(|| ::serde::de::Error::missing_field("relocate_action_details"))?, }; Ok(Some(result)) } @@ -37619,36 +58516,34 @@ impl ExternalDriveBackupStatusChangedDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("desktop_device_session_info", &self.desktop_device_session_info)?; - s.serialize_field("previous_value", &self.previous_value)?; - s.serialize_field("new_value", &self.new_value)?; + s.serialize_field("relocate_action_details", &self.relocate_action_details)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for ExternalDriveBackupStatusChangedDetails { +impl<'de> ::serde::de::Deserialize<'de> for FileSaveCopyReferenceDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = ExternalDriveBackupStatusChangedDetails; + type Value = FileSaveCopyReferenceDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a ExternalDriveBackupStatusChangedDetails struct") + f.write_str("a FileSaveCopyReferenceDetails struct") } fn visit_map>(self, map: V) -> Result { - ExternalDriveBackupStatusChangedDetails::internal_deserialize(map) + FileSaveCopyReferenceDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("ExternalDriveBackupStatusChangedDetails", EXTERNAL_DRIVE_BACKUP_STATUS_CHANGED_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("FileSaveCopyReferenceDetails", FILE_SAVE_COPY_REFERENCE_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for ExternalDriveBackupStatusChangedDetails { +impl ::serde::ser::Serialize for FileSaveCopyReferenceDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("ExternalDriveBackupStatusChangedDetails", 3)?; + let mut s = serializer.serialize_struct("FileSaveCopyReferenceDetails", 1)?; self.internal_serialize::(&mut s)?; s.end() } @@ -37656,30 +58551,30 @@ impl ::serde::ser::Serialize for ExternalDriveBackupStatusChangedDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct ExternalDriveBackupStatusChangedType { +pub struct FileSaveCopyReferenceType { pub description: String, } -impl ExternalDriveBackupStatusChangedType { +impl FileSaveCopyReferenceType { pub fn new(description: String) -> Self { - ExternalDriveBackupStatusChangedType { + FileSaveCopyReferenceType { description, } } } -const EXTERNAL_DRIVE_BACKUP_STATUS_CHANGED_TYPE_FIELDS: &[&str] = &["description"]; -impl ExternalDriveBackupStatusChangedType { +const FILE_SAVE_COPY_REFERENCE_TYPE_FIELDS: &[&str] = &["description"]; +impl FileSaveCopyReferenceType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -37700,7 +58595,7 @@ impl ExternalDriveBackupStatusChangedType { if optional && nothing { return Ok(None); } - let result = ExternalDriveBackupStatusChangedType { + let result = FileSaveCopyReferenceType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -37716,104 +58611,152 @@ impl ExternalDriveBackupStatusChangedType { } } -impl<'de> ::serde::de::Deserialize<'de> for ExternalDriveBackupStatusChangedType { +impl<'de> ::serde::de::Deserialize<'de> for FileSaveCopyReferenceType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = ExternalDriveBackupStatusChangedType; + type Value = FileSaveCopyReferenceType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a ExternalDriveBackupStatusChangedType struct") + f.write_str("a FileSaveCopyReferenceType struct") } fn visit_map>(self, map: V) -> Result { - ExternalDriveBackupStatusChangedType::internal_deserialize(map) + FileSaveCopyReferenceType::internal_deserialize(map) } } - deserializer.deserialize_struct("ExternalDriveBackupStatusChangedType", EXTERNAL_DRIVE_BACKUP_STATUS_CHANGED_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("FileSaveCopyReferenceType", FILE_SAVE_COPY_REFERENCE_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for ExternalDriveBackupStatusChangedType { +impl ::serde::ser::Serialize for FileSaveCopyReferenceType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("ExternalDriveBackupStatusChangedType", 1)?; + let mut s = serializer.serialize_struct("FileSaveCopyReferenceType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Created External sharing report. -#[derive(Debug, Clone, PartialEq, Eq, Default)] +/// Transfer files added. +#[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct ExternalSharingCreateReportDetails { +pub struct FileTransfersFileAddDetails { + /// Transfer id. + pub file_transfer_id: String, } -const EXTERNAL_SHARING_CREATE_REPORT_DETAILS_FIELDS: &[&str] = &[]; -impl ExternalSharingCreateReportDetails { - // no _opt deserializer +impl FileTransfersFileAddDetails { + pub fn new(file_transfer_id: String) -> Self { + FileTransfersFileAddDetails { + file_transfer_id, + } + } +} + +const FILE_TRANSFERS_FILE_ADD_DETAILS_FIELDS: &[&str] = &["file_transfer_id"]; +impl FileTransfersFileAddDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - ) -> Result { - // ignore any fields found; none are presently recognized - crate::eat_json_fields(&mut map)?; - Ok(ExternalSharingCreateReportDetails {}) + optional: bool, + ) -> Result, V::Error> { + let mut field_file_transfer_id = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "file_transfer_id" => { + if field_file_transfer_id.is_some() { + return Err(::serde::de::Error::duplicate_field("file_transfer_id")); + } + field_file_transfer_id = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } + } + } + if optional && nothing { + return Ok(None); + } + let result = FileTransfersFileAddDetails { + file_transfer_id: field_file_transfer_id.ok_or_else(|| ::serde::de::Error::missing_field("file_transfer_id"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("file_transfer_id", &self.file_transfer_id)?; + Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for ExternalSharingCreateReportDetails { +impl<'de> ::serde::de::Deserialize<'de> for FileTransfersFileAddDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = ExternalSharingCreateReportDetails; + type Value = FileTransfersFileAddDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a ExternalSharingCreateReportDetails struct") + f.write_str("a FileTransfersFileAddDetails struct") } fn visit_map>(self, map: V) -> Result { - ExternalSharingCreateReportDetails::internal_deserialize(map) + FileTransfersFileAddDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("ExternalSharingCreateReportDetails", EXTERNAL_SHARING_CREATE_REPORT_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("FileTransfersFileAddDetails", FILE_TRANSFERS_FILE_ADD_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for ExternalSharingCreateReportDetails { +impl ::serde::ser::Serialize for FileTransfersFileAddDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - serializer.serialize_struct("ExternalSharingCreateReportDetails", 0)?.end() + let mut s = serializer.serialize_struct("FileTransfersFileAddDetails", 1)?; + self.internal_serialize::(&mut s)?; + s.end() } } #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct ExternalSharingCreateReportType { +pub struct FileTransfersFileAddType { pub description: String, } -impl ExternalSharingCreateReportType { +impl FileTransfersFileAddType { pub fn new(description: String) -> Self { - ExternalSharingCreateReportType { + FileTransfersFileAddType { description, } } } -const EXTERNAL_SHARING_CREATE_REPORT_TYPE_FIELDS: &[&str] = &["description"]; -impl ExternalSharingCreateReportType { +const FILE_TRANSFERS_FILE_ADD_TYPE_FIELDS: &[&str] = &["description"]; +impl FileTransfersFileAddType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -37834,7 +58777,7 @@ impl ExternalSharingCreateReportType { if optional && nothing { return Ok(None); } - let result = ExternalSharingCreateReportType { + let result = FileTransfersFileAddType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -37850,72 +58793,147 @@ impl ExternalSharingCreateReportType { } } -impl<'de> ::serde::de::Deserialize<'de> for ExternalSharingCreateReportType { +impl<'de> ::serde::de::Deserialize<'de> for FileTransfersFileAddType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = ExternalSharingCreateReportType; + type Value = FileTransfersFileAddType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a ExternalSharingCreateReportType struct") + f.write_str("a FileTransfersFileAddType struct") } fn visit_map>(self, map: V) -> Result { - ExternalSharingCreateReportType::internal_deserialize(map) + FileTransfersFileAddType::internal_deserialize(map) } } - deserializer.deserialize_struct("ExternalSharingCreateReportType", EXTERNAL_SHARING_CREATE_REPORT_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("FileTransfersFileAddType", FILE_TRANSFERS_FILE_ADD_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for ExternalSharingCreateReportType { +impl ::serde::ser::Serialize for FileTransfersFileAddType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("ExternalSharingCreateReportType", 1)?; + let mut s = serializer.serialize_struct("FileTransfersFileAddType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Couldn't create External sharing report. +/// File transfers policy +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // variants may be added in the future +pub enum FileTransfersPolicy { + Disabled, + Enabled, + /// Catch-all used for unrecognized values returned from the server. Encountering this value + /// typically indicates that this SDK version is out of date. + Other, +} + +impl<'de> ::serde::de::Deserialize<'de> for FileTransfersPolicy { + fn deserialize>(deserializer: D) -> Result { + // union deserializer + use serde::de::{self, MapAccess, Visitor}; + struct EnumVisitor; + impl<'de> Visitor<'de> for EnumVisitor { + type Value = FileTransfersPolicy; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a FileTransfersPolicy structure") + } + fn visit_map>(self, mut map: V) -> Result { + let tag: &str = match map.next_key()? { + Some(".tag") => map.next_value()?, + _ => return Err(de::Error::missing_field(".tag")) + }; + let value = match tag { + "disabled" => FileTransfersPolicy::Disabled, + "enabled" => FileTransfersPolicy::Enabled, + _ => FileTransfersPolicy::Other, + }; + crate::eat_json_fields(&mut map)?; + Ok(value) + } + } + const VARIANTS: &[&str] = &["disabled", + "enabled", + "other"]; + deserializer.deserialize_struct("FileTransfersPolicy", VARIANTS, EnumVisitor) + } +} + +impl ::serde::ser::Serialize for FileTransfersPolicy { + fn serialize(&self, serializer: S) -> Result { + // union serializer + use serde::ser::SerializeStruct; + match self { + FileTransfersPolicy::Disabled => { + // unit + let mut s = serializer.serialize_struct("FileTransfersPolicy", 1)?; + s.serialize_field(".tag", "disabled")?; + s.end() + } + FileTransfersPolicy::Enabled => { + // unit + let mut s = serializer.serialize_struct("FileTransfersPolicy", 1)?; + s.serialize_field(".tag", "enabled")?; + s.end() + } + FileTransfersPolicy::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) + } + } +} + +/// Changed file transfers policy for team. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct ExternalSharingReportFailedDetails { - /// Failure reason. - pub failure_reason: crate::types::team::TeamReportFailureReason, +pub struct FileTransfersPolicyChangedDetails { + /// New file transfers policy. + pub new_value: FileTransfersPolicy, + /// Previous file transfers policy. + pub previous_value: FileTransfersPolicy, } -impl ExternalSharingReportFailedDetails { - pub fn new(failure_reason: crate::types::team::TeamReportFailureReason) -> Self { - ExternalSharingReportFailedDetails { - failure_reason, +impl FileTransfersPolicyChangedDetails { + pub fn new(new_value: FileTransfersPolicy, previous_value: FileTransfersPolicy) -> Self { + FileTransfersPolicyChangedDetails { + new_value, + previous_value, } } } -const EXTERNAL_SHARING_REPORT_FAILED_DETAILS_FIELDS: &[&str] = &["failure_reason"]; -impl ExternalSharingReportFailedDetails { +const FILE_TRANSFERS_POLICY_CHANGED_DETAILS_FIELDS: &[&str] = &["new_value", + "previous_value"]; +impl FileTransfersPolicyChangedDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_failure_reason = None; + ) -> Result, V::Error> { + let mut field_new_value = None; + let mut field_previous_value = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "failure_reason" => { - if field_failure_reason.is_some() { - return Err(::serde::de::Error::duplicate_field("failure_reason")); + "new_value" => { + if field_new_value.is_some() { + return Err(::serde::de::Error::duplicate_field("new_value")); } - field_failure_reason = Some(map.next_value()?); + field_new_value = Some(map.next_value()?); + } + "previous_value" => { + if field_previous_value.is_some() { + return Err(::serde::de::Error::duplicate_field("previous_value")); + } + field_previous_value = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -37926,8 +58944,9 @@ impl ExternalSharingReportFailedDetails { if optional && nothing { return Ok(None); } - let result = ExternalSharingReportFailedDetails { - failure_reason: field_failure_reason.ok_or_else(|| ::serde::de::Error::missing_field("failure_reason"))?, + let result = FileTransfersPolicyChangedDetails { + new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, + previous_value: field_previous_value.ok_or_else(|| ::serde::de::Error::missing_field("previous_value"))?, }; Ok(Some(result)) } @@ -37937,34 +58956,35 @@ impl ExternalSharingReportFailedDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("failure_reason", &self.failure_reason)?; + s.serialize_field("new_value", &self.new_value)?; + s.serialize_field("previous_value", &self.previous_value)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for ExternalSharingReportFailedDetails { +impl<'de> ::serde::de::Deserialize<'de> for FileTransfersPolicyChangedDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = ExternalSharingReportFailedDetails; + type Value = FileTransfersPolicyChangedDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a ExternalSharingReportFailedDetails struct") + f.write_str("a FileTransfersPolicyChangedDetails struct") } fn visit_map>(self, map: V) -> Result { - ExternalSharingReportFailedDetails::internal_deserialize(map) + FileTransfersPolicyChangedDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("ExternalSharingReportFailedDetails", EXTERNAL_SHARING_REPORT_FAILED_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("FileTransfersPolicyChangedDetails", FILE_TRANSFERS_POLICY_CHANGED_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for ExternalSharingReportFailedDetails { +impl ::serde::ser::Serialize for FileTransfersPolicyChangedDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("ExternalSharingReportFailedDetails", 1)?; + let mut s = serializer.serialize_struct("FileTransfersPolicyChangedDetails", 2)?; self.internal_serialize::(&mut s)?; s.end() } @@ -37972,30 +58992,30 @@ impl ::serde::ser::Serialize for ExternalSharingReportFailedDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct ExternalSharingReportFailedType { +pub struct FileTransfersPolicyChangedType { pub description: String, } -impl ExternalSharingReportFailedType { +impl FileTransfersPolicyChangedType { pub fn new(description: String) -> Self { - ExternalSharingReportFailedType { + FileTransfersPolicyChangedType { description, } } } -const EXTERNAL_SHARING_REPORT_FAILED_TYPE_FIELDS: &[&str] = &["description"]; -impl ExternalSharingReportFailedType { +const FILE_TRANSFERS_POLICY_CHANGED_TYPE_FIELDS: &[&str] = &["description"]; +impl FileTransfersPolicyChangedType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -38016,7 +59036,7 @@ impl ExternalSharingReportFailedType { if optional && nothing { return Ok(None); } - let result = ExternalSharingReportFailedType { + let result = FileTransfersPolicyChangedType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -38032,83 +59052,72 @@ impl ExternalSharingReportFailedType { } } -impl<'de> ::serde::de::Deserialize<'de> for ExternalSharingReportFailedType { +impl<'de> ::serde::de::Deserialize<'de> for FileTransfersPolicyChangedType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = ExternalSharingReportFailedType; + type Value = FileTransfersPolicyChangedType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a ExternalSharingReportFailedType struct") + f.write_str("a FileTransfersPolicyChangedType struct") } fn visit_map>(self, map: V) -> Result { - ExternalSharingReportFailedType::internal_deserialize(map) + FileTransfersPolicyChangedType::internal_deserialize(map) } } - deserializer.deserialize_struct("ExternalSharingReportFailedType", EXTERNAL_SHARING_REPORT_FAILED_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("FileTransfersPolicyChangedType", FILE_TRANSFERS_POLICY_CHANGED_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for ExternalSharingReportFailedType { +impl ::serde::ser::Serialize for FileTransfersPolicyChangedType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("ExternalSharingReportFailedType", 1)?; + let mut s = serializer.serialize_struct("FileTransfersPolicyChangedType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// A user without a Dropbox account. +/// Deleted transfer. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct ExternalUserLogInfo { - /// An external user identifier. - pub user_identifier: String, - /// Identifier type. - pub identifier_type: IdentifierType, +pub struct FileTransfersTransferDeleteDetails { + /// Transfer id. + pub file_transfer_id: String, } -impl ExternalUserLogInfo { - pub fn new(user_identifier: String, identifier_type: IdentifierType) -> Self { - ExternalUserLogInfo { - user_identifier, - identifier_type, +impl FileTransfersTransferDeleteDetails { + pub fn new(file_transfer_id: String) -> Self { + FileTransfersTransferDeleteDetails { + file_transfer_id, } } } -const EXTERNAL_USER_LOG_INFO_FIELDS: &[&str] = &["user_identifier", - "identifier_type"]; -impl ExternalUserLogInfo { +const FILE_TRANSFERS_TRANSFER_DELETE_DETAILS_FIELDS: &[&str] = &["file_transfer_id"]; +impl FileTransfersTransferDeleteDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_user_identifier = None; - let mut field_identifier_type = None; + ) -> Result, V::Error> { + let mut field_file_transfer_id = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "user_identifier" => { - if field_user_identifier.is_some() { - return Err(::serde::de::Error::duplicate_field("user_identifier")); - } - field_user_identifier = Some(map.next_value()?); - } - "identifier_type" => { - if field_identifier_type.is_some() { - return Err(::serde::de::Error::duplicate_field("identifier_type")); + "file_transfer_id" => { + if field_file_transfer_id.is_some() { + return Err(::serde::de::Error::duplicate_field("file_transfer_id")); } - field_identifier_type = Some(map.next_value()?); + field_file_transfer_id = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -38119,9 +59128,8 @@ impl ExternalUserLogInfo { if optional && nothing { return Ok(None); } - let result = ExternalUserLogInfo { - user_identifier: field_user_identifier.ok_or_else(|| ::serde::de::Error::missing_field("user_identifier"))?, - identifier_type: field_identifier_type.ok_or_else(|| ::serde::de::Error::missing_field("identifier_type"))?, + let result = FileTransfersTransferDeleteDetails { + file_transfer_id: field_file_transfer_id.ok_or_else(|| ::serde::de::Error::missing_field("file_transfer_id"))?, }; Ok(Some(result)) } @@ -38131,84 +59139,75 @@ impl ExternalUserLogInfo { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("user_identifier", &self.user_identifier)?; - s.serialize_field("identifier_type", &self.identifier_type)?; + s.serialize_field("file_transfer_id", &self.file_transfer_id)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for ExternalUserLogInfo { +impl<'de> ::serde::de::Deserialize<'de> for FileTransfersTransferDeleteDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = ExternalUserLogInfo; + type Value = FileTransfersTransferDeleteDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a ExternalUserLogInfo struct") + f.write_str("a FileTransfersTransferDeleteDetails struct") } fn visit_map>(self, map: V) -> Result { - ExternalUserLogInfo::internal_deserialize(map) + FileTransfersTransferDeleteDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("ExternalUserLogInfo", EXTERNAL_USER_LOG_INFO_FIELDS, StructVisitor) + deserializer.deserialize_struct("FileTransfersTransferDeleteDetails", FILE_TRANSFERS_TRANSFER_DELETE_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for ExternalUserLogInfo { +impl ::serde::ser::Serialize for FileTransfersTransferDeleteDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("ExternalUserLogInfo", 2)?; + let mut s = serializer.serialize_struct("FileTransfersTransferDeleteDetails", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Provides details about a failure -#[derive(Debug, Clone, PartialEq, Eq, Default)] +#[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct FailureDetailsLogInfo { - /// A user friendly explanation of the error. - pub user_friendly_message: Option, - /// A technical explanation of the error. This is relevant for some errors. - pub technical_error_message: Option, +pub struct FileTransfersTransferDeleteType { + pub description: String, } -impl FailureDetailsLogInfo { - pub fn with_user_friendly_message(mut self, value: String) -> Self { - self.user_friendly_message = Some(value); - self - } - - pub fn with_technical_error_message(mut self, value: String) -> Self { - self.technical_error_message = Some(value); - self +impl FileTransfersTransferDeleteType { + pub fn new(description: String) -> Self { + FileTransfersTransferDeleteType { + description, + } } } -const FAILURE_DETAILS_LOG_INFO_FIELDS: &[&str] = &["user_friendly_message", - "technical_error_message"]; -impl FailureDetailsLogInfo { - // no _opt deserializer +const FILE_TRANSFERS_TRANSFER_DELETE_TYPE_FIELDS: &[&str] = &["description"]; +impl FileTransfersTransferDeleteType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - ) -> Result { - let mut field_user_friendly_message = None; - let mut field_technical_error_message = None; + optional: bool, + ) -> Result, V::Error> { + let mut field_description = None; + let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { + nothing = false; match key { - "user_friendly_message" => { - if field_user_friendly_message.is_some() { - return Err(::serde::de::Error::duplicate_field("user_friendly_message")); - } - field_user_friendly_message = Some(map.next_value()?); - } - "technical_error_message" => { - if field_technical_error_message.is_some() { - return Err(::serde::de::Error::duplicate_field("technical_error_message")); + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); } - field_technical_error_message = Some(map.next_value()?); + field_description = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -38216,11 +59215,13 @@ impl FailureDetailsLogInfo { } } } - let result = FailureDetailsLogInfo { - user_friendly_message: field_user_friendly_message.and_then(Option::flatten), - technical_error_message: field_technical_error_message.and_then(Option::flatten), + if optional && nothing { + return Ok(None); + } + let result = FileTransfersTransferDeleteType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; - Ok(result) + Ok(Some(result)) } pub(crate) fn internal_serialize( @@ -38228,382 +59229,167 @@ impl FailureDetailsLogInfo { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - if let Some(val) = &self.user_friendly_message { - s.serialize_field("user_friendly_message", val)?; - } - if let Some(val) = &self.technical_error_message { - s.serialize_field("technical_error_message", val)?; - } + s.serialize_field("description", &self.description)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for FailureDetailsLogInfo { +impl<'de> ::serde::de::Deserialize<'de> for FileTransfersTransferDeleteType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = FailureDetailsLogInfo; + type Value = FileTransfersTransferDeleteType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a FailureDetailsLogInfo struct") + f.write_str("a FileTransfersTransferDeleteType struct") } fn visit_map>(self, map: V) -> Result { - FailureDetailsLogInfo::internal_deserialize(map) + FileTransfersTransferDeleteType::internal_deserialize(map) } } - deserializer.deserialize_struct("FailureDetailsLogInfo", FAILURE_DETAILS_LOG_INFO_FIELDS, StructVisitor) + deserializer.deserialize_struct("FileTransfersTransferDeleteType", FILE_TRANSFERS_TRANSFER_DELETE_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for FailureDetailsLogInfo { +impl ::serde::ser::Serialize for FileTransfersTransferDeleteType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("FailureDetailsLogInfo", 2)?; + let mut s = serializer.serialize_struct("FileTransfersTransferDeleteType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } +/// Transfer downloaded. #[derive(Debug, Clone, PartialEq, Eq)] -#[non_exhaustive] // variants may be added in the future -pub enum FedAdminRole { - EnterpriseAdmin, - NotEnterpriseAdmin, - /// Catch-all used for unrecognized values returned from the server. Encountering this value - /// typically indicates that this SDK version is out of date. - Other, -} - -impl<'de> ::serde::de::Deserialize<'de> for FedAdminRole { - fn deserialize>(deserializer: D) -> Result { - // union deserializer - use serde::de::{self, MapAccess, Visitor}; - struct EnumVisitor; - impl<'de> Visitor<'de> for EnumVisitor { - type Value = FedAdminRole; - fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a FedAdminRole structure") - } - fn visit_map>(self, mut map: V) -> Result { - let tag: &str = match map.next_key()? { - Some(".tag") => map.next_value()?, - _ => return Err(de::Error::missing_field(".tag")) - }; - let value = match tag { - "enterprise_admin" => FedAdminRole::EnterpriseAdmin, - "not_enterprise_admin" => FedAdminRole::NotEnterpriseAdmin, - _ => FedAdminRole::Other, - }; - crate::eat_json_fields(&mut map)?; - Ok(value) - } - } - const VARIANTS: &[&str] = &["enterprise_admin", - "not_enterprise_admin", - "other"]; - deserializer.deserialize_struct("FedAdminRole", VARIANTS, EnumVisitor) - } +#[non_exhaustive] // structs may have more fields added in the future. +pub struct FileTransfersTransferDownloadDetails { + /// Transfer id. + pub file_transfer_id: String, } -impl ::serde::ser::Serialize for FedAdminRole { - fn serialize(&self, serializer: S) -> Result { - // union serializer - use serde::ser::SerializeStruct; - match self { - FedAdminRole::EnterpriseAdmin => { - // unit - let mut s = serializer.serialize_struct("FedAdminRole", 1)?; - s.serialize_field(".tag", "enterprise_admin")?; - s.end() - } - FedAdminRole::NotEnterpriseAdmin => { - // unit - let mut s = serializer.serialize_struct("FedAdminRole", 1)?; - s.serialize_field(".tag", "not_enterprise_admin")?; - s.end() - } - FedAdminRole::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) +impl FileTransfersTransferDownloadDetails { + pub fn new(file_transfer_id: String) -> Self { + FileTransfersTransferDownloadDetails { + file_transfer_id, } } } -/// More details about the organization or team. -#[derive(Debug, Clone, PartialEq, Eq)] -#[non_exhaustive] // variants may be added in the future -pub enum FedExtraDetails { - /// More details about the organization. - Organization(OrganizationDetails), - /// More details about the team. - Team(TeamDetails), - /// Catch-all used for unrecognized values returned from the server. Encountering this value - /// typically indicates that this SDK version is out of date. - Other, -} - -impl<'de> ::serde::de::Deserialize<'de> for FedExtraDetails { - fn deserialize>(deserializer: D) -> Result { - // union deserializer - use serde::de::{self, MapAccess, Visitor}; - struct EnumVisitor; - impl<'de> Visitor<'de> for EnumVisitor { - type Value = FedExtraDetails; - fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a FedExtraDetails structure") - } - fn visit_map>(self, mut map: V) -> Result { - let tag: &str = match map.next_key()? { - Some(".tag") => map.next_value()?, - _ => return Err(de::Error::missing_field(".tag")) - }; - let value = match tag { - "organization" => FedExtraDetails::Organization(OrganizationDetails::internal_deserialize(&mut map)?), - "team" => FedExtraDetails::Team(TeamDetails::internal_deserialize(&mut map)?), - _ => FedExtraDetails::Other, - }; - crate::eat_json_fields(&mut map)?; - Ok(value) - } - } - const VARIANTS: &[&str] = &["organization", - "team", - "other"]; - deserializer.deserialize_struct("FedExtraDetails", VARIANTS, EnumVisitor) +const FILE_TRANSFERS_TRANSFER_DOWNLOAD_DETAILS_FIELDS: &[&str] = &["file_transfer_id"]; +impl FileTransfersTransferDownloadDetails { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) } -} -impl ::serde::ser::Serialize for FedExtraDetails { - fn serialize(&self, serializer: S) -> Result { - // union serializer - use serde::ser::SerializeStruct; - match self { - FedExtraDetails::Organization(x) => { - // struct - let mut s = serializer.serialize_struct("FedExtraDetails", 2)?; - s.serialize_field(".tag", "organization")?; - x.internal_serialize::(&mut s)?; - s.end() - } - FedExtraDetails::Team(x) => { - // struct - let mut s = serializer.serialize_struct("FedExtraDetails", 2)?; - s.serialize_field(".tag", "team")?; - x.internal_serialize::(&mut s)?; - s.end() + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_file_transfer_id = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "file_transfer_id" => { + if field_file_transfer_id.is_some() { + return Err(::serde::de::Error::duplicate_field("file_transfer_id")); + } + field_file_transfer_id = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } } - FedExtraDetails::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) } - } -} - -#[derive(Debug, Clone, PartialEq, Eq)] -#[non_exhaustive] // variants may be added in the future -pub enum FedHandshakeAction { - AcceptedInvite, - CanceledInvite, - InviteExpired, - Invited, - RejectedInvite, - RemovedTeam, - /// Catch-all used for unrecognized values returned from the server. Encountering this value - /// typically indicates that this SDK version is out of date. - Other, -} - -impl<'de> ::serde::de::Deserialize<'de> for FedHandshakeAction { - fn deserialize>(deserializer: D) -> Result { - // union deserializer - use serde::de::{self, MapAccess, Visitor}; - struct EnumVisitor; - impl<'de> Visitor<'de> for EnumVisitor { - type Value = FedHandshakeAction; - fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a FedHandshakeAction structure") - } - fn visit_map>(self, mut map: V) -> Result { - let tag: &str = match map.next_key()? { - Some(".tag") => map.next_value()?, - _ => return Err(de::Error::missing_field(".tag")) - }; - let value = match tag { - "accepted_invite" => FedHandshakeAction::AcceptedInvite, - "canceled_invite" => FedHandshakeAction::CanceledInvite, - "invite_expired" => FedHandshakeAction::InviteExpired, - "invited" => FedHandshakeAction::Invited, - "rejected_invite" => FedHandshakeAction::RejectedInvite, - "removed_team" => FedHandshakeAction::RemovedTeam, - _ => FedHandshakeAction::Other, - }; - crate::eat_json_fields(&mut map)?; - Ok(value) - } + if optional && nothing { + return Ok(None); } - const VARIANTS: &[&str] = &["accepted_invite", - "canceled_invite", - "invite_expired", - "invited", - "rejected_invite", - "removed_team", - "other"]; - deserializer.deserialize_struct("FedHandshakeAction", VARIANTS, EnumVisitor) + let result = FileTransfersTransferDownloadDetails { + file_transfer_id: field_file_transfer_id.ok_or_else(|| ::serde::de::Error::missing_field("file_transfer_id"))?, + }; + Ok(Some(result)) } -} -impl ::serde::ser::Serialize for FedHandshakeAction { - fn serialize(&self, serializer: S) -> Result { - // union serializer + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - match self { - FedHandshakeAction::AcceptedInvite => { - // unit - let mut s = serializer.serialize_struct("FedHandshakeAction", 1)?; - s.serialize_field(".tag", "accepted_invite")?; - s.end() - } - FedHandshakeAction::CanceledInvite => { - // unit - let mut s = serializer.serialize_struct("FedHandshakeAction", 1)?; - s.serialize_field(".tag", "canceled_invite")?; - s.end() - } - FedHandshakeAction::InviteExpired => { - // unit - let mut s = serializer.serialize_struct("FedHandshakeAction", 1)?; - s.serialize_field(".tag", "invite_expired")?; - s.end() - } - FedHandshakeAction::Invited => { - // unit - let mut s = serializer.serialize_struct("FedHandshakeAction", 1)?; - s.serialize_field(".tag", "invited")?; - s.end() - } - FedHandshakeAction::RejectedInvite => { - // unit - let mut s = serializer.serialize_struct("FedHandshakeAction", 1)?; - s.serialize_field(".tag", "rejected_invite")?; - s.end() - } - FedHandshakeAction::RemovedTeam => { - // unit - let mut s = serializer.serialize_struct("FedHandshakeAction", 1)?; - s.serialize_field(".tag", "removed_team")?; - s.end() - } - FedHandshakeAction::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) - } + s.serialize_field("file_transfer_id", &self.file_transfer_id)?; + Ok(()) } } -/// Additional information about the organization or connected team -#[derive(Debug, Clone, PartialEq, Eq)] -#[non_exhaustive] // variants may be added in the future -pub enum FederationStatusChangeAdditionalInfo { - /// The name of the team. - ConnectedTeamName(ConnectedTeamName), - /// The email to which the request was sent. - NonTrustedTeamDetails(NonTrustedTeamDetails), - /// The name of the organization. - OrganizationName(OrganizationName), - /// Catch-all used for unrecognized values returned from the server. Encountering this value - /// typically indicates that this SDK version is out of date. - Other, -} - -impl<'de> ::serde::de::Deserialize<'de> for FederationStatusChangeAdditionalInfo { +impl<'de> ::serde::de::Deserialize<'de> for FileTransfersTransferDownloadDetails { fn deserialize>(deserializer: D) -> Result { - // union deserializer - use serde::de::{self, MapAccess, Visitor}; - struct EnumVisitor; - impl<'de> Visitor<'de> for EnumVisitor { - type Value = FederationStatusChangeAdditionalInfo; + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = FileTransfersTransferDownloadDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a FederationStatusChangeAdditionalInfo structure") + f.write_str("a FileTransfersTransferDownloadDetails struct") } - fn visit_map>(self, mut map: V) -> Result { - let tag: &str = match map.next_key()? { - Some(".tag") => map.next_value()?, - _ => return Err(de::Error::missing_field(".tag")) - }; - let value = match tag { - "connected_team_name" => FederationStatusChangeAdditionalInfo::ConnectedTeamName(ConnectedTeamName::internal_deserialize(&mut map)?), - "non_trusted_team_details" => FederationStatusChangeAdditionalInfo::NonTrustedTeamDetails(NonTrustedTeamDetails::internal_deserialize(&mut map)?), - "organization_name" => FederationStatusChangeAdditionalInfo::OrganizationName(OrganizationName::internal_deserialize(&mut map)?), - _ => FederationStatusChangeAdditionalInfo::Other, - }; - crate::eat_json_fields(&mut map)?; - Ok(value) + fn visit_map>(self, map: V) -> Result { + FileTransfersTransferDownloadDetails::internal_deserialize(map) } } - const VARIANTS: &[&str] = &["connected_team_name", - "non_trusted_team_details", - "organization_name", - "other"]; - deserializer.deserialize_struct("FederationStatusChangeAdditionalInfo", VARIANTS, EnumVisitor) + deserializer.deserialize_struct("FileTransfersTransferDownloadDetails", FILE_TRANSFERS_TRANSFER_DOWNLOAD_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for FederationStatusChangeAdditionalInfo { +impl ::serde::ser::Serialize for FileTransfersTransferDownloadDetails { fn serialize(&self, serializer: S) -> Result { - // union serializer + // struct serializer use serde::ser::SerializeStruct; - match self { - FederationStatusChangeAdditionalInfo::ConnectedTeamName(x) => { - // struct - let mut s = serializer.serialize_struct("FederationStatusChangeAdditionalInfo", 2)?; - s.serialize_field(".tag", "connected_team_name")?; - x.internal_serialize::(&mut s)?; - s.end() - } - FederationStatusChangeAdditionalInfo::NonTrustedTeamDetails(x) => { - // struct - let mut s = serializer.serialize_struct("FederationStatusChangeAdditionalInfo", 2)?; - s.serialize_field(".tag", "non_trusted_team_details")?; - x.internal_serialize::(&mut s)?; - s.end() - } - FederationStatusChangeAdditionalInfo::OrganizationName(x) => { - // struct - let mut s = serializer.serialize_struct("FederationStatusChangeAdditionalInfo", 2)?; - s.serialize_field(".tag", "organization_name")?; - x.internal_serialize::(&mut s)?; - s.end() - } - FederationStatusChangeAdditionalInfo::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) - } + let mut s = serializer.serialize_struct("FileTransfersTransferDownloadDetails", 1)?; + self.internal_serialize::(&mut s)?; + s.end() } } -/// Added file comment. -#[derive(Debug, Clone, PartialEq, Eq, Default)] +#[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct FileAddCommentDetails { - /// Comment text. - pub comment_text: Option, +pub struct FileTransfersTransferDownloadType { + pub description: String, } -impl FileAddCommentDetails { - pub fn with_comment_text(mut self, value: String) -> Self { - self.comment_text = Some(value); - self +impl FileTransfersTransferDownloadType { + pub fn new(description: String) -> Self { + FileTransfersTransferDownloadType { + description, + } } } -const FILE_ADD_COMMENT_DETAILS_FIELDS: &[&str] = &["comment_text"]; -impl FileAddCommentDetails { - // no _opt deserializer +const FILE_TRANSFERS_TRANSFER_DOWNLOAD_TYPE_FIELDS: &[&str] = &["description"]; +impl FileTransfersTransferDownloadType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - ) -> Result { - let mut field_comment_text = None; + optional: bool, + ) -> Result, V::Error> { + let mut field_description = None; + let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { + nothing = false; match key { - "comment_text" => { - if field_comment_text.is_some() { - return Err(::serde::de::Error::duplicate_field("comment_text")); + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); } - field_comment_text = Some(map.next_value()?); + field_description = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -38611,10 +59397,13 @@ impl FileAddCommentDetails { } } } - let result = FileAddCommentDetails { - comment_text: field_comment_text.and_then(Option::flatten), + if optional && nothing { + return Ok(None); + } + let result = FileTransfersTransferDownloadType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; - Ok(result) + Ok(Some(result)) } pub(crate) fn internal_serialize( @@ -38622,77 +59411,77 @@ impl FileAddCommentDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - if let Some(val) = &self.comment_text { - s.serialize_field("comment_text", val)?; - } + s.serialize_field("description", &self.description)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for FileAddCommentDetails { +impl<'de> ::serde::de::Deserialize<'de> for FileTransfersTransferDownloadType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = FileAddCommentDetails; + type Value = FileTransfersTransferDownloadType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a FileAddCommentDetails struct") + f.write_str("a FileTransfersTransferDownloadType struct") } fn visit_map>(self, map: V) -> Result { - FileAddCommentDetails::internal_deserialize(map) + FileTransfersTransferDownloadType::internal_deserialize(map) } } - deserializer.deserialize_struct("FileAddCommentDetails", FILE_ADD_COMMENT_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("FileTransfersTransferDownloadType", FILE_TRANSFERS_TRANSFER_DOWNLOAD_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for FileAddCommentDetails { +impl ::serde::ser::Serialize for FileTransfersTransferDownloadType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("FileAddCommentDetails", 1)?; + let mut s = serializer.serialize_struct("FileTransfersTransferDownloadType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } +/// Sent transfer. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct FileAddCommentType { - pub description: String, +pub struct FileTransfersTransferSendDetails { + /// Transfer id. + pub file_transfer_id: String, } -impl FileAddCommentType { - pub fn new(description: String) -> Self { - FileAddCommentType { - description, +impl FileTransfersTransferSendDetails { + pub fn new(file_transfer_id: String) -> Self { + FileTransfersTransferSendDetails { + file_transfer_id, } } } -const FILE_ADD_COMMENT_TYPE_FIELDS: &[&str] = &["description"]; -impl FileAddCommentType { +const FILE_TRANSFERS_TRANSFER_SEND_DETAILS_FIELDS: &[&str] = &["file_transfer_id"]; +impl FileTransfersTransferSendDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_description = None; + ) -> Result, V::Error> { + let mut field_file_transfer_id = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "description" => { - if field_description.is_some() { - return Err(::serde::de::Error::duplicate_field("description")); + "file_transfer_id" => { + if field_file_transfer_id.is_some() { + return Err(::serde::de::Error::duplicate_field("file_transfer_id")); } - field_description = Some(map.next_value()?); + field_file_transfer_id = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -38703,8 +59492,8 @@ impl FileAddCommentType { if optional && nothing { return Ok(None); } - let result = FileAddCommentType { - description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + let result = FileTransfersTransferSendDetails { + file_transfer_id: field_file_transfer_id.ok_or_else(|| ::serde::de::Error::missing_field("file_transfer_id"))?, }; Ok(Some(result)) } @@ -38714,153 +59503,247 @@ impl FileAddCommentType { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("description", &self.description)?; + s.serialize_field("file_transfer_id", &self.file_transfer_id)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for FileAddCommentType { +impl<'de> ::serde::de::Deserialize<'de> for FileTransfersTransferSendDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = FileAddCommentType; + type Value = FileTransfersTransferSendDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a FileAddCommentType struct") + f.write_str("a FileTransfersTransferSendDetails struct") } fn visit_map>(self, map: V) -> Result { - FileAddCommentType::internal_deserialize(map) + FileTransfersTransferSendDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("FileAddCommentType", FILE_ADD_COMMENT_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("FileTransfersTransferSendDetails", FILE_TRANSFERS_TRANSFER_SEND_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for FileAddCommentType { +impl ::serde::ser::Serialize for FileTransfersTransferSendDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("FileAddCommentType", 1)?; + let mut s = serializer.serialize_struct("FileTransfersTransferSendDetails", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Added files and/or folders. -#[derive(Debug, Clone, PartialEq, Eq, Default)] +#[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct FileAddDetails { +pub struct FileTransfersTransferSendType { + pub description: String, } -const FILE_ADD_DETAILS_FIELDS: &[&str] = &[]; -impl FileAddDetails { - // no _opt deserializer +impl FileTransfersTransferSendType { + pub fn new(description: String) -> Self { + FileTransfersTransferSendType { + description, + } + } +} + +const FILE_TRANSFERS_TRANSFER_SEND_TYPE_FIELDS: &[&str] = &["description"]; +impl FileTransfersTransferSendType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - ) -> Result { - // ignore any fields found; none are presently recognized - crate::eat_json_fields(&mut map)?; - Ok(FileAddDetails {}) + optional: bool, + ) -> Result, V::Error> { + let mut field_description = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); + } + field_description = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } + } + } + if optional && nothing { + return Ok(None); + } + let result = FileTransfersTransferSendType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("description", &self.description)?; + Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for FileAddDetails { +impl<'de> ::serde::de::Deserialize<'de> for FileTransfersTransferSendType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = FileAddDetails; + type Value = FileTransfersTransferSendType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a FileAddDetails struct") + f.write_str("a FileTransfersTransferSendType struct") } fn visit_map>(self, map: V) -> Result { - FileAddDetails::internal_deserialize(map) + FileTransfersTransferSendType::internal_deserialize(map) } } - deserializer.deserialize_struct("FileAddDetails", FILE_ADD_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("FileTransfersTransferSendType", FILE_TRANSFERS_TRANSFER_SEND_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for FileAddDetails { +impl ::serde::ser::Serialize for FileTransfersTransferSendType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - serializer.serialize_struct("FileAddDetails", 0)?.end() + let mut s = serializer.serialize_struct("FileTransfersTransferSendType", 1)?; + self.internal_serialize::(&mut s)?; + s.end() } } -/// Added files and/or folders from automation. -#[derive(Debug, Clone, PartialEq, Eq, Default)] +/// Viewed transfer. +#[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct FileAddFromAutomationDetails { +pub struct FileTransfersTransferViewDetails { + /// Transfer id. + pub file_transfer_id: String, } -const FILE_ADD_FROM_AUTOMATION_DETAILS_FIELDS: &[&str] = &[]; -impl FileAddFromAutomationDetails { - // no _opt deserializer +impl FileTransfersTransferViewDetails { + pub fn new(file_transfer_id: String) -> Self { + FileTransfersTransferViewDetails { + file_transfer_id, + } + } +} + +const FILE_TRANSFERS_TRANSFER_VIEW_DETAILS_FIELDS: &[&str] = &["file_transfer_id"]; +impl FileTransfersTransferViewDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - ) -> Result { - // ignore any fields found; none are presently recognized - crate::eat_json_fields(&mut map)?; - Ok(FileAddFromAutomationDetails {}) + optional: bool, + ) -> Result, V::Error> { + let mut field_file_transfer_id = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "file_transfer_id" => { + if field_file_transfer_id.is_some() { + return Err(::serde::de::Error::duplicate_field("file_transfer_id")); + } + field_file_transfer_id = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } + } + } + if optional && nothing { + return Ok(None); + } + let result = FileTransfersTransferViewDetails { + file_transfer_id: field_file_transfer_id.ok_or_else(|| ::serde::de::Error::missing_field("file_transfer_id"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("file_transfer_id", &self.file_transfer_id)?; + Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for FileAddFromAutomationDetails { +impl<'de> ::serde::de::Deserialize<'de> for FileTransfersTransferViewDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = FileAddFromAutomationDetails; + type Value = FileTransfersTransferViewDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a FileAddFromAutomationDetails struct") + f.write_str("a FileTransfersTransferViewDetails struct") } fn visit_map>(self, map: V) -> Result { - FileAddFromAutomationDetails::internal_deserialize(map) + FileTransfersTransferViewDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("FileAddFromAutomationDetails", FILE_ADD_FROM_AUTOMATION_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("FileTransfersTransferViewDetails", FILE_TRANSFERS_TRANSFER_VIEW_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for FileAddFromAutomationDetails { +impl ::serde::ser::Serialize for FileTransfersTransferViewDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - serializer.serialize_struct("FileAddFromAutomationDetails", 0)?.end() + let mut s = serializer.serialize_struct("FileTransfersTransferViewDetails", 1)?; + self.internal_serialize::(&mut s)?; + s.end() } } #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct FileAddFromAutomationType { +pub struct FileTransfersTransferViewType { pub description: String, } -impl FileAddFromAutomationType { +impl FileTransfersTransferViewType { pub fn new(description: String) -> Self { - FileAddFromAutomationType { + FileTransfersTransferViewType { description, } } } -const FILE_ADD_FROM_AUTOMATION_TYPE_FIELDS: &[&str] = &["description"]; -impl FileAddFromAutomationType { +const FILE_TRANSFERS_TRANSFER_VIEW_TYPE_FIELDS: &[&str] = &["description"]; +impl FileTransfersTransferViewType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -38881,7 +59764,7 @@ impl FileAddFromAutomationType { if optional && nothing { return Ok(None); } - let result = FileAddFromAutomationType { + let result = FileTransfersTransferViewType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -38897,29 +59780,111 @@ impl FileAddFromAutomationType { } } -impl<'de> ::serde::de::Deserialize<'de> for FileAddFromAutomationType { +impl<'de> ::serde::de::Deserialize<'de> for FileTransfersTransferViewType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = FileAddFromAutomationType; + type Value = FileTransfersTransferViewType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a FileAddFromAutomationType struct") + f.write_str("a FileTransfersTransferViewType struct") } fn visit_map>(self, map: V) -> Result { - FileAddFromAutomationType::internal_deserialize(map) + FileTransfersTransferViewType::internal_deserialize(map) } } - deserializer.deserialize_struct("FileAddFromAutomationType", FILE_ADD_FROM_AUTOMATION_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("FileTransfersTransferViewType", FILE_TRANSFERS_TRANSFER_VIEW_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for FileAddFromAutomationType { +impl ::serde::ser::Serialize for FileTransfersTransferViewType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("FileAddFromAutomationType", 1)?; + let mut s = serializer.serialize_struct("FileTransfersTransferViewType", 1)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +/// Unliked file comment. +#[derive(Debug, Clone, PartialEq, Eq, Default)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct FileUnlikeCommentDetails { + /// Comment text. + pub comment_text: Option, +} + +impl FileUnlikeCommentDetails { + pub fn with_comment_text(mut self, value: String) -> Self { + self.comment_text = Some(value); + self + } +} + +const FILE_UNLIKE_COMMENT_DETAILS_FIELDS: &[&str] = &["comment_text"]; +impl FileUnlikeCommentDetails { + // no _opt deserializer + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + ) -> Result { + let mut field_comment_text = None; + while let Some(key) = map.next_key::<&str>()? { + match key { + "comment_text" => { + if field_comment_text.is_some() { + return Err(::serde::de::Error::duplicate_field("comment_text")); + } + field_comment_text = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } + } + } + let result = FileUnlikeCommentDetails { + comment_text: field_comment_text.and_then(Option::flatten), + }; + Ok(result) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + if let Some(val) = &self.comment_text { + s.serialize_field("comment_text", val)?; + } + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for FileUnlikeCommentDetails { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = FileUnlikeCommentDetails; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a FileUnlikeCommentDetails struct") + } + fn visit_map>(self, map: V) -> Result { + FileUnlikeCommentDetails::internal_deserialize(map) + } + } + deserializer.deserialize_struct("FileUnlikeCommentDetails", FILE_UNLIKE_COMMENT_DETAILS_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for FileUnlikeCommentDetails { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("FileUnlikeCommentDetails", 1)?; self.internal_serialize::(&mut s)?; s.end() } @@ -38927,30 +59892,30 @@ impl ::serde::ser::Serialize for FileAddFromAutomationType { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct FileAddType { +pub struct FileUnlikeCommentType { pub description: String, } -impl FileAddType { +impl FileUnlikeCommentType { pub fn new(description: String) -> Self { - FileAddType { + FileUnlikeCommentType { description, } } } -const FILE_ADD_TYPE_FIELDS: &[&str] = &["description"]; -impl FileAddType { +const FILE_UNLIKE_COMMENT_TYPE_FIELDS: &[&str] = &["description"]; +impl FileUnlikeCommentType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -38971,7 +59936,7 @@ impl FileAddType { if optional && nothing { return Ok(None); } - let result = FileAddType { + let result = FileUnlikeCommentType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -38987,88 +59952,63 @@ impl FileAddType { } } -impl<'de> ::serde::de::Deserialize<'de> for FileAddType { +impl<'de> ::serde::de::Deserialize<'de> for FileUnlikeCommentType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = FileAddType; + type Value = FileUnlikeCommentType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a FileAddType struct") + f.write_str("a FileUnlikeCommentType struct") } fn visit_map>(self, map: V) -> Result { - FileAddType::internal_deserialize(map) + FileUnlikeCommentType::internal_deserialize(map) } } - deserializer.deserialize_struct("FileAddType", FILE_ADD_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("FileUnlikeCommentType", FILE_UNLIKE_COMMENT_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for FileAddType { +impl ::serde::ser::Serialize for FileUnlikeCommentType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("FileAddType", 1)?; + let mut s = serializer.serialize_struct("FileUnlikeCommentType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Subscribed to or unsubscribed from comment notifications for file. -#[derive(Debug, Clone, PartialEq, Eq)] +/// Unresolved file comment. +#[derive(Debug, Clone, PartialEq, Eq, Default)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct FileChangeCommentSubscriptionDetails { - /// New file comment subscription. - pub new_value: FileCommentNotificationPolicy, - /// Previous file comment subscription. Might be missing due to historical data gap. - pub previous_value: Option, +pub struct FileUnresolveCommentDetails { + /// Comment text. + pub comment_text: Option, } -impl FileChangeCommentSubscriptionDetails { - pub fn new(new_value: FileCommentNotificationPolicy) -> Self { - FileChangeCommentSubscriptionDetails { - new_value, - previous_value: None, - } - } - - pub fn with_previous_value(mut self, value: FileCommentNotificationPolicy) -> Self { - self.previous_value = Some(value); +impl FileUnresolveCommentDetails { + pub fn with_comment_text(mut self, value: String) -> Self { + self.comment_text = Some(value); self } } -const FILE_CHANGE_COMMENT_SUBSCRIPTION_DETAILS_FIELDS: &[&str] = &["new_value", - "previous_value"]; -impl FileChangeCommentSubscriptionDetails { +const FILE_UNRESOLVE_COMMENT_DETAILS_FIELDS: &[&str] = &["comment_text"]; +impl FileUnresolveCommentDetails { + // no _opt deserializer pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( - map: V, - ) -> Result { - Self::internal_deserialize_opt(map, false).map(Option::unwrap) - } - - pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - optional: bool, - ) -> Result, V::Error> { - let mut field_new_value = None; - let mut field_previous_value = None; - let mut nothing = true; - while let Some(key) = map.next_key::<&str>()? { - nothing = false; - match key { - "new_value" => { - if field_new_value.is_some() { - return Err(::serde::de::Error::duplicate_field("new_value")); - } - field_new_value = Some(map.next_value()?); - } - "previous_value" => { - if field_previous_value.is_some() { - return Err(::serde::de::Error::duplicate_field("previous_value")); + ) -> Result { + let mut field_comment_text = None; + while let Some(key) = map.next_key::<&str>()? { + match key { + "comment_text" => { + if field_comment_text.is_some() { + return Err(::serde::de::Error::duplicate_field("comment_text")); } - field_previous_value = Some(map.next_value()?); + field_comment_text = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -39076,14 +60016,10 @@ impl FileChangeCommentSubscriptionDetails { } } } - if optional && nothing { - return Ok(None); - } - let result = FileChangeCommentSubscriptionDetails { - new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, - previous_value: field_previous_value.and_then(Option::flatten), + let result = FileUnresolveCommentDetails { + comment_text: field_comment_text.and_then(Option::flatten), }; - Ok(Some(result)) + Ok(result) } pub(crate) fn internal_serialize( @@ -39091,37 +60027,36 @@ impl FileChangeCommentSubscriptionDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("new_value", &self.new_value)?; - if let Some(val) = &self.previous_value { - s.serialize_field("previous_value", val)?; + if let Some(val) = &self.comment_text { + s.serialize_field("comment_text", val)?; } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for FileChangeCommentSubscriptionDetails { +impl<'de> ::serde::de::Deserialize<'de> for FileUnresolveCommentDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = FileChangeCommentSubscriptionDetails; + type Value = FileUnresolveCommentDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a FileChangeCommentSubscriptionDetails struct") + f.write_str("a FileUnresolveCommentDetails struct") } fn visit_map>(self, map: V) -> Result { - FileChangeCommentSubscriptionDetails::internal_deserialize(map) + FileUnresolveCommentDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("FileChangeCommentSubscriptionDetails", FILE_CHANGE_COMMENT_SUBSCRIPTION_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("FileUnresolveCommentDetails", FILE_UNRESOLVE_COMMENT_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for FileChangeCommentSubscriptionDetails { +impl ::serde::ser::Serialize for FileUnresolveCommentDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("FileChangeCommentSubscriptionDetails", 2)?; + let mut s = serializer.serialize_struct("FileUnresolveCommentDetails", 1)?; self.internal_serialize::(&mut s)?; s.end() } @@ -39129,30 +60064,30 @@ impl ::serde::ser::Serialize for FileChangeCommentSubscriptionDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct FileChangeCommentSubscriptionType { +pub struct FileUnresolveCommentType { pub description: String, } -impl FileChangeCommentSubscriptionType { +impl FileUnresolveCommentType { pub fn new(description: String) -> Self { - FileChangeCommentSubscriptionType { + FileUnresolveCommentType { description, } } } -const FILE_CHANGE_COMMENT_SUBSCRIPTION_TYPE_FIELDS: &[&str] = &["description"]; -impl FileChangeCommentSubscriptionType { +const FILE_UNRESOLVE_COMMENT_TYPE_FIELDS: &[&str] = &["description"]; +impl FileUnresolveCommentType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -39173,7 +60108,7 @@ impl FileChangeCommentSubscriptionType { if optional && nothing { return Ok(None); } - let result = FileChangeCommentSubscriptionType { + let result = FileUnresolveCommentType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -39189,54 +60124,58 @@ impl FileChangeCommentSubscriptionType { } } -impl<'de> ::serde::de::Deserialize<'de> for FileChangeCommentSubscriptionType { +impl<'de> ::serde::de::Deserialize<'de> for FileUnresolveCommentType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = FileChangeCommentSubscriptionType; + type Value = FileUnresolveCommentType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a FileChangeCommentSubscriptionType struct") + f.write_str("a FileUnresolveCommentType struct") } fn visit_map>(self, map: V) -> Result { - FileChangeCommentSubscriptionType::internal_deserialize(map) + FileUnresolveCommentType::internal_deserialize(map) } } - deserializer.deserialize_struct("FileChangeCommentSubscriptionType", FILE_CHANGE_COMMENT_SUBSCRIPTION_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("FileUnresolveCommentType", FILE_UNRESOLVE_COMMENT_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for FileChangeCommentSubscriptionType { +impl ::serde::ser::Serialize for FileUnresolveCommentType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("FileChangeCommentSubscriptionType", 1)?; + let mut s = serializer.serialize_struct("FileUnresolveCommentType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Enable or disable file comments notifications +/// Flexible file names policy #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // variants may be added in the future -pub enum FileCommentNotificationPolicy { - Disabled, - Enabled, +pub enum FlexibleFileNamesPolicy { + Off, + OffDefault, + Optional, + OptionalDefault, + Required, + RequiredDefault, /// Catch-all used for unrecognized values returned from the server. Encountering this value /// typically indicates that this SDK version is out of date. Other, } -impl<'de> ::serde::de::Deserialize<'de> for FileCommentNotificationPolicy { +impl<'de> ::serde::de::Deserialize<'de> for FlexibleFileNamesPolicy { fn deserialize>(deserializer: D) -> Result { // union deserializer use serde::de::{self, MapAccess, Visitor}; struct EnumVisitor; impl<'de> Visitor<'de> for EnumVisitor { - type Value = FileCommentNotificationPolicy; + type Value = FlexibleFileNamesPolicy; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a FileCommentNotificationPolicy structure") + f.write_str("a FlexibleFileNamesPolicy structure") } fn visit_map>(self, mut map: V) -> Result { let tag: &str = match map.next_key()? { @@ -39244,80 +60183,112 @@ impl<'de> ::serde::de::Deserialize<'de> for FileCommentNotificationPolicy { _ => return Err(de::Error::missing_field(".tag")) }; let value = match tag { - "disabled" => FileCommentNotificationPolicy::Disabled, - "enabled" => FileCommentNotificationPolicy::Enabled, - _ => FileCommentNotificationPolicy::Other, + "off" => FlexibleFileNamesPolicy::Off, + "off_default" => FlexibleFileNamesPolicy::OffDefault, + "optional" => FlexibleFileNamesPolicy::Optional, + "optional_default" => FlexibleFileNamesPolicy::OptionalDefault, + "required" => FlexibleFileNamesPolicy::Required, + "required_default" => FlexibleFileNamesPolicy::RequiredDefault, + _ => FlexibleFileNamesPolicy::Other, }; crate::eat_json_fields(&mut map)?; Ok(value) } } - const VARIANTS: &[&str] = &["disabled", - "enabled", + const VARIANTS: &[&str] = &["off", + "off_default", + "optional", + "optional_default", + "required", + "required_default", "other"]; - deserializer.deserialize_struct("FileCommentNotificationPolicy", VARIANTS, EnumVisitor) + deserializer.deserialize_struct("FlexibleFileNamesPolicy", VARIANTS, EnumVisitor) } } -impl ::serde::ser::Serialize for FileCommentNotificationPolicy { +impl ::serde::ser::Serialize for FlexibleFileNamesPolicy { fn serialize(&self, serializer: S) -> Result { // union serializer use serde::ser::SerializeStruct; match self { - FileCommentNotificationPolicy::Disabled => { + FlexibleFileNamesPolicy::Off => { // unit - let mut s = serializer.serialize_struct("FileCommentNotificationPolicy", 1)?; - s.serialize_field(".tag", "disabled")?; + let mut s = serializer.serialize_struct("FlexibleFileNamesPolicy", 1)?; + s.serialize_field(".tag", "off")?; s.end() } - FileCommentNotificationPolicy::Enabled => { + FlexibleFileNamesPolicy::OffDefault => { // unit - let mut s = serializer.serialize_struct("FileCommentNotificationPolicy", 1)?; - s.serialize_field(".tag", "enabled")?; + let mut s = serializer.serialize_struct("FlexibleFileNamesPolicy", 1)?; + s.serialize_field(".tag", "off_default")?; s.end() } - FileCommentNotificationPolicy::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) + FlexibleFileNamesPolicy::Optional => { + // unit + let mut s = serializer.serialize_struct("FlexibleFileNamesPolicy", 1)?; + s.serialize_field(".tag", "optional")?; + s.end() + } + FlexibleFileNamesPolicy::OptionalDefault => { + // unit + let mut s = serializer.serialize_struct("FlexibleFileNamesPolicy", 1)?; + s.serialize_field(".tag", "optional_default")?; + s.end() + } + FlexibleFileNamesPolicy::Required => { + // unit + let mut s = serializer.serialize_struct("FlexibleFileNamesPolicy", 1)?; + s.serialize_field(".tag", "required")?; + s.end() + } + FlexibleFileNamesPolicy::RequiredDefault => { + // unit + let mut s = serializer.serialize_struct("FlexibleFileNamesPolicy", 1)?; + s.serialize_field(".tag", "required_default")?; + s.end() + } + FlexibleFileNamesPolicy::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) } } } -/// Enabled/disabled commenting on team files. +/// Changed flexible file names policy for team. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct FileCommentsChangePolicyDetails { - /// New commenting on team files policy. - pub new_value: FileCommentsPolicy, - /// Previous commenting on team files policy. Might be missing due to historical data gap. - pub previous_value: Option, +pub struct FlexibleFileNamesPolicyChangedDetails { + /// New flexible file names policy. + pub new_value: FlexibleFileNamesPolicy, + /// Previous flexible file names policy. Might be missing due to historical data gap. + pub previous_value: Option, } -impl FileCommentsChangePolicyDetails { - pub fn new(new_value: FileCommentsPolicy) -> Self { - FileCommentsChangePolicyDetails { +impl FlexibleFileNamesPolicyChangedDetails { + pub fn new(new_value: FlexibleFileNamesPolicy) -> Self { + FlexibleFileNamesPolicyChangedDetails { new_value, previous_value: None, } } - pub fn with_previous_value(mut self, value: FileCommentsPolicy) -> Self { + pub fn with_previous_value(mut self, value: FlexibleFileNamesPolicy) -> Self { self.previous_value = Some(value); self } } -const FILE_COMMENTS_CHANGE_POLICY_DETAILS_FIELDS: &[&str] = &["new_value", - "previous_value"]; -impl FileCommentsChangePolicyDetails { +const FLEXIBLE_FILE_NAMES_POLICY_CHANGED_DETAILS_FIELDS: &[&str] = &["new_value", + "previous_value"]; +impl FlexibleFileNamesPolicyChangedDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_new_value = None; let mut field_previous_value = None; let mut nothing = true; @@ -39345,7 +60316,7 @@ impl FileCommentsChangePolicyDetails { if optional && nothing { return Ok(None); } - let result = FileCommentsChangePolicyDetails { + let result = FlexibleFileNamesPolicyChangedDetails { new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, previous_value: field_previous_value.and_then(Option::flatten), }; @@ -39365,29 +60336,29 @@ impl FileCommentsChangePolicyDetails { } } -impl<'de> ::serde::de::Deserialize<'de> for FileCommentsChangePolicyDetails { +impl<'de> ::serde::de::Deserialize<'de> for FlexibleFileNamesPolicyChangedDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = FileCommentsChangePolicyDetails; + type Value = FlexibleFileNamesPolicyChangedDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a FileCommentsChangePolicyDetails struct") + f.write_str("a FlexibleFileNamesPolicyChangedDetails struct") } fn visit_map>(self, map: V) -> Result { - FileCommentsChangePolicyDetails::internal_deserialize(map) + FlexibleFileNamesPolicyChangedDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("FileCommentsChangePolicyDetails", FILE_COMMENTS_CHANGE_POLICY_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("FlexibleFileNamesPolicyChangedDetails", FLEXIBLE_FILE_NAMES_POLICY_CHANGED_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for FileCommentsChangePolicyDetails { +impl ::serde::ser::Serialize for FlexibleFileNamesPolicyChangedDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("FileCommentsChangePolicyDetails", 2)?; + let mut s = serializer.serialize_struct("FlexibleFileNamesPolicyChangedDetails", 2)?; self.internal_serialize::(&mut s)?; s.end() } @@ -39395,30 +60366,30 @@ impl ::serde::ser::Serialize for FileCommentsChangePolicyDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct FileCommentsChangePolicyType { +pub struct FlexibleFileNamesPolicyChangedType { pub description: String, } -impl FileCommentsChangePolicyType { +impl FlexibleFileNamesPolicyChangedType { pub fn new(description: String) -> Self { - FileCommentsChangePolicyType { + FlexibleFileNamesPolicyChangedType { description, } } } -const FILE_COMMENTS_CHANGE_POLICY_TYPE_FIELDS: &[&str] = &["description"]; -impl FileCommentsChangePolicyType { +const FLEXIBLE_FILE_NAMES_POLICY_CHANGED_TYPE_FIELDS: &[&str] = &["description"]; +impl FlexibleFileNamesPolicyChangedType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -39439,7 +60410,7 @@ impl FileCommentsChangePolicyType { if optional && nothing { return Ok(None); } - let result = FileCommentsChangePolicyType { + let result = FlexibleFileNamesPolicyChangedType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -39455,38 +60426,38 @@ impl FileCommentsChangePolicyType { } } -impl<'de> ::serde::de::Deserialize<'de> for FileCommentsChangePolicyType { +impl<'de> ::serde::de::Deserialize<'de> for FlexibleFileNamesPolicyChangedType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = FileCommentsChangePolicyType; + type Value = FlexibleFileNamesPolicyChangedType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a FileCommentsChangePolicyType struct") + f.write_str("a FlexibleFileNamesPolicyChangedType struct") } fn visit_map>(self, map: V) -> Result { - FileCommentsChangePolicyType::internal_deserialize(map) + FlexibleFileNamesPolicyChangedType::internal_deserialize(map) } } - deserializer.deserialize_struct("FileCommentsChangePolicyType", FILE_COMMENTS_CHANGE_POLICY_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("FlexibleFileNamesPolicyChangedType", FLEXIBLE_FILE_NAMES_POLICY_CHANGED_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for FileCommentsChangePolicyType { +impl ::serde::ser::Serialize for FlexibleFileNamesPolicyChangedType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("FileCommentsChangePolicyType", 1)?; + let mut s = serializer.serialize_struct("FlexibleFileNamesPolicyChangedType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// File comments policy +/// Policy for deciding whether applying link restrictions on all team owned folders #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // variants may be added in the future -pub enum FileCommentsPolicy { +pub enum FolderLinkRestrictionPolicy { Disabled, Enabled, /// Catch-all used for unrecognized values returned from the server. Encountering this value @@ -39494,15 +60465,15 @@ pub enum FileCommentsPolicy { Other, } -impl<'de> ::serde::de::Deserialize<'de> for FileCommentsPolicy { +impl<'de> ::serde::de::Deserialize<'de> for FolderLinkRestrictionPolicy { fn deserialize>(deserializer: D) -> Result { // union deserializer use serde::de::{self, MapAccess, Visitor}; struct EnumVisitor; impl<'de> Visitor<'de> for EnumVisitor { - type Value = FileCommentsPolicy; + type Value = FolderLinkRestrictionPolicy; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a FileCommentsPolicy structure") + f.write_str("a FolderLinkRestrictionPolicy structure") } fn visit_map>(self, mut map: V) -> Result { let tag: &str = match map.next_key()? { @@ -39510,9 +60481,9 @@ impl<'de> ::serde::de::Deserialize<'de> for FileCommentsPolicy { _ => return Err(de::Error::missing_field(".tag")) }; let value = match tag { - "disabled" => FileCommentsPolicy::Disabled, - "enabled" => FileCommentsPolicy::Enabled, - _ => FileCommentsPolicy::Other, + "disabled" => FolderLinkRestrictionPolicy::Disabled, + "enabled" => FolderLinkRestrictionPolicy::Enabled, + _ => FolderLinkRestrictionPolicy::Other, }; crate::eat_json_fields(&mut map)?; Ok(value) @@ -39521,70 +60492,84 @@ impl<'de> ::serde::de::Deserialize<'de> for FileCommentsPolicy { const VARIANTS: &[&str] = &["disabled", "enabled", "other"]; - deserializer.deserialize_struct("FileCommentsPolicy", VARIANTS, EnumVisitor) + deserializer.deserialize_struct("FolderLinkRestrictionPolicy", VARIANTS, EnumVisitor) } } -impl ::serde::ser::Serialize for FileCommentsPolicy { +impl ::serde::ser::Serialize for FolderLinkRestrictionPolicy { fn serialize(&self, serializer: S) -> Result { // union serializer use serde::ser::SerializeStruct; match self { - FileCommentsPolicy::Disabled => { + FolderLinkRestrictionPolicy::Disabled => { // unit - let mut s = serializer.serialize_struct("FileCommentsPolicy", 1)?; + let mut s = serializer.serialize_struct("FolderLinkRestrictionPolicy", 1)?; s.serialize_field(".tag", "disabled")?; s.end() } - FileCommentsPolicy::Enabled => { + FolderLinkRestrictionPolicy::Enabled => { // unit - let mut s = serializer.serialize_struct("FileCommentsPolicy", 1)?; + let mut s = serializer.serialize_struct("FolderLinkRestrictionPolicy", 1)?; s.serialize_field(".tag", "enabled")?; s.end() } - FileCommentsPolicy::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) + FolderLinkRestrictionPolicy::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) } } } -/// Copied files and/or folders. +/// Changed folder link restrictions policy for team. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct FileCopyDetails { - /// Relocate action details. - pub relocate_action_details: Vec, +pub struct FolderLinkRestrictionPolicyChangedDetails { + /// To. + pub new_value: FolderLinkRestrictionPolicy, + /// From. + pub previous_value: FolderLinkRestrictionPolicy, } -impl FileCopyDetails { - pub fn new(relocate_action_details: Vec) -> Self { - FileCopyDetails { - relocate_action_details, +impl FolderLinkRestrictionPolicyChangedDetails { + pub fn new( + new_value: FolderLinkRestrictionPolicy, + previous_value: FolderLinkRestrictionPolicy, + ) -> Self { + FolderLinkRestrictionPolicyChangedDetails { + new_value, + previous_value, } } } -const FILE_COPY_DETAILS_FIELDS: &[&str] = &["relocate_action_details"]; -impl FileCopyDetails { +const FOLDER_LINK_RESTRICTION_POLICY_CHANGED_DETAILS_FIELDS: &[&str] = &["new_value", + "previous_value"]; +impl FolderLinkRestrictionPolicyChangedDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_relocate_action_details = None; + ) -> Result, V::Error> { + let mut field_new_value = None; + let mut field_previous_value = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "relocate_action_details" => { - if field_relocate_action_details.is_some() { - return Err(::serde::de::Error::duplicate_field("relocate_action_details")); + "new_value" => { + if field_new_value.is_some() { + return Err(::serde::de::Error::duplicate_field("new_value")); } - field_relocate_action_details = Some(map.next_value()?); + field_new_value = Some(map.next_value()?); + } + "previous_value" => { + if field_previous_value.is_some() { + return Err(::serde::de::Error::duplicate_field("previous_value")); + } + field_previous_value = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -39595,8 +60580,9 @@ impl FileCopyDetails { if optional && nothing { return Ok(None); } - let result = FileCopyDetails { - relocate_action_details: field_relocate_action_details.ok_or_else(|| ::serde::de::Error::missing_field("relocate_action_details"))?, + let result = FolderLinkRestrictionPolicyChangedDetails { + new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, + previous_value: field_previous_value.ok_or_else(|| ::serde::de::Error::missing_field("previous_value"))?, }; Ok(Some(result)) } @@ -39606,34 +60592,35 @@ impl FileCopyDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("relocate_action_details", &self.relocate_action_details)?; + s.serialize_field("new_value", &self.new_value)?; + s.serialize_field("previous_value", &self.previous_value)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for FileCopyDetails { +impl<'de> ::serde::de::Deserialize<'de> for FolderLinkRestrictionPolicyChangedDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = FileCopyDetails; + type Value = FolderLinkRestrictionPolicyChangedDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a FileCopyDetails struct") + f.write_str("a FolderLinkRestrictionPolicyChangedDetails struct") } fn visit_map>(self, map: V) -> Result { - FileCopyDetails::internal_deserialize(map) + FolderLinkRestrictionPolicyChangedDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("FileCopyDetails", FILE_COPY_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("FolderLinkRestrictionPolicyChangedDetails", FOLDER_LINK_RESTRICTION_POLICY_CHANGED_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for FileCopyDetails { +impl ::serde::ser::Serialize for FolderLinkRestrictionPolicyChangedDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("FileCopyDetails", 1)?; + let mut s = serializer.serialize_struct("FolderLinkRestrictionPolicyChangedDetails", 2)?; self.internal_serialize::(&mut s)?; s.end() } @@ -39641,30 +60628,30 @@ impl ::serde::ser::Serialize for FileCopyDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct FileCopyType { +pub struct FolderLinkRestrictionPolicyChangedType { pub description: String, } -impl FileCopyType { +impl FolderLinkRestrictionPolicyChangedType { pub fn new(description: String) -> Self { - FileCopyType { + FolderLinkRestrictionPolicyChangedType { description, } } } -const FILE_COPY_TYPE_FIELDS: &[&str] = &["description"]; -impl FileCopyType { +const FOLDER_LINK_RESTRICTION_POLICY_CHANGED_TYPE_FIELDS: &[&str] = &["description"]; +impl FolderLinkRestrictionPolicyChangedType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -39685,7 +60672,7 @@ impl FileCopyType { if optional && nothing { return Ok(None); } - let result = FileCopyType { + let result = FolderLinkRestrictionPolicyChangedType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -39701,63 +60688,136 @@ impl FileCopyType { } } -impl<'de> ::serde::de::Deserialize<'de> for FileCopyType { +impl<'de> ::serde::de::Deserialize<'de> for FolderLinkRestrictionPolicyChangedType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = FileCopyType; + type Value = FolderLinkRestrictionPolicyChangedType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a FileCopyType struct") + f.write_str("a FolderLinkRestrictionPolicyChangedType struct") } fn visit_map>(self, map: V) -> Result { - FileCopyType::internal_deserialize(map) + FolderLinkRestrictionPolicyChangedType::internal_deserialize(map) } } - deserializer.deserialize_struct("FileCopyType", FILE_COPY_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("FolderLinkRestrictionPolicyChangedType", FOLDER_LINK_RESTRICTION_POLICY_CHANGED_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for FileCopyType { +impl ::serde::ser::Serialize for FolderLinkRestrictionPolicyChangedType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("FileCopyType", 1)?; + let mut s = serializer.serialize_struct("FolderLinkRestrictionPolicyChangedType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Deleted file comment. -#[derive(Debug, Clone, PartialEq, Eq, Default)] +/// Folder's logged information. +#[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct FileDeleteCommentDetails { - /// Comment text. - pub comment_text: Option, +pub struct FolderLogInfo { + /// Path relative to event context. + pub path: PathLogInfo, + /// Display name. + pub display_name: Option, + /// Unique ID. + pub file_id: Option, + /// File or folder size in bytes. + pub file_size: Option, + /// Number of files within the folder. + pub file_count: Option, } -impl FileDeleteCommentDetails { - pub fn with_comment_text(mut self, value: String) -> Self { - self.comment_text = Some(value); +impl FolderLogInfo { + pub fn new(path: PathLogInfo) -> Self { + FolderLogInfo { + path, + display_name: None, + file_id: None, + file_size: None, + file_count: None, + } + } + + pub fn with_display_name(mut self, value: String) -> Self { + self.display_name = Some(value); + self + } + + pub fn with_file_id(mut self, value: String) -> Self { + self.file_id = Some(value); + self + } + + pub fn with_file_size(mut self, value: u64) -> Self { + self.file_size = Some(value); + self + } + + pub fn with_file_count(mut self, value: u64) -> Self { + self.file_count = Some(value); self } } -const FILE_DELETE_COMMENT_DETAILS_FIELDS: &[&str] = &["comment_text"]; -impl FileDeleteCommentDetails { - // no _opt deserializer +const FOLDER_LOG_INFO_FIELDS: &[&str] = &["path", + "display_name", + "file_id", + "file_size", + "file_count"]; +impl FolderLogInfo { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - ) -> Result { - let mut field_comment_text = None; + optional: bool, + ) -> Result, V::Error> { + let mut field_path = None; + let mut field_display_name = None; + let mut field_file_id = None; + let mut field_file_size = None; + let mut field_file_count = None; + let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { + nothing = false; match key { - "comment_text" => { - if field_comment_text.is_some() { - return Err(::serde::de::Error::duplicate_field("comment_text")); + "path" => { + if field_path.is_some() { + return Err(::serde::de::Error::duplicate_field("path")); } - field_comment_text = Some(map.next_value()?); + field_path = Some(map.next_value()?); + } + "display_name" => { + if field_display_name.is_some() { + return Err(::serde::de::Error::duplicate_field("display_name")); + } + field_display_name = Some(map.next_value()?); + } + "file_id" => { + if field_file_id.is_some() { + return Err(::serde::de::Error::duplicate_field("file_id")); + } + field_file_id = Some(map.next_value()?); + } + "file_size" => { + if field_file_size.is_some() { + return Err(::serde::de::Error::duplicate_field("file_size")); + } + field_file_size = Some(map.next_value()?); + } + "file_count" => { + if field_file_count.is_some() { + return Err(::serde::de::Error::duplicate_field("file_count")); + } + field_file_count = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -39765,10 +60825,17 @@ impl FileDeleteCommentDetails { } } } - let result = FileDeleteCommentDetails { - comment_text: field_comment_text.and_then(Option::flatten), + if optional && nothing { + return Ok(None); + } + let result = FolderLogInfo { + path: field_path.ok_or_else(|| ::serde::de::Error::missing_field("path"))?, + display_name: field_display_name.and_then(Option::flatten), + file_id: field_file_id.and_then(Option::flatten), + file_size: field_file_size.and_then(Option::flatten), + file_count: field_file_count.and_then(Option::flatten), }; - Ok(result) + Ok(Some(result)) } pub(crate) fn internal_serialize( @@ -39776,77 +60843,100 @@ impl FileDeleteCommentDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - if let Some(val) = &self.comment_text { - s.serialize_field("comment_text", val)?; + s.serialize_field("path", &self.path)?; + if let Some(val) = &self.display_name { + s.serialize_field("display_name", val)?; + } + if let Some(val) = &self.file_id { + s.serialize_field("file_id", val)?; + } + if let Some(val) = &self.file_size { + s.serialize_field("file_size", val)?; + } + if let Some(val) = &self.file_count { + s.serialize_field("file_count", val)?; } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for FileDeleteCommentDetails { +impl<'de> ::serde::de::Deserialize<'de> for FolderLogInfo { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = FileDeleteCommentDetails; + type Value = FolderLogInfo; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a FileDeleteCommentDetails struct") + f.write_str("a FolderLogInfo struct") } fn visit_map>(self, map: V) -> Result { - FileDeleteCommentDetails::internal_deserialize(map) + FolderLogInfo::internal_deserialize(map) } } - deserializer.deserialize_struct("FileDeleteCommentDetails", FILE_DELETE_COMMENT_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("FolderLogInfo", FOLDER_LOG_INFO_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for FileDeleteCommentDetails { +impl ::serde::ser::Serialize for FolderLogInfo { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("FileDeleteCommentDetails", 1)?; + let mut s = serializer.serialize_struct("FolderLogInfo", 5)?; self.internal_serialize::(&mut s)?; s.end() } } +// struct extends FileOrFolderLogInfo +impl From for FileOrFolderLogInfo { + fn from(subtype: FolderLogInfo) -> Self { + Self { + path: subtype.path, + display_name: subtype.display_name, + file_id: subtype.file_id, + file_size: subtype.file_size, + } + } +} +/// Updated folder overview. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct FileDeleteCommentType { - pub description: String, +pub struct FolderOverviewDescriptionChangedDetails { + /// Folder Overview location position in the Assets list. + pub folder_overview_location_asset: u64, } -impl FileDeleteCommentType { - pub fn new(description: String) -> Self { - FileDeleteCommentType { - description, +impl FolderOverviewDescriptionChangedDetails { + pub fn new(folder_overview_location_asset: u64) -> Self { + FolderOverviewDescriptionChangedDetails { + folder_overview_location_asset, } } } -const FILE_DELETE_COMMENT_TYPE_FIELDS: &[&str] = &["description"]; -impl FileDeleteCommentType { +const FOLDER_OVERVIEW_DESCRIPTION_CHANGED_DETAILS_FIELDS: &[&str] = &["folder_overview_location_asset"]; +impl FolderOverviewDescriptionChangedDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_description = None; + ) -> Result, V::Error> { + let mut field_folder_overview_location_asset = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "description" => { - if field_description.is_some() { - return Err(::serde::de::Error::duplicate_field("description")); + "folder_overview_location_asset" => { + if field_folder_overview_location_asset.is_some() { + return Err(::serde::de::Error::duplicate_field("folder_overview_location_asset")); } - field_description = Some(map.next_value()?); + field_folder_overview_location_asset = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -39855,122 +60945,78 @@ impl FileDeleteCommentType { } } if optional && nothing { - return Ok(None); - } - let result = FileDeleteCommentType { - description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, - }; - Ok(Some(result)) - } - - pub(crate) fn internal_serialize( - &self, - s: &mut S::SerializeStruct, - ) -> Result<(), S::Error> { - use serde::ser::SerializeStruct; - s.serialize_field("description", &self.description)?; - Ok(()) - } -} - -impl<'de> ::serde::de::Deserialize<'de> for FileDeleteCommentType { - fn deserialize>(deserializer: D) -> Result { - // struct deserializer - use serde::de::{MapAccess, Visitor}; - struct StructVisitor; - impl<'de> Visitor<'de> for StructVisitor { - type Value = FileDeleteCommentType; - fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a FileDeleteCommentType struct") - } - fn visit_map>(self, map: V) -> Result { - FileDeleteCommentType::internal_deserialize(map) - } - } - deserializer.deserialize_struct("FileDeleteCommentType", FILE_DELETE_COMMENT_TYPE_FIELDS, StructVisitor) - } -} - -impl ::serde::ser::Serialize for FileDeleteCommentType { - fn serialize(&self, serializer: S) -> Result { - // struct serializer - use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("FileDeleteCommentType", 1)?; - self.internal_serialize::(&mut s)?; - s.end() + return Ok(None); + } + let result = FolderOverviewDescriptionChangedDetails { + folder_overview_location_asset: field_folder_overview_location_asset.ok_or_else(|| ::serde::de::Error::missing_field("folder_overview_location_asset"))?, + }; + Ok(Some(result)) } -} - -/// Deleted files and/or folders. -#[derive(Debug, Clone, PartialEq, Eq, Default)] -#[non_exhaustive] // structs may have more fields added in the future. -pub struct FileDeleteDetails { -} -const FILE_DELETE_DETAILS_FIELDS: &[&str] = &[]; -impl FileDeleteDetails { - // no _opt deserializer - pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( - mut map: V, - ) -> Result { - // ignore any fields found; none are presently recognized - crate::eat_json_fields(&mut map)?; - Ok(FileDeleteDetails {}) + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("folder_overview_location_asset", &self.folder_overview_location_asset)?; + Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for FileDeleteDetails { +impl<'de> ::serde::de::Deserialize<'de> for FolderOverviewDescriptionChangedDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = FileDeleteDetails; + type Value = FolderOverviewDescriptionChangedDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a FileDeleteDetails struct") + f.write_str("a FolderOverviewDescriptionChangedDetails struct") } fn visit_map>(self, map: V) -> Result { - FileDeleteDetails::internal_deserialize(map) + FolderOverviewDescriptionChangedDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("FileDeleteDetails", FILE_DELETE_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("FolderOverviewDescriptionChangedDetails", FOLDER_OVERVIEW_DESCRIPTION_CHANGED_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for FileDeleteDetails { +impl ::serde::ser::Serialize for FolderOverviewDescriptionChangedDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - serializer.serialize_struct("FileDeleteDetails", 0)?.end() + let mut s = serializer.serialize_struct("FolderOverviewDescriptionChangedDetails", 1)?; + self.internal_serialize::(&mut s)?; + s.end() } } #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct FileDeleteType { +pub struct FolderOverviewDescriptionChangedType { pub description: String, } -impl FileDeleteType { +impl FolderOverviewDescriptionChangedType { pub fn new(description: String) -> Self { - FileDeleteType { + FolderOverviewDescriptionChangedType { description, } } } -const FILE_DELETE_TYPE_FIELDS: &[&str] = &["description"]; -impl FileDeleteType { +const FOLDER_OVERVIEW_DESCRIPTION_CHANGED_TYPE_FIELDS: &[&str] = &["description"]; +impl FolderOverviewDescriptionChangedType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -39991,7 +61037,7 @@ impl FileDeleteType { if optional && nothing { return Ok(None); } - let result = FileDeleteType { + let result = FolderOverviewDescriptionChangedType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -40007,104 +61053,165 @@ impl FileDeleteType { } } -impl<'de> ::serde::de::Deserialize<'de> for FileDeleteType { +impl<'de> ::serde::de::Deserialize<'de> for FolderOverviewDescriptionChangedType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = FileDeleteType; + type Value = FolderOverviewDescriptionChangedType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a FileDeleteType struct") + f.write_str("a FolderOverviewDescriptionChangedType struct") } fn visit_map>(self, map: V) -> Result { - FileDeleteType::internal_deserialize(map) + FolderOverviewDescriptionChangedType::internal_deserialize(map) } } - deserializer.deserialize_struct("FileDeleteType", FILE_DELETE_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("FolderOverviewDescriptionChangedType", FOLDER_OVERVIEW_DESCRIPTION_CHANGED_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for FileDeleteType { +impl ::serde::ser::Serialize for FolderOverviewDescriptionChangedType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("FileDeleteType", 1)?; + let mut s = serializer.serialize_struct("FolderOverviewDescriptionChangedType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Downloaded files and/or folders. -#[derive(Debug, Clone, PartialEq, Eq, Default)] +/// Pinned item to folder overview. +#[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct FileDownloadDetails { +pub struct FolderOverviewItemPinnedDetails { + /// Folder Overview location position in the Assets list. + pub folder_overview_location_asset: u64, + /// Pinned items positions in the Assets list. + pub pinned_items_asset_indices: Vec, } -const FILE_DOWNLOAD_DETAILS_FIELDS: &[&str] = &[]; -impl FileDownloadDetails { - // no _opt deserializer +impl FolderOverviewItemPinnedDetails { + pub fn new(folder_overview_location_asset: u64, pinned_items_asset_indices: Vec) -> Self { + FolderOverviewItemPinnedDetails { + folder_overview_location_asset, + pinned_items_asset_indices, + } + } +} + +const FOLDER_OVERVIEW_ITEM_PINNED_DETAILS_FIELDS: &[&str] = &["folder_overview_location_asset", + "pinned_items_asset_indices"]; +impl FolderOverviewItemPinnedDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - ) -> Result { - // ignore any fields found; none are presently recognized - crate::eat_json_fields(&mut map)?; - Ok(FileDownloadDetails {}) + optional: bool, + ) -> Result, V::Error> { + let mut field_folder_overview_location_asset = None; + let mut field_pinned_items_asset_indices = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "folder_overview_location_asset" => { + if field_folder_overview_location_asset.is_some() { + return Err(::serde::de::Error::duplicate_field("folder_overview_location_asset")); + } + field_folder_overview_location_asset = Some(map.next_value()?); + } + "pinned_items_asset_indices" => { + if field_pinned_items_asset_indices.is_some() { + return Err(::serde::de::Error::duplicate_field("pinned_items_asset_indices")); + } + field_pinned_items_asset_indices = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } + } + } + if optional && nothing { + return Ok(None); + } + let result = FolderOverviewItemPinnedDetails { + folder_overview_location_asset: field_folder_overview_location_asset.ok_or_else(|| ::serde::de::Error::missing_field("folder_overview_location_asset"))?, + pinned_items_asset_indices: field_pinned_items_asset_indices.ok_or_else(|| ::serde::de::Error::missing_field("pinned_items_asset_indices"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("folder_overview_location_asset", &self.folder_overview_location_asset)?; + s.serialize_field("pinned_items_asset_indices", &self.pinned_items_asset_indices)?; + Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for FileDownloadDetails { +impl<'de> ::serde::de::Deserialize<'de> for FolderOverviewItemPinnedDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = FileDownloadDetails; + type Value = FolderOverviewItemPinnedDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a FileDownloadDetails struct") + f.write_str("a FolderOverviewItemPinnedDetails struct") } fn visit_map>(self, map: V) -> Result { - FileDownloadDetails::internal_deserialize(map) + FolderOverviewItemPinnedDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("FileDownloadDetails", FILE_DOWNLOAD_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("FolderOverviewItemPinnedDetails", FOLDER_OVERVIEW_ITEM_PINNED_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for FileDownloadDetails { +impl ::serde::ser::Serialize for FolderOverviewItemPinnedDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - serializer.serialize_struct("FileDownloadDetails", 0)?.end() + let mut s = serializer.serialize_struct("FolderOverviewItemPinnedDetails", 2)?; + self.internal_serialize::(&mut s)?; + s.end() } } #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct FileDownloadType { +pub struct FolderOverviewItemPinnedType { pub description: String, } -impl FileDownloadType { +impl FolderOverviewItemPinnedType { pub fn new(description: String) -> Self { - FileDownloadType { + FolderOverviewItemPinnedType { description, } } } -const FILE_DOWNLOAD_TYPE_FIELDS: &[&str] = &["description"]; -impl FileDownloadType { +const FOLDER_OVERVIEW_ITEM_PINNED_TYPE_FIELDS: &[&str] = &["description"]; +impl FolderOverviewItemPinnedType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -40125,7 +61232,7 @@ impl FileDownloadType { if optional && nothing { return Ok(None); } - let result = FileDownloadType { + let result = FolderOverviewItemPinnedType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -40141,88 +61248,83 @@ impl FileDownloadType { } } -impl<'de> ::serde::de::Deserialize<'de> for FileDownloadType { +impl<'de> ::serde::de::Deserialize<'de> for FolderOverviewItemPinnedType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = FileDownloadType; + type Value = FolderOverviewItemPinnedType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a FileDownloadType struct") + f.write_str("a FolderOverviewItemPinnedType struct") } fn visit_map>(self, map: V) -> Result { - FileDownloadType::internal_deserialize(map) + FolderOverviewItemPinnedType::internal_deserialize(map) } } - deserializer.deserialize_struct("FileDownloadType", FILE_DOWNLOAD_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("FolderOverviewItemPinnedType", FOLDER_OVERVIEW_ITEM_PINNED_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for FileDownloadType { +impl ::serde::ser::Serialize for FolderOverviewItemPinnedType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("FileDownloadType", 1)?; + let mut s = serializer.serialize_struct("FolderOverviewItemPinnedType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Edited file comment. +/// Unpinned item from folder overview. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct FileEditCommentDetails { - /// Previous comment text. - pub previous_comment_text: String, - /// Comment text. - pub comment_text: Option, +pub struct FolderOverviewItemUnpinnedDetails { + /// Folder Overview location position in the Assets list. + pub folder_overview_location_asset: u64, + /// Pinned items positions in the Assets list. + pub pinned_items_asset_indices: Vec, } -impl FileEditCommentDetails { - pub fn new(previous_comment_text: String) -> Self { - FileEditCommentDetails { - previous_comment_text, - comment_text: None, +impl FolderOverviewItemUnpinnedDetails { + pub fn new(folder_overview_location_asset: u64, pinned_items_asset_indices: Vec) -> Self { + FolderOverviewItemUnpinnedDetails { + folder_overview_location_asset, + pinned_items_asset_indices, } } - - pub fn with_comment_text(mut self, value: String) -> Self { - self.comment_text = Some(value); - self - } } -const FILE_EDIT_COMMENT_DETAILS_FIELDS: &[&str] = &["previous_comment_text", - "comment_text"]; -impl FileEditCommentDetails { +const FOLDER_OVERVIEW_ITEM_UNPINNED_DETAILS_FIELDS: &[&str] = &["folder_overview_location_asset", + "pinned_items_asset_indices"]; +impl FolderOverviewItemUnpinnedDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_previous_comment_text = None; - let mut field_comment_text = None; + ) -> Result, V::Error> { + let mut field_folder_overview_location_asset = None; + let mut field_pinned_items_asset_indices = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "previous_comment_text" => { - if field_previous_comment_text.is_some() { - return Err(::serde::de::Error::duplicate_field("previous_comment_text")); + "folder_overview_location_asset" => { + if field_folder_overview_location_asset.is_some() { + return Err(::serde::de::Error::duplicate_field("folder_overview_location_asset")); } - field_previous_comment_text = Some(map.next_value()?); + field_folder_overview_location_asset = Some(map.next_value()?); } - "comment_text" => { - if field_comment_text.is_some() { - return Err(::serde::de::Error::duplicate_field("comment_text")); + "pinned_items_asset_indices" => { + if field_pinned_items_asset_indices.is_some() { + return Err(::serde::de::Error::duplicate_field("pinned_items_asset_indices")); } - field_comment_text = Some(map.next_value()?); + field_pinned_items_asset_indices = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -40233,9 +61335,9 @@ impl FileEditCommentDetails { if optional && nothing { return Ok(None); } - let result = FileEditCommentDetails { - previous_comment_text: field_previous_comment_text.ok_or_else(|| ::serde::de::Error::missing_field("previous_comment_text"))?, - comment_text: field_comment_text.and_then(Option::flatten), + let result = FolderOverviewItemUnpinnedDetails { + folder_overview_location_asset: field_folder_overview_location_asset.ok_or_else(|| ::serde::de::Error::missing_field("folder_overview_location_asset"))?, + pinned_items_asset_indices: field_pinned_items_asset_indices.ok_or_else(|| ::serde::de::Error::missing_field("pinned_items_asset_indices"))?, }; Ok(Some(result)) } @@ -40245,37 +61347,35 @@ impl FileEditCommentDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("previous_comment_text", &self.previous_comment_text)?; - if let Some(val) = &self.comment_text { - s.serialize_field("comment_text", val)?; - } + s.serialize_field("folder_overview_location_asset", &self.folder_overview_location_asset)?; + s.serialize_field("pinned_items_asset_indices", &self.pinned_items_asset_indices)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for FileEditCommentDetails { +impl<'de> ::serde::de::Deserialize<'de> for FolderOverviewItemUnpinnedDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = FileEditCommentDetails; + type Value = FolderOverviewItemUnpinnedDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a FileEditCommentDetails struct") + f.write_str("a FolderOverviewItemUnpinnedDetails struct") } fn visit_map>(self, map: V) -> Result { - FileEditCommentDetails::internal_deserialize(map) + FolderOverviewItemUnpinnedDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("FileEditCommentDetails", FILE_EDIT_COMMENT_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("FolderOverviewItemUnpinnedDetails", FOLDER_OVERVIEW_ITEM_UNPINNED_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for FileEditCommentDetails { +impl ::serde::ser::Serialize for FolderOverviewItemUnpinnedDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("FileEditCommentDetails", 2)?; + let mut s = serializer.serialize_struct("FolderOverviewItemUnpinnedDetails", 2)?; self.internal_serialize::(&mut s)?; s.end() } @@ -40283,30 +61383,30 @@ impl ::serde::ser::Serialize for FileEditCommentDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct FileEditCommentType { +pub struct FolderOverviewItemUnpinnedType { pub description: String, } -impl FileEditCommentType { +impl FolderOverviewItemUnpinnedType { pub fn new(description: String) -> Self { - FileEditCommentType { + FolderOverviewItemUnpinnedType { description, } } } -const FILE_EDIT_COMMENT_TYPE_FIELDS: &[&str] = &["description"]; -impl FileEditCommentType { +const FOLDER_OVERVIEW_ITEM_UNPINNED_TYPE_FIELDS: &[&str] = &["description"]; +impl FolderOverviewItemUnpinnedType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -40327,7 +61427,7 @@ impl FileEditCommentType { if optional && nothing { return Ok(None); } - let result = FileEditCommentType { + let result = FolderOverviewItemUnpinnedType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -40343,114 +61443,292 @@ impl FileEditCommentType { } } -impl<'de> ::serde::de::Deserialize<'de> for FileEditCommentType { +impl<'de> ::serde::de::Deserialize<'de> for FolderOverviewItemUnpinnedType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = FileEditCommentType; + type Value = FolderOverviewItemUnpinnedType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a FileEditCommentType struct") + f.write_str("a FolderOverviewItemUnpinnedType struct") } fn visit_map>(self, map: V) -> Result { - FileEditCommentType::internal_deserialize(map) + FolderOverviewItemUnpinnedType::internal_deserialize(map) } } - deserializer.deserialize_struct("FileEditCommentType", FILE_EDIT_COMMENT_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("FolderOverviewItemUnpinnedType", FOLDER_OVERVIEW_ITEM_UNPINNED_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for FileEditCommentType { +impl ::serde::ser::Serialize for FolderOverviewItemUnpinnedType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("FileEditCommentType", 1)?; + let mut s = serializer.serialize_struct("FolderOverviewItemUnpinnedType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Edited files. -#[derive(Debug, Clone, PartialEq, Eq, Default)] +/// Geographic location details. +#[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct FileEditDetails { +pub struct GeoLocationLogInfo { + /// IP address. + pub ip_address: IpAddress, + /// City name. + pub city: Option, + /// Region name. + pub region: Option, + /// Country code. + pub country: Option, } -const FILE_EDIT_DETAILS_FIELDS: &[&str] = &[]; -impl FileEditDetails { - // no _opt deserializer +impl GeoLocationLogInfo { + pub fn new(ip_address: IpAddress) -> Self { + GeoLocationLogInfo { + ip_address, + city: None, + region: None, + country: None, + } + } + + pub fn with_city(mut self, value: String) -> Self { + self.city = Some(value); + self + } + + pub fn with_region(mut self, value: String) -> Self { + self.region = Some(value); + self + } + + pub fn with_country(mut self, value: String) -> Self { + self.country = Some(value); + self + } +} + +const GEO_LOCATION_LOG_INFO_FIELDS: &[&str] = &["ip_address", + "city", + "region", + "country"]; +impl GeoLocationLogInfo { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - ) -> Result { - // ignore any fields found; none are presently recognized - crate::eat_json_fields(&mut map)?; - Ok(FileEditDetails {}) + optional: bool, + ) -> Result, V::Error> { + let mut field_ip_address = None; + let mut field_city = None; + let mut field_region = None; + let mut field_country = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "ip_address" => { + if field_ip_address.is_some() { + return Err(::serde::de::Error::duplicate_field("ip_address")); + } + field_ip_address = Some(map.next_value()?); + } + "city" => { + if field_city.is_some() { + return Err(::serde::de::Error::duplicate_field("city")); + } + field_city = Some(map.next_value()?); + } + "region" => { + if field_region.is_some() { + return Err(::serde::de::Error::duplicate_field("region")); + } + field_region = Some(map.next_value()?); + } + "country" => { + if field_country.is_some() { + return Err(::serde::de::Error::duplicate_field("country")); + } + field_country = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } + } + } + if optional && nothing { + return Ok(None); + } + let result = GeoLocationLogInfo { + ip_address: field_ip_address.ok_or_else(|| ::serde::de::Error::missing_field("ip_address"))?, + city: field_city.and_then(Option::flatten), + region: field_region.and_then(Option::flatten), + country: field_country.and_then(Option::flatten), + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("ip_address", &self.ip_address)?; + if let Some(val) = &self.city { + s.serialize_field("city", val)?; + } + if let Some(val) = &self.region { + s.serialize_field("region", val)?; + } + if let Some(val) = &self.country { + s.serialize_field("country", val)?; + } + Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for FileEditDetails { +impl<'de> ::serde::de::Deserialize<'de> for GeoLocationLogInfo { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = FileEditDetails; + type Value = GeoLocationLogInfo; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a FileEditDetails struct") + f.write_str("a GeoLocationLogInfo struct") } fn visit_map>(self, map: V) -> Result { - FileEditDetails::internal_deserialize(map) + GeoLocationLogInfo::internal_deserialize(map) } } - deserializer.deserialize_struct("FileEditDetails", FILE_EDIT_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("GeoLocationLogInfo", GEO_LOCATION_LOG_INFO_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for FileEditDetails { +impl ::serde::ser::Serialize for GeoLocationLogInfo { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - serializer.serialize_struct("FileEditDetails", 0)?.end() + let mut s = serializer.serialize_struct("GeoLocationLogInfo", 4)?; + self.internal_serialize::(&mut s)?; + s.end() } } #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct FileEditType { - pub description: String, +pub struct GetTeamEventsArg { + /// The maximal number of results to return per call. Note that some calls may not return + /// `limit` number of events, and may even return no events, even with `has_more` set to true. + /// In this case, callers should fetch again using + /// [`get_events_continue()`](crate::team_log::get_events_continue). + pub limit: u32, + /// Filter the events by account ID. Return only events with this account_id as either Actor, + /// Context, or Participants. + pub account_id: Option, + /// Filter by time range. + pub time: Option, + /// Filter the returned events to a single category. Note that category shouldn't be provided + /// together with event_type. + pub category: Option, + /// Filter the returned events to a single event type. Note that event_type shouldn't be + /// provided together with category. + pub event_type: Option, } -impl FileEditType { - pub fn new(description: String) -> Self { - FileEditType { - description, +impl Default for GetTeamEventsArg { + fn default() -> Self { + GetTeamEventsArg { + limit: 1000, + account_id: None, + time: None, + category: None, + event_type: None, } } } -const FILE_EDIT_TYPE_FIELDS: &[&str] = &["description"]; -impl FileEditType { +impl GetTeamEventsArg { + pub fn with_limit(mut self, value: u32) -> Self { + self.limit = value; + self + } + + pub fn with_account_id(mut self, value: crate::types::users_common::AccountId) -> Self { + self.account_id = Some(value); + self + } + + pub fn with_time(mut self, value: crate::types::team_common::TimeRange) -> Self { + self.time = Some(value); + self + } + + pub fn with_category(mut self, value: EventCategory) -> Self { + self.category = Some(value); + self + } + + pub fn with_event_type(mut self, value: EventTypeArg) -> Self { + self.event_type = Some(value); + self + } +} + +const GET_TEAM_EVENTS_ARG_FIELDS: &[&str] = &["limit", + "account_id", + "time", + "category", + "event_type"]; +impl GetTeamEventsArg { + // no _opt deserializer pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( - map: V, - ) -> Result { - Self::internal_deserialize_opt(map, false).map(Option::unwrap) - } - - pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - optional: bool, - ) -> Result, V::Error> { - let mut field_description = None; - let mut nothing = true; + ) -> Result { + let mut field_limit = None; + let mut field_account_id = None; + let mut field_time = None; + let mut field_category = None; + let mut field_event_type = None; while let Some(key) = map.next_key::<&str>()? { - nothing = false; match key { - "description" => { - if field_description.is_some() { - return Err(::serde::de::Error::duplicate_field("description")); + "limit" => { + if field_limit.is_some() { + return Err(::serde::de::Error::duplicate_field("limit")); } - field_description = Some(map.next_value()?); + field_limit = Some(map.next_value()?); + } + "account_id" => { + if field_account_id.is_some() { + return Err(::serde::de::Error::duplicate_field("account_id")); + } + field_account_id = Some(map.next_value()?); + } + "time" => { + if field_time.is_some() { + return Err(::serde::de::Error::duplicate_field("time")); + } + field_time = Some(map.next_value()?); + } + "category" => { + if field_category.is_some() { + return Err(::serde::de::Error::duplicate_field("category")); + } + field_category = Some(map.next_value()?); + } + "event_type" => { + if field_event_type.is_some() { + return Err(::serde::de::Error::duplicate_field("event_type")); + } + field_event_type = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -40458,13 +61736,14 @@ impl FileEditType { } } } - if optional && nothing { - return Ok(None); - } - let result = FileEditType { - description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + let result = GetTeamEventsArg { + limit: field_limit.unwrap_or(1000), + account_id: field_account_id.and_then(Option::flatten), + time: field_time.and_then(Option::flatten), + category: field_category.and_then(Option::flatten), + event_type: field_event_type.and_then(Option::flatten), }; - Ok(Some(result)) + Ok(result) } pub(crate) fn internal_serialize( @@ -40472,119 +61751,90 @@ impl FileEditType { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("description", &self.description)?; + if self.limit != 1000 { + s.serialize_field("limit", &self.limit)?; + } + if let Some(val) = &self.account_id { + s.serialize_field("account_id", val)?; + } + if let Some(val) = &self.time { + s.serialize_field("time", val)?; + } + if let Some(val) = &self.category { + s.serialize_field("category", val)?; + } + if let Some(val) = &self.event_type { + s.serialize_field("event_type", val)?; + } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for FileEditType { +impl<'de> ::serde::de::Deserialize<'de> for GetTeamEventsArg { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = FileEditType; + type Value = GetTeamEventsArg; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a FileEditType struct") + f.write_str("a GetTeamEventsArg struct") } fn visit_map>(self, map: V) -> Result { - FileEditType::internal_deserialize(map) + GetTeamEventsArg::internal_deserialize(map) } } - deserializer.deserialize_struct("FileEditType", FILE_EDIT_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("GetTeamEventsArg", GET_TEAM_EVENTS_ARG_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for FileEditType { +impl ::serde::ser::Serialize for GetTeamEventsArg { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("FileEditType", 1)?; + let mut s = serializer.serialize_struct("GetTeamEventsArg", 5)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Created copy reference to file/folder. -#[derive(Debug, Clone, PartialEq, Eq, Default)] -#[non_exhaustive] // structs may have more fields added in the future. -pub struct FileGetCopyReferenceDetails { -} - -const FILE_GET_COPY_REFERENCE_DETAILS_FIELDS: &[&str] = &[]; -impl FileGetCopyReferenceDetails { - // no _opt deserializer - pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( - mut map: V, - ) -> Result { - // ignore any fields found; none are presently recognized - crate::eat_json_fields(&mut map)?; - Ok(FileGetCopyReferenceDetails {}) - } -} - -impl<'de> ::serde::de::Deserialize<'de> for FileGetCopyReferenceDetails { - fn deserialize>(deserializer: D) -> Result { - // struct deserializer - use serde::de::{MapAccess, Visitor}; - struct StructVisitor; - impl<'de> Visitor<'de> for StructVisitor { - type Value = FileGetCopyReferenceDetails; - fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a FileGetCopyReferenceDetails struct") - } - fn visit_map>(self, map: V) -> Result { - FileGetCopyReferenceDetails::internal_deserialize(map) - } - } - deserializer.deserialize_struct("FileGetCopyReferenceDetails", FILE_GET_COPY_REFERENCE_DETAILS_FIELDS, StructVisitor) - } -} - -impl ::serde::ser::Serialize for FileGetCopyReferenceDetails { - fn serialize(&self, serializer: S) -> Result { - // struct serializer - use serde::ser::SerializeStruct; - serializer.serialize_struct("FileGetCopyReferenceDetails", 0)?.end() - } -} - #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct FileGetCopyReferenceType { - pub description: String, +pub struct GetTeamEventsContinueArg { + /// Indicates from what point to get the next set of events. + pub cursor: String, } -impl FileGetCopyReferenceType { - pub fn new(description: String) -> Self { - FileGetCopyReferenceType { - description, +impl GetTeamEventsContinueArg { + pub fn new(cursor: String) -> Self { + GetTeamEventsContinueArg { + cursor, } } } -const FILE_GET_COPY_REFERENCE_TYPE_FIELDS: &[&str] = &["description"]; -impl FileGetCopyReferenceType { +const GET_TEAM_EVENTS_CONTINUE_ARG_FIELDS: &[&str] = &["cursor"]; +impl GetTeamEventsContinueArg { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_description = None; + ) -> Result, V::Error> { + let mut field_cursor = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "description" => { - if field_description.is_some() { - return Err(::serde::de::Error::duplicate_field("description")); + "cursor" => { + if field_cursor.is_some() { + return Err(::serde::de::Error::duplicate_field("cursor")); } - field_description = Some(map.next_value()?); + field_cursor = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -40595,8 +61845,8 @@ impl FileGetCopyReferenceType { if optional && nothing { return Ok(None); } - let result = FileGetCopyReferenceType { - description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + let result = GetTeamEventsContinueArg { + cursor: field_cursor.ok_or_else(|| ::serde::de::Error::missing_field("cursor"))?, }; Ok(Some(result)) } @@ -40606,157 +61856,288 @@ impl FileGetCopyReferenceType { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("description", &self.description)?; + s.serialize_field("cursor", &self.cursor)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for FileGetCopyReferenceType { +impl<'de> ::serde::de::Deserialize<'de> for GetTeamEventsContinueArg { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = FileGetCopyReferenceType; + type Value = GetTeamEventsContinueArg; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a FileGetCopyReferenceType struct") + f.write_str("a GetTeamEventsContinueArg struct") } fn visit_map>(self, map: V) -> Result { - FileGetCopyReferenceType::internal_deserialize(map) + GetTeamEventsContinueArg::internal_deserialize(map) } } - deserializer.deserialize_struct("FileGetCopyReferenceType", FILE_GET_COPY_REFERENCE_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("GetTeamEventsContinueArg", GET_TEAM_EVENTS_CONTINUE_ARG_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for FileGetCopyReferenceType { +impl ::serde::ser::Serialize for GetTeamEventsContinueArg { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("FileGetCopyReferenceType", 1)?; + let mut s = serializer.serialize_struct("GetTeamEventsContinueArg", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Liked file comment. -#[derive(Debug, Clone, PartialEq, Eq, Default)] -#[non_exhaustive] // structs may have more fields added in the future. -pub struct FileLikeCommentDetails { - /// Comment text. - pub comment_text: Option, +/// Errors that can be raised when calling +/// [`get_events_continue()`](crate::team_log::get_events_continue). +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // variants may be added in the future +pub enum GetTeamEventsContinueError { + /// Bad cursor. + BadCursor, + /// Cursors are intended to be used quickly. Individual cursor values are normally valid for + /// days, but in rare cases may be reset sooner. Cursor reset errors should be handled by + /// fetching a new cursor from [`get_events()`](crate::team_log::get_events). The associated + /// value is the approximate timestamp of the most recent event returned by the cursor. This + /// should be used as a resumption point when calling + /// [`get_events()`](crate::team_log::get_events) to obtain a new cursor. + Reset(crate::types::common::DropboxTimestamp), + /// Catch-all used for unrecognized values returned from the server. Encountering this value + /// typically indicates that this SDK version is out of date. + Other, } -impl FileLikeCommentDetails { - pub fn with_comment_text(mut self, value: String) -> Self { - self.comment_text = Some(value); - self +impl<'de> ::serde::de::Deserialize<'de> for GetTeamEventsContinueError { + fn deserialize>(deserializer: D) -> Result { + // union deserializer + use serde::de::{self, MapAccess, Visitor}; + struct EnumVisitor; + impl<'de> Visitor<'de> for EnumVisitor { + type Value = GetTeamEventsContinueError; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a GetTeamEventsContinueError structure") + } + fn visit_map>(self, mut map: V) -> Result { + let tag: &str = match map.next_key()? { + Some(".tag") => map.next_value()?, + _ => return Err(de::Error::missing_field(".tag")) + }; + let value = match tag { + "bad_cursor" => GetTeamEventsContinueError::BadCursor, + "reset" => { + match map.next_key()? { + Some("reset") => GetTeamEventsContinueError::Reset(map.next_value()?), + None => return Err(de::Error::missing_field("reset")), + _ => return Err(de::Error::unknown_field(tag, VARIANTS)) + } + } + _ => GetTeamEventsContinueError::Other, + }; + crate::eat_json_fields(&mut map)?; + Ok(value) + } + } + const VARIANTS: &[&str] = &["bad_cursor", + "reset", + "other"]; + deserializer.deserialize_struct("GetTeamEventsContinueError", VARIANTS, EnumVisitor) } } -const FILE_LIKE_COMMENT_DETAILS_FIELDS: &[&str] = &["comment_text"]; -impl FileLikeCommentDetails { - // no _opt deserializer - pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( - mut map: V, - ) -> Result { - let mut field_comment_text = None; - while let Some(key) = map.next_key::<&str>()? { - match key { - "comment_text" => { - if field_comment_text.is_some() { - return Err(::serde::de::Error::duplicate_field("comment_text")); - } - field_comment_text = Some(map.next_value()?); - } - _ => { - // unknown field allowed and ignored - map.next_value::<::serde_json::Value>()?; - } +impl ::serde::ser::Serialize for GetTeamEventsContinueError { + fn serialize(&self, serializer: S) -> Result { + // union serializer + use serde::ser::SerializeStruct; + match self { + GetTeamEventsContinueError::BadCursor => { + // unit + let mut s = serializer.serialize_struct("GetTeamEventsContinueError", 1)?; + s.serialize_field(".tag", "bad_cursor")?; + s.end() + } + GetTeamEventsContinueError::Reset(x) => { + // primitive + let mut s = serializer.serialize_struct("GetTeamEventsContinueError", 2)?; + s.serialize_field(".tag", "reset")?; + s.serialize_field("reset", x)?; + s.end() } + GetTeamEventsContinueError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) } - let result = FileLikeCommentDetails { - comment_text: field_comment_text.and_then(Option::flatten), - }; - Ok(result) } +} - pub(crate) fn internal_serialize( - &self, - s: &mut S::SerializeStruct, - ) -> Result<(), S::Error> { - use serde::ser::SerializeStruct; - if let Some(val) = &self.comment_text { - s.serialize_field("comment_text", val)?; +impl ::std::error::Error for GetTeamEventsContinueError { +} + +impl ::std::fmt::Display for GetTeamEventsContinueError { + fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + match self { + GetTeamEventsContinueError::BadCursor => f.write_str("Bad cursor."), + GetTeamEventsContinueError::Reset(inner) => write!(f, "reset: {:?}", inner), + _ => write!(f, "{:?}", *self), } - Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for FileLikeCommentDetails { +/// Errors that can be raised when calling [`get_events()`](crate::team_log::get_events). +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // variants may be added in the future +pub enum GetTeamEventsError { + /// No user found matching the provided account_id. + AccountIdNotFound, + /// Invalid time range. + InvalidTimeRange, + /// Invalid filters. Do not specify both event_type and category parameters for the same call. + InvalidFilters, + /// Catch-all used for unrecognized values returned from the server. Encountering this value + /// typically indicates that this SDK version is out of date. + Other, +} + +impl<'de> ::serde::de::Deserialize<'de> for GetTeamEventsError { fn deserialize>(deserializer: D) -> Result { - // struct deserializer - use serde::de::{MapAccess, Visitor}; - struct StructVisitor; - impl<'de> Visitor<'de> for StructVisitor { - type Value = FileLikeCommentDetails; + // union deserializer + use serde::de::{self, MapAccess, Visitor}; + struct EnumVisitor; + impl<'de> Visitor<'de> for EnumVisitor { + type Value = GetTeamEventsError; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a FileLikeCommentDetails struct") + f.write_str("a GetTeamEventsError structure") } - fn visit_map>(self, map: V) -> Result { - FileLikeCommentDetails::internal_deserialize(map) + fn visit_map>(self, mut map: V) -> Result { + let tag: &str = match map.next_key()? { + Some(".tag") => map.next_value()?, + _ => return Err(de::Error::missing_field(".tag")) + }; + let value = match tag { + "account_id_not_found" => GetTeamEventsError::AccountIdNotFound, + "invalid_time_range" => GetTeamEventsError::InvalidTimeRange, + "invalid_filters" => GetTeamEventsError::InvalidFilters, + _ => GetTeamEventsError::Other, + }; + crate::eat_json_fields(&mut map)?; + Ok(value) } } - deserializer.deserialize_struct("FileLikeCommentDetails", FILE_LIKE_COMMENT_DETAILS_FIELDS, StructVisitor) + const VARIANTS: &[&str] = &["account_id_not_found", + "invalid_time_range", + "invalid_filters", + "other"]; + deserializer.deserialize_struct("GetTeamEventsError", VARIANTS, EnumVisitor) } } -impl ::serde::ser::Serialize for FileLikeCommentDetails { +impl ::serde::ser::Serialize for GetTeamEventsError { fn serialize(&self, serializer: S) -> Result { - // struct serializer + // union serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("FileLikeCommentDetails", 1)?; - self.internal_serialize::(&mut s)?; - s.end() + match self { + GetTeamEventsError::AccountIdNotFound => { + // unit + let mut s = serializer.serialize_struct("GetTeamEventsError", 1)?; + s.serialize_field(".tag", "account_id_not_found")?; + s.end() + } + GetTeamEventsError::InvalidTimeRange => { + // unit + let mut s = serializer.serialize_struct("GetTeamEventsError", 1)?; + s.serialize_field(".tag", "invalid_time_range")?; + s.end() + } + GetTeamEventsError::InvalidFilters => { + // unit + let mut s = serializer.serialize_struct("GetTeamEventsError", 1)?; + s.serialize_field(".tag", "invalid_filters")?; + s.end() + } + GetTeamEventsError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) + } + } +} + +impl ::std::error::Error for GetTeamEventsError { +} + +impl ::std::fmt::Display for GetTeamEventsError { + fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + match self { + GetTeamEventsError::AccountIdNotFound => f.write_str("No user found matching the provided account_id."), + GetTeamEventsError::InvalidTimeRange => f.write_str("Invalid time range."), + GetTeamEventsError::InvalidFilters => f.write_str("Invalid filters. Do not specify both event_type and category parameters for the same call."), + _ => write!(f, "{:?}", *self), + } } } #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct FileLikeCommentType { - pub description: String, +pub struct GetTeamEventsResult { + /// List of events. Note that events are not guaranteed to be sorted by their timestamp value. + pub events: Vec, + /// Pass the cursor into [`get_events_continue()`](crate::team_log::get_events_continue) to + /// obtain additional events. The value of `cursor` may change for each response from + /// [`get_events_continue()`](crate::team_log::get_events_continue), regardless of the value of + /// `has_more`; older cursor strings may expire. Thus, callers should ensure that they update + /// their cursor based on the latest value of `cursor` after each call, and poll regularly if + /// they wish to poll for new events. Callers should handle reset exceptions for expired + /// cursors. + pub cursor: String, + /// Is true if there may be additional events that have not been returned yet. An additional + /// call to [`get_events_continue()`](crate::team_log::get_events_continue) can retrieve them. + /// Note that `has_more` may be `true`, even if `events` is empty. + pub has_more: bool, } -impl FileLikeCommentType { - pub fn new(description: String) -> Self { - FileLikeCommentType { - description, +impl GetTeamEventsResult { + pub fn new(events: Vec, cursor: String, has_more: bool) -> Self { + GetTeamEventsResult { + events, + cursor, + has_more, } } } -const FILE_LIKE_COMMENT_TYPE_FIELDS: &[&str] = &["description"]; -impl FileLikeCommentType { +const GET_TEAM_EVENTS_RESULT_FIELDS: &[&str] = &["events", + "cursor", + "has_more"]; +impl GetTeamEventsResult { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_description = None; + ) -> Result, V::Error> { + let mut field_events = None; + let mut field_cursor = None; + let mut field_has_more = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "description" => { - if field_description.is_some() { - return Err(::serde::de::Error::duplicate_field("description")); + "events" => { + if field_events.is_some() { + return Err(::serde::de::Error::duplicate_field("events")); } - field_description = Some(map.next_value()?); + field_events = Some(map.next_value()?); + } + "cursor" => { + if field_cursor.is_some() { + return Err(::serde::de::Error::duplicate_field("cursor")); + } + field_cursor = Some(map.next_value()?); + } + "has_more" => { + if field_has_more.is_some() { + return Err(::serde::de::Error::duplicate_field("has_more")); + } + field_has_more = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -40767,8 +62148,10 @@ impl FileLikeCommentType { if optional && nothing { return Ok(None); } - let result = FileLikeCommentType { - description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + let result = GetTeamEventsResult { + events: field_events.ok_or_else(|| ::serde::de::Error::missing_field("events"))?, + cursor: field_cursor.ok_or_else(|| ::serde::de::Error::missing_field("cursor"))?, + has_more: field_has_more.ok_or_else(|| ::serde::de::Error::missing_field("has_more"))?, }; Ok(Some(result)) } @@ -40778,89 +62161,96 @@ impl FileLikeCommentType { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("description", &self.description)?; + s.serialize_field("events", &self.events)?; + s.serialize_field("cursor", &self.cursor)?; + s.serialize_field("has_more", &self.has_more)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for FileLikeCommentType { +impl<'de> ::serde::de::Deserialize<'de> for GetTeamEventsResult { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = FileLikeCommentType; + type Value = GetTeamEventsResult; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a FileLikeCommentType struct") + f.write_str("a GetTeamEventsResult struct") } fn visit_map>(self, map: V) -> Result { - FileLikeCommentType::internal_deserialize(map) + GetTeamEventsResult::internal_deserialize(map) } } - deserializer.deserialize_struct("FileLikeCommentType", FILE_LIKE_COMMENT_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("GetTeamEventsResult", GET_TEAM_EVENTS_RESULT_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for FileLikeCommentType { +impl ::serde::ser::Serialize for GetTeamEventsResult { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("FileLikeCommentType", 1)?; + let mut s = serializer.serialize_struct("GetTeamEventsResult", 3)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Locked/unlocked editing for a file. +/// Enabled/disabled Google single sign-on for team. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct FileLockingLockStatusChangedDetails { - /// Previous lock status of the file. - pub previous_value: LockStatus, - /// New lock status of the file. - pub new_value: LockStatus, +pub struct GoogleSsoChangePolicyDetails { + /// New Google single sign-on policy. + pub new_value: GoogleSsoPolicy, + /// Previous Google single sign-on policy. Might be missing due to historical data gap. + pub previous_value: Option, } -impl FileLockingLockStatusChangedDetails { - pub fn new(previous_value: LockStatus, new_value: LockStatus) -> Self { - FileLockingLockStatusChangedDetails { - previous_value, +impl GoogleSsoChangePolicyDetails { + pub fn new(new_value: GoogleSsoPolicy) -> Self { + GoogleSsoChangePolicyDetails { new_value, + previous_value: None, } } + + pub fn with_previous_value(mut self, value: GoogleSsoPolicy) -> Self { + self.previous_value = Some(value); + self + } } -const FILE_LOCKING_LOCK_STATUS_CHANGED_DETAILS_FIELDS: &[&str] = &["previous_value", - "new_value"]; -impl FileLockingLockStatusChangedDetails { +const GOOGLE_SSO_CHANGE_POLICY_DETAILS_FIELDS: &[&str] = &["new_value", + "previous_value"]; +impl GoogleSsoChangePolicyDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_previous_value = None; + ) -> Result, V::Error> { let mut field_new_value = None; + let mut field_previous_value = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "previous_value" => { - if field_previous_value.is_some() { - return Err(::serde::de::Error::duplicate_field("previous_value")); - } - field_previous_value = Some(map.next_value()?); - } "new_value" => { if field_new_value.is_some() { return Err(::serde::de::Error::duplicate_field("new_value")); } field_new_value = Some(map.next_value()?); } + "previous_value" => { + if field_previous_value.is_some() { + return Err(::serde::de::Error::duplicate_field("previous_value")); + } + field_previous_value = Some(map.next_value()?); + } _ => { // unknown field allowed and ignored map.next_value::<::serde_json::Value>()?; @@ -40870,9 +62260,9 @@ impl FileLockingLockStatusChangedDetails { if optional && nothing { return Ok(None); } - let result = FileLockingLockStatusChangedDetails { - previous_value: field_previous_value.ok_or_else(|| ::serde::de::Error::missing_field("previous_value"))?, + let result = GoogleSsoChangePolicyDetails { new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, + previous_value: field_previous_value.and_then(Option::flatten), }; Ok(Some(result)) } @@ -40882,35 +62272,37 @@ impl FileLockingLockStatusChangedDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("previous_value", &self.previous_value)?; s.serialize_field("new_value", &self.new_value)?; + if let Some(val) = &self.previous_value { + s.serialize_field("previous_value", val)?; + } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for FileLockingLockStatusChangedDetails { +impl<'de> ::serde::de::Deserialize<'de> for GoogleSsoChangePolicyDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = FileLockingLockStatusChangedDetails; + type Value = GoogleSsoChangePolicyDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a FileLockingLockStatusChangedDetails struct") + f.write_str("a GoogleSsoChangePolicyDetails struct") } fn visit_map>(self, map: V) -> Result { - FileLockingLockStatusChangedDetails::internal_deserialize(map) + GoogleSsoChangePolicyDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("FileLockingLockStatusChangedDetails", FILE_LOCKING_LOCK_STATUS_CHANGED_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("GoogleSsoChangePolicyDetails", GOOGLE_SSO_CHANGE_POLICY_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for FileLockingLockStatusChangedDetails { +impl ::serde::ser::Serialize for GoogleSsoChangePolicyDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("FileLockingLockStatusChangedDetails", 2)?; + let mut s = serializer.serialize_struct("GoogleSsoChangePolicyDetails", 2)?; self.internal_serialize::(&mut s)?; s.end() } @@ -40918,30 +62310,30 @@ impl ::serde::ser::Serialize for FileLockingLockStatusChangedDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct FileLockingLockStatusChangedType { +pub struct GoogleSsoChangePolicyType { pub description: String, } -impl FileLockingLockStatusChangedType { +impl GoogleSsoChangePolicyType { pub fn new(description: String) -> Self { - FileLockingLockStatusChangedType { + GoogleSsoChangePolicyType { description, } } } -const FILE_LOCKING_LOCK_STATUS_CHANGED_TYPE_FIELDS: &[&str] = &["description"]; -impl FileLockingLockStatusChangedType { +const GOOGLE_SSO_CHANGE_POLICY_TYPE_FIELDS: &[&str] = &["description"]; +impl GoogleSsoChangePolicyType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -40962,7 +62354,7 @@ impl FileLockingLockStatusChangedType { if optional && nothing { return Ok(None); } - let result = FileLockingLockStatusChangedType { + let result = GoogleSsoChangePolicyType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -40978,86 +62370,190 @@ impl FileLockingLockStatusChangedType { } } -impl<'de> ::serde::de::Deserialize<'de> for FileLockingLockStatusChangedType { +impl<'de> ::serde::de::Deserialize<'de> for GoogleSsoChangePolicyType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = FileLockingLockStatusChangedType; + type Value = GoogleSsoChangePolicyType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a FileLockingLockStatusChangedType struct") + f.write_str("a GoogleSsoChangePolicyType struct") } fn visit_map>(self, map: V) -> Result { - FileLockingLockStatusChangedType::internal_deserialize(map) + GoogleSsoChangePolicyType::internal_deserialize(map) } } - deserializer.deserialize_struct("FileLockingLockStatusChangedType", FILE_LOCKING_LOCK_STATUS_CHANGED_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("GoogleSsoChangePolicyType", GOOGLE_SSO_CHANGE_POLICY_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for FileLockingLockStatusChangedType { +impl ::serde::ser::Serialize for GoogleSsoChangePolicyType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("FileLockingLockStatusChangedType", 1)?; + let mut s = serializer.serialize_struct("GoogleSsoChangePolicyType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Changed file locking policy for team. +/// Google SSO policy +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // variants may be added in the future +pub enum GoogleSsoPolicy { + Disabled, + Enabled, + /// Catch-all used for unrecognized values returned from the server. Encountering this value + /// typically indicates that this SDK version is out of date. + Other, +} + +impl<'de> ::serde::de::Deserialize<'de> for GoogleSsoPolicy { + fn deserialize>(deserializer: D) -> Result { + // union deserializer + use serde::de::{self, MapAccess, Visitor}; + struct EnumVisitor; + impl<'de> Visitor<'de> for EnumVisitor { + type Value = GoogleSsoPolicy; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a GoogleSsoPolicy structure") + } + fn visit_map>(self, mut map: V) -> Result { + let tag: &str = match map.next_key()? { + Some(".tag") => map.next_value()?, + _ => return Err(de::Error::missing_field(".tag")) + }; + let value = match tag { + "disabled" => GoogleSsoPolicy::Disabled, + "enabled" => GoogleSsoPolicy::Enabled, + _ => GoogleSsoPolicy::Other, + }; + crate::eat_json_fields(&mut map)?; + Ok(value) + } + } + const VARIANTS: &[&str] = &["disabled", + "enabled", + "other"]; + deserializer.deserialize_struct("GoogleSsoPolicy", VARIANTS, EnumVisitor) + } +} + +impl ::serde::ser::Serialize for GoogleSsoPolicy { + fn serialize(&self, serializer: S) -> Result { + // union serializer + use serde::ser::SerializeStruct; + match self { + GoogleSsoPolicy::Disabled => { + // unit + let mut s = serializer.serialize_struct("GoogleSsoPolicy", 1)?; + s.serialize_field(".tag", "disabled")?; + s.end() + } + GoogleSsoPolicy::Enabled => { + // unit + let mut s = serializer.serialize_struct("GoogleSsoPolicy", 1)?; + s.serialize_field(".tag", "enabled")?; + s.end() + } + GoogleSsoPolicy::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) + } + } +} + +/// Couldn't add a folder to a policy. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct FileLockingPolicyChangedDetails { - /// New file locking policy. - pub new_value: crate::types::team_policies::FileLockingPolicyState, - /// Previous file locking policy. - pub previous_value: crate::types::team_policies::FileLockingPolicyState, +pub struct GovernancePolicyAddFolderFailedDetails { + /// Policy ID. + pub governance_policy_id: String, + /// Policy name. + pub name: String, + /// Folder. + pub folder: String, + /// Policy type. + pub policy_type: Option, + /// Reason. + pub reason: Option, } -impl FileLockingPolicyChangedDetails { - pub fn new( - new_value: crate::types::team_policies::FileLockingPolicyState, - previous_value: crate::types::team_policies::FileLockingPolicyState, - ) -> Self { - FileLockingPolicyChangedDetails { - new_value, - previous_value, +impl GovernancePolicyAddFolderFailedDetails { + pub fn new(governance_policy_id: String, name: String, folder: String) -> Self { + GovernancePolicyAddFolderFailedDetails { + governance_policy_id, + name, + folder, + policy_type: None, + reason: None, } } + + pub fn with_policy_type(mut self, value: PolicyType) -> Self { + self.policy_type = Some(value); + self + } + + pub fn with_reason(mut self, value: String) -> Self { + self.reason = Some(value); + self + } } -const FILE_LOCKING_POLICY_CHANGED_DETAILS_FIELDS: &[&str] = &["new_value", - "previous_value"]; -impl FileLockingPolicyChangedDetails { +const GOVERNANCE_POLICY_ADD_FOLDER_FAILED_DETAILS_FIELDS: &[&str] = &["governance_policy_id", + "name", + "folder", + "policy_type", + "reason"]; +impl GovernancePolicyAddFolderFailedDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_new_value = None; - let mut field_previous_value = None; + ) -> Result, V::Error> { + let mut field_governance_policy_id = None; + let mut field_name = None; + let mut field_folder = None; + let mut field_policy_type = None; + let mut field_reason = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "new_value" => { - if field_new_value.is_some() { - return Err(::serde::de::Error::duplicate_field("new_value")); + "governance_policy_id" => { + if field_governance_policy_id.is_some() { + return Err(::serde::de::Error::duplicate_field("governance_policy_id")); } - field_new_value = Some(map.next_value()?); + field_governance_policy_id = Some(map.next_value()?); } - "previous_value" => { - if field_previous_value.is_some() { - return Err(::serde::de::Error::duplicate_field("previous_value")); + "name" => { + if field_name.is_some() { + return Err(::serde::de::Error::duplicate_field("name")); } - field_previous_value = Some(map.next_value()?); + field_name = Some(map.next_value()?); + } + "folder" => { + if field_folder.is_some() { + return Err(::serde::de::Error::duplicate_field("folder")); + } + field_folder = Some(map.next_value()?); + } + "policy_type" => { + if field_policy_type.is_some() { + return Err(::serde::de::Error::duplicate_field("policy_type")); + } + field_policy_type = Some(map.next_value()?); + } + "reason" => { + if field_reason.is_some() { + return Err(::serde::de::Error::duplicate_field("reason")); + } + field_reason = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -41068,9 +62564,12 @@ impl FileLockingPolicyChangedDetails { if optional && nothing { return Ok(None); } - let result = FileLockingPolicyChangedDetails { - new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, - previous_value: field_previous_value.ok_or_else(|| ::serde::de::Error::missing_field("previous_value"))?, + let result = GovernancePolicyAddFolderFailedDetails { + governance_policy_id: field_governance_policy_id.ok_or_else(|| ::serde::de::Error::missing_field("governance_policy_id"))?, + name: field_name.ok_or_else(|| ::serde::de::Error::missing_field("name"))?, + folder: field_folder.ok_or_else(|| ::serde::de::Error::missing_field("folder"))?, + policy_type: field_policy_type.and_then(Option::flatten), + reason: field_reason.and_then(Option::flatten), }; Ok(Some(result)) } @@ -41080,35 +62579,42 @@ impl FileLockingPolicyChangedDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("new_value", &self.new_value)?; - s.serialize_field("previous_value", &self.previous_value)?; + s.serialize_field("governance_policy_id", &self.governance_policy_id)?; + s.serialize_field("name", &self.name)?; + s.serialize_field("folder", &self.folder)?; + if let Some(val) = &self.policy_type { + s.serialize_field("policy_type", val)?; + } + if let Some(val) = &self.reason { + s.serialize_field("reason", val)?; + } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for FileLockingPolicyChangedDetails { +impl<'de> ::serde::de::Deserialize<'de> for GovernancePolicyAddFolderFailedDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = FileLockingPolicyChangedDetails; + type Value = GovernancePolicyAddFolderFailedDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a FileLockingPolicyChangedDetails struct") + f.write_str("a GovernancePolicyAddFolderFailedDetails struct") } fn visit_map>(self, map: V) -> Result { - FileLockingPolicyChangedDetails::internal_deserialize(map) + GovernancePolicyAddFolderFailedDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("FileLockingPolicyChangedDetails", FILE_LOCKING_POLICY_CHANGED_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("GovernancePolicyAddFolderFailedDetails", GOVERNANCE_POLICY_ADD_FOLDER_FAILED_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for FileLockingPolicyChangedDetails { +impl ::serde::ser::Serialize for GovernancePolicyAddFolderFailedDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("FileLockingPolicyChangedDetails", 2)?; + let mut s = serializer.serialize_struct("GovernancePolicyAddFolderFailedDetails", 5)?; self.internal_serialize::(&mut s)?; s.end() } @@ -41116,30 +62622,30 @@ impl ::serde::ser::Serialize for FileLockingPolicyChangedDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct FileLockingPolicyChangedType { +pub struct GovernancePolicyAddFolderFailedType { pub description: String, } -impl FileLockingPolicyChangedType { +impl GovernancePolicyAddFolderFailedType { pub fn new(description: String) -> Self { - FileLockingPolicyChangedType { + GovernancePolicyAddFolderFailedType { description, } } } -const FILE_LOCKING_POLICY_CHANGED_TYPE_FIELDS: &[&str] = &["description"]; -impl FileLockingPolicyChangedType { +const GOVERNANCE_POLICY_ADD_FOLDER_FAILED_TYPE_FIELDS: &[&str] = &["description"]; +impl GovernancePolicyAddFolderFailedType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -41160,7 +62666,7 @@ impl FileLockingPolicyChangedType { if optional && nothing { return Ok(None); } - let result = FileLockingPolicyChangedType { + let result = GovernancePolicyAddFolderFailedType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -41176,120 +62682,115 @@ impl FileLockingPolicyChangedType { } } -impl<'de> ::serde::de::Deserialize<'de> for FileLockingPolicyChangedType { +impl<'de> ::serde::de::Deserialize<'de> for GovernancePolicyAddFolderFailedType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = FileLockingPolicyChangedType; + type Value = GovernancePolicyAddFolderFailedType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a FileLockingPolicyChangedType struct") + f.write_str("a GovernancePolicyAddFolderFailedType struct") } fn visit_map>(self, map: V) -> Result { - FileLockingPolicyChangedType::internal_deserialize(map) + GovernancePolicyAddFolderFailedType::internal_deserialize(map) } } - deserializer.deserialize_struct("FileLockingPolicyChangedType", FILE_LOCKING_POLICY_CHANGED_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("GovernancePolicyAddFolderFailedType", GOVERNANCE_POLICY_ADD_FOLDER_FAILED_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for FileLockingPolicyChangedType { +impl ::serde::ser::Serialize for GovernancePolicyAddFolderFailedType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("FileLockingPolicyChangedType", 1)?; + let mut s = serializer.serialize_struct("GovernancePolicyAddFolderFailedType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// File's logged information. +/// Added folders to policy. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct FileLogInfo { - /// Path relative to event context. - pub path: PathLogInfo, - /// Display name. - pub display_name: Option, - /// Unique ID. - pub file_id: Option, - /// File or folder size in bytes. - pub file_size: Option, +pub struct GovernancePolicyAddFoldersDetails { + /// Policy ID. + pub governance_policy_id: String, + /// Policy name. + pub name: String, + /// Policy type. + pub policy_type: Option, + /// Folders. + pub folders: Option>, } -impl FileLogInfo { - pub fn new(path: PathLogInfo) -> Self { - FileLogInfo { - path, - display_name: None, - file_id: None, - file_size: None, +impl GovernancePolicyAddFoldersDetails { + pub fn new(governance_policy_id: String, name: String) -> Self { + GovernancePolicyAddFoldersDetails { + governance_policy_id, + name, + policy_type: None, + folders: None, } } - pub fn with_display_name(mut self, value: String) -> Self { - self.display_name = Some(value); - self - } - - pub fn with_file_id(mut self, value: String) -> Self { - self.file_id = Some(value); + pub fn with_policy_type(mut self, value: PolicyType) -> Self { + self.policy_type = Some(value); self } - pub fn with_file_size(mut self, value: u64) -> Self { - self.file_size = Some(value); + pub fn with_folders(mut self, value: Vec) -> Self { + self.folders = Some(value); self } } -const FILE_LOG_INFO_FIELDS: &[&str] = &["path", - "display_name", - "file_id", - "file_size"]; -impl FileLogInfo { +const GOVERNANCE_POLICY_ADD_FOLDERS_DETAILS_FIELDS: &[&str] = &["governance_policy_id", + "name", + "policy_type", + "folders"]; +impl GovernancePolicyAddFoldersDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_path = None; - let mut field_display_name = None; - let mut field_file_id = None; - let mut field_file_size = None; + ) -> Result, V::Error> { + let mut field_governance_policy_id = None; + let mut field_name = None; + let mut field_policy_type = None; + let mut field_folders = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "path" => { - if field_path.is_some() { - return Err(::serde::de::Error::duplicate_field("path")); + "governance_policy_id" => { + if field_governance_policy_id.is_some() { + return Err(::serde::de::Error::duplicate_field("governance_policy_id")); } - field_path = Some(map.next_value()?); + field_governance_policy_id = Some(map.next_value()?); } - "display_name" => { - if field_display_name.is_some() { - return Err(::serde::de::Error::duplicate_field("display_name")); + "name" => { + if field_name.is_some() { + return Err(::serde::de::Error::duplicate_field("name")); } - field_display_name = Some(map.next_value()?); + field_name = Some(map.next_value()?); } - "file_id" => { - if field_file_id.is_some() { - return Err(::serde::de::Error::duplicate_field("file_id")); + "policy_type" => { + if field_policy_type.is_some() { + return Err(::serde::de::Error::duplicate_field("policy_type")); } - field_file_id = Some(map.next_value()?); + field_policy_type = Some(map.next_value()?); } - "file_size" => { - if field_file_size.is_some() { - return Err(::serde::de::Error::duplicate_field("file_size")); + "folders" => { + if field_folders.is_some() { + return Err(::serde::de::Error::duplicate_field("folders")); } - field_file_size = Some(map.next_value()?); + field_folders = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -41300,11 +62801,11 @@ impl FileLogInfo { if optional && nothing { return Ok(None); } - let result = FileLogInfo { - path: field_path.ok_or_else(|| ::serde::de::Error::missing_field("path"))?, - display_name: field_display_name.and_then(Option::flatten), - file_id: field_file_id.and_then(Option::flatten), - file_size: field_file_size.and_then(Option::flatten), + let result = GovernancePolicyAddFoldersDetails { + governance_policy_id: field_governance_policy_id.ok_or_else(|| ::serde::de::Error::missing_field("governance_policy_id"))?, + name: field_name.ok_or_else(|| ::serde::de::Error::missing_field("name"))?, + policy_type: field_policy_type.and_then(Option::flatten), + folders: field_folders.and_then(Option::flatten), }; Ok(Some(result)) } @@ -41314,97 +62815,216 @@ impl FileLogInfo { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("path", &self.path)?; - if let Some(val) = &self.display_name { - s.serialize_field("display_name", val)?; + s.serialize_field("governance_policy_id", &self.governance_policy_id)?; + s.serialize_field("name", &self.name)?; + if let Some(val) = &self.policy_type { + s.serialize_field("policy_type", val)?; } - if let Some(val) = &self.file_id { - s.serialize_field("file_id", val)?; + if let Some(val) = &self.folders { + s.serialize_field("folders", val)?; } - if let Some(val) = &self.file_size { - s.serialize_field("file_size", val)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for GovernancePolicyAddFoldersDetails { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = GovernancePolicyAddFoldersDetails; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a GovernancePolicyAddFoldersDetails struct") + } + fn visit_map>(self, map: V) -> Result { + GovernancePolicyAddFoldersDetails::internal_deserialize(map) + } + } + deserializer.deserialize_struct("GovernancePolicyAddFoldersDetails", GOVERNANCE_POLICY_ADD_FOLDERS_DETAILS_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for GovernancePolicyAddFoldersDetails { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("GovernancePolicyAddFoldersDetails", 4)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct GovernancePolicyAddFoldersType { + pub description: String, +} + +impl GovernancePolicyAddFoldersType { + pub fn new(description: String) -> Self { + GovernancePolicyAddFoldersType { + description, + } + } +} + +const GOVERNANCE_POLICY_ADD_FOLDERS_TYPE_FIELDS: &[&str] = &["description"]; +impl GovernancePolicyAddFoldersType { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_description = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); + } + field_description = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } + } + } + if optional && nothing { + return Ok(None); } + let result = GovernancePolicyAddFoldersType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("description", &self.description)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for FileLogInfo { +impl<'de> ::serde::de::Deserialize<'de> for GovernancePolicyAddFoldersType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = FileLogInfo; + type Value = GovernancePolicyAddFoldersType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a FileLogInfo struct") + f.write_str("a GovernancePolicyAddFoldersType struct") } fn visit_map>(self, map: V) -> Result { - FileLogInfo::internal_deserialize(map) + GovernancePolicyAddFoldersType::internal_deserialize(map) } } - deserializer.deserialize_struct("FileLogInfo", FILE_LOG_INFO_FIELDS, StructVisitor) + deserializer.deserialize_struct("GovernancePolicyAddFoldersType", GOVERNANCE_POLICY_ADD_FOLDERS_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for FileLogInfo { +impl ::serde::ser::Serialize for GovernancePolicyAddFoldersType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("FileLogInfo", 4)?; + let mut s = serializer.serialize_struct("GovernancePolicyAddFoldersType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -// struct extends FileOrFolderLogInfo -impl From for FileOrFolderLogInfo { - fn from(subtype: FileLogInfo) -> Self { - Self { - path: subtype.path, - display_name: subtype.display_name, - file_id: subtype.file_id, - file_size: subtype.file_size, - } - } -} -/// Moved files and/or folders. +/// Content disposed. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct FileMoveDetails { - /// Relocate action details. - pub relocate_action_details: Vec, +pub struct GovernancePolicyContentDisposedDetails { + /// Policy ID. + pub governance_policy_id: String, + /// Policy name. + pub name: String, + /// Disposition type. + pub disposition_type: DispositionActionType, + /// Policy type. + pub policy_type: Option, } -impl FileMoveDetails { - pub fn new(relocate_action_details: Vec) -> Self { - FileMoveDetails { - relocate_action_details, +impl GovernancePolicyContentDisposedDetails { + pub fn new( + governance_policy_id: String, + name: String, + disposition_type: DispositionActionType, + ) -> Self { + GovernancePolicyContentDisposedDetails { + governance_policy_id, + name, + disposition_type, + policy_type: None, } } + + pub fn with_policy_type(mut self, value: PolicyType) -> Self { + self.policy_type = Some(value); + self + } } -const FILE_MOVE_DETAILS_FIELDS: &[&str] = &["relocate_action_details"]; -impl FileMoveDetails { +const GOVERNANCE_POLICY_CONTENT_DISPOSED_DETAILS_FIELDS: &[&str] = &["governance_policy_id", + "name", + "disposition_type", + "policy_type"]; +impl GovernancePolicyContentDisposedDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_relocate_action_details = None; + ) -> Result, V::Error> { + let mut field_governance_policy_id = None; + let mut field_name = None; + let mut field_disposition_type = None; + let mut field_policy_type = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "relocate_action_details" => { - if field_relocate_action_details.is_some() { - return Err(::serde::de::Error::duplicate_field("relocate_action_details")); + "governance_policy_id" => { + if field_governance_policy_id.is_some() { + return Err(::serde::de::Error::duplicate_field("governance_policy_id")); } - field_relocate_action_details = Some(map.next_value()?); + field_governance_policy_id = Some(map.next_value()?); + } + "name" => { + if field_name.is_some() { + return Err(::serde::de::Error::duplicate_field("name")); + } + field_name = Some(map.next_value()?); + } + "disposition_type" => { + if field_disposition_type.is_some() { + return Err(::serde::de::Error::duplicate_field("disposition_type")); + } + field_disposition_type = Some(map.next_value()?); + } + "policy_type" => { + if field_policy_type.is_some() { + return Err(::serde::de::Error::duplicate_field("policy_type")); + } + field_policy_type = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -41415,8 +63035,11 @@ impl FileMoveDetails { if optional && nothing { return Ok(None); } - let result = FileMoveDetails { - relocate_action_details: field_relocate_action_details.ok_or_else(|| ::serde::de::Error::missing_field("relocate_action_details"))?, + let result = GovernancePolicyContentDisposedDetails { + governance_policy_id: field_governance_policy_id.ok_or_else(|| ::serde::de::Error::missing_field("governance_policy_id"))?, + name: field_name.ok_or_else(|| ::serde::de::Error::missing_field("name"))?, + disposition_type: field_disposition_type.ok_or_else(|| ::serde::de::Error::missing_field("disposition_type"))?, + policy_type: field_policy_type.and_then(Option::flatten), }; Ok(Some(result)) } @@ -41426,34 +63049,39 @@ impl FileMoveDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("relocate_action_details", &self.relocate_action_details)?; + s.serialize_field("governance_policy_id", &self.governance_policy_id)?; + s.serialize_field("name", &self.name)?; + s.serialize_field("disposition_type", &self.disposition_type)?; + if let Some(val) = &self.policy_type { + s.serialize_field("policy_type", val)?; + } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for FileMoveDetails { +impl<'de> ::serde::de::Deserialize<'de> for GovernancePolicyContentDisposedDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = FileMoveDetails; + type Value = GovernancePolicyContentDisposedDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a FileMoveDetails struct") + f.write_str("a GovernancePolicyContentDisposedDetails struct") } fn visit_map>(self, map: V) -> Result { - FileMoveDetails::internal_deserialize(map) + GovernancePolicyContentDisposedDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("FileMoveDetails", FILE_MOVE_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("GovernancePolicyContentDisposedDetails", GOVERNANCE_POLICY_CONTENT_DISPOSED_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for FileMoveDetails { +impl ::serde::ser::Serialize for GovernancePolicyContentDisposedDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("FileMoveDetails", 1)?; + let mut s = serializer.serialize_struct("GovernancePolicyContentDisposedDetails", 4)?; self.internal_serialize::(&mut s)?; s.end() } @@ -41461,30 +63089,30 @@ impl ::serde::ser::Serialize for FileMoveDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct FileMoveType { +pub struct GovernancePolicyContentDisposedType { pub description: String, } -impl FileMoveType { +impl GovernancePolicyContentDisposedType { pub fn new(description: String) -> Self { - FileMoveType { + GovernancePolicyContentDisposedType { description, } } } -const FILE_MOVE_TYPE_FIELDS: &[&str] = &["description"]; -impl FileMoveType { +const GOVERNANCE_POLICY_CONTENT_DISPOSED_TYPE_FIELDS: &[&str] = &["description"]; +impl GovernancePolicyContentDisposedType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -41505,7 +63133,7 @@ impl FileMoveType { if optional && nothing { return Ok(None); } - let result = FileMoveType { + let result = GovernancePolicyContentDisposedType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -41521,120 +63149,126 @@ impl FileMoveType { } } -impl<'de> ::serde::de::Deserialize<'de> for FileMoveType { +impl<'de> ::serde::de::Deserialize<'de> for GovernancePolicyContentDisposedType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = FileMoveType; + type Value = GovernancePolicyContentDisposedType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a FileMoveType struct") + f.write_str("a GovernancePolicyContentDisposedType struct") } fn visit_map>(self, map: V) -> Result { - FileMoveType::internal_deserialize(map) + GovernancePolicyContentDisposedType::internal_deserialize(map) } } - deserializer.deserialize_struct("FileMoveType", FILE_MOVE_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("GovernancePolicyContentDisposedType", GOVERNANCE_POLICY_CONTENT_DISPOSED_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for FileMoveType { +impl ::serde::ser::Serialize for GovernancePolicyContentDisposedType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("FileMoveType", 1)?; + let mut s = serializer.serialize_struct("GovernancePolicyContentDisposedType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Generic information relevant both for files and folders +/// Activated a new policy. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct FileOrFolderLogInfo { - /// Path relative to event context. - pub path: PathLogInfo, - /// Display name. - pub display_name: Option, - /// Unique ID. - pub file_id: Option, - /// File or folder size in bytes. - pub file_size: Option, +pub struct GovernancePolicyCreateDetails { + /// Policy ID. + pub governance_policy_id: String, + /// Policy name. + pub name: String, + /// Duration in days. + pub duration: DurationLogInfo, + /// Policy type. + pub policy_type: Option, + /// Folders. + pub folders: Option>, } -impl FileOrFolderLogInfo { - pub fn new(path: PathLogInfo) -> Self { - FileOrFolderLogInfo { - path, - display_name: None, - file_id: None, - file_size: None, +impl GovernancePolicyCreateDetails { + pub fn new(governance_policy_id: String, name: String, duration: DurationLogInfo) -> Self { + GovernancePolicyCreateDetails { + governance_policy_id, + name, + duration, + policy_type: None, + folders: None, } } - pub fn with_display_name(mut self, value: String) -> Self { - self.display_name = Some(value); - self - } - - pub fn with_file_id(mut self, value: String) -> Self { - self.file_id = Some(value); + pub fn with_policy_type(mut self, value: PolicyType) -> Self { + self.policy_type = Some(value); self } - pub fn with_file_size(mut self, value: u64) -> Self { - self.file_size = Some(value); + pub fn with_folders(mut self, value: Vec) -> Self { + self.folders = Some(value); self } } -const FILE_OR_FOLDER_LOG_INFO_FIELDS: &[&str] = &["path", - "display_name", - "file_id", - "file_size"]; -impl FileOrFolderLogInfo { +const GOVERNANCE_POLICY_CREATE_DETAILS_FIELDS: &[&str] = &["governance_policy_id", + "name", + "duration", + "policy_type", + "folders"]; +impl GovernancePolicyCreateDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_path = None; - let mut field_display_name = None; - let mut field_file_id = None; - let mut field_file_size = None; + ) -> Result, V::Error> { + let mut field_governance_policy_id = None; + let mut field_name = None; + let mut field_duration = None; + let mut field_policy_type = None; + let mut field_folders = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "path" => { - if field_path.is_some() { - return Err(::serde::de::Error::duplicate_field("path")); + "governance_policy_id" => { + if field_governance_policy_id.is_some() { + return Err(::serde::de::Error::duplicate_field("governance_policy_id")); } - field_path = Some(map.next_value()?); + field_governance_policy_id = Some(map.next_value()?); } - "display_name" => { - if field_display_name.is_some() { - return Err(::serde::de::Error::duplicate_field("display_name")); + "name" => { + if field_name.is_some() { + return Err(::serde::de::Error::duplicate_field("name")); } - field_display_name = Some(map.next_value()?); + field_name = Some(map.next_value()?); } - "file_id" => { - if field_file_id.is_some() { - return Err(::serde::de::Error::duplicate_field("file_id")); + "duration" => { + if field_duration.is_some() { + return Err(::serde::de::Error::duplicate_field("duration")); } - field_file_id = Some(map.next_value()?); + field_duration = Some(map.next_value()?); } - "file_size" => { - if field_file_size.is_some() { - return Err(::serde::de::Error::duplicate_field("file_size")); + "policy_type" => { + if field_policy_type.is_some() { + return Err(::serde::de::Error::duplicate_field("policy_type")); } - field_file_size = Some(map.next_value()?); + field_policy_type = Some(map.next_value()?); + } + "folders" => { + if field_folders.is_some() { + return Err(::serde::de::Error::duplicate_field("folders")); + } + field_folders = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -41645,11 +63279,12 @@ impl FileOrFolderLogInfo { if optional && nothing { return Ok(None); } - let result = FileOrFolderLogInfo { - path: field_path.ok_or_else(|| ::serde::de::Error::missing_field("path"))?, - display_name: field_display_name.and_then(Option::flatten), - file_id: field_file_id.and_then(Option::flatten), - file_size: field_file_size.and_then(Option::flatten), + let result = GovernancePolicyCreateDetails { + governance_policy_id: field_governance_policy_id.ok_or_else(|| ::serde::de::Error::missing_field("governance_policy_id"))?, + name: field_name.ok_or_else(|| ::serde::de::Error::missing_field("name"))?, + duration: field_duration.ok_or_else(|| ::serde::de::Error::missing_field("duration"))?, + policy_type: field_policy_type.and_then(Option::flatten), + folders: field_folders.and_then(Option::flatten), }; Ok(Some(result)) } @@ -41659,118 +63294,73 @@ impl FileOrFolderLogInfo { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("path", &self.path)?; - if let Some(val) = &self.display_name { - s.serialize_field("display_name", val)?; - } - if let Some(val) = &self.file_id { - s.serialize_field("file_id", val)?; + s.serialize_field("governance_policy_id", &self.governance_policy_id)?; + s.serialize_field("name", &self.name)?; + s.serialize_field("duration", &self.duration)?; + if let Some(val) = &self.policy_type { + s.serialize_field("policy_type", val)?; } - if let Some(val) = &self.file_size { - s.serialize_field("file_size", val)?; + if let Some(val) = &self.folders { + s.serialize_field("folders", val)?; } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for FileOrFolderLogInfo { +impl<'de> ::serde::de::Deserialize<'de> for GovernancePolicyCreateDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = FileOrFolderLogInfo; + type Value = GovernancePolicyCreateDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a FileOrFolderLogInfo struct") + f.write_str("a GovernancePolicyCreateDetails struct") } fn visit_map>(self, map: V) -> Result { - FileOrFolderLogInfo::internal_deserialize(map) + GovernancePolicyCreateDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("FileOrFolderLogInfo", FILE_OR_FOLDER_LOG_INFO_FIELDS, StructVisitor) + deserializer.deserialize_struct("GovernancePolicyCreateDetails", GOVERNANCE_POLICY_CREATE_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for FileOrFolderLogInfo { +impl ::serde::ser::Serialize for GovernancePolicyCreateDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("FileOrFolderLogInfo", 4)?; + let mut s = serializer.serialize_struct("GovernancePolicyCreateDetails", 5)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Permanently deleted files and/or folders. -#[derive(Debug, Clone, PartialEq, Eq, Default)] -#[non_exhaustive] // structs may have more fields added in the future. -pub struct FilePermanentlyDeleteDetails { -} - -const FILE_PERMANENTLY_DELETE_DETAILS_FIELDS: &[&str] = &[]; -impl FilePermanentlyDeleteDetails { - // no _opt deserializer - pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( - mut map: V, - ) -> Result { - // ignore any fields found; none are presently recognized - crate::eat_json_fields(&mut map)?; - Ok(FilePermanentlyDeleteDetails {}) - } -} - -impl<'de> ::serde::de::Deserialize<'de> for FilePermanentlyDeleteDetails { - fn deserialize>(deserializer: D) -> Result { - // struct deserializer - use serde::de::{MapAccess, Visitor}; - struct StructVisitor; - impl<'de> Visitor<'de> for StructVisitor { - type Value = FilePermanentlyDeleteDetails; - fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a FilePermanentlyDeleteDetails struct") - } - fn visit_map>(self, map: V) -> Result { - FilePermanentlyDeleteDetails::internal_deserialize(map) - } - } - deserializer.deserialize_struct("FilePermanentlyDeleteDetails", FILE_PERMANENTLY_DELETE_DETAILS_FIELDS, StructVisitor) - } -} - -impl ::serde::ser::Serialize for FilePermanentlyDeleteDetails { - fn serialize(&self, serializer: S) -> Result { - // struct serializer - use serde::ser::SerializeStruct; - serializer.serialize_struct("FilePermanentlyDeleteDetails", 0)?.end() - } -} - #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct FilePermanentlyDeleteType { +pub struct GovernancePolicyCreateType { pub description: String, } -impl FilePermanentlyDeleteType { +impl GovernancePolicyCreateType { pub fn new(description: String) -> Self { - FilePermanentlyDeleteType { + GovernancePolicyCreateType { description, } } } -const FILE_PERMANENTLY_DELETE_TYPE_FIELDS: &[&str] = &["description"]; -impl FilePermanentlyDeleteType { +const GOVERNANCE_POLICY_CREATE_TYPE_FIELDS: &[&str] = &["description"]; +impl GovernancePolicyCreateType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -41791,7 +63381,7 @@ impl FilePermanentlyDeleteType { if optional && nothing { return Ok(None); } - let result = FilePermanentlyDeleteType { + let result = GovernancePolicyCreateType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -41807,104 +63397,185 @@ impl FilePermanentlyDeleteType { } } -impl<'de> ::serde::de::Deserialize<'de> for FilePermanentlyDeleteType { +impl<'de> ::serde::de::Deserialize<'de> for GovernancePolicyCreateType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = FilePermanentlyDeleteType; + type Value = GovernancePolicyCreateType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a FilePermanentlyDeleteType struct") + f.write_str("a GovernancePolicyCreateType struct") } fn visit_map>(self, map: V) -> Result { - FilePermanentlyDeleteType::internal_deserialize(map) + GovernancePolicyCreateType::internal_deserialize(map) } } - deserializer.deserialize_struct("FilePermanentlyDeleteType", FILE_PERMANENTLY_DELETE_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("GovernancePolicyCreateType", GOVERNANCE_POLICY_CREATE_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for FilePermanentlyDeleteType { +impl ::serde::ser::Serialize for GovernancePolicyCreateType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("FilePermanentlyDeleteType", 1)?; + let mut s = serializer.serialize_struct("GovernancePolicyCreateType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Previewed files and/or folders. -#[derive(Debug, Clone, PartialEq, Eq, Default)] +/// Deleted a policy. +#[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct FilePreviewDetails { +pub struct GovernancePolicyDeleteDetails { + /// Policy ID. + pub governance_policy_id: String, + /// Policy name. + pub name: String, + /// Policy type. + pub policy_type: Option, } -const FILE_PREVIEW_DETAILS_FIELDS: &[&str] = &[]; -impl FilePreviewDetails { - // no _opt deserializer +impl GovernancePolicyDeleteDetails { + pub fn new(governance_policy_id: String, name: String) -> Self { + GovernancePolicyDeleteDetails { + governance_policy_id, + name, + policy_type: None, + } + } + + pub fn with_policy_type(mut self, value: PolicyType) -> Self { + self.policy_type = Some(value); + self + } +} + +const GOVERNANCE_POLICY_DELETE_DETAILS_FIELDS: &[&str] = &["governance_policy_id", + "name", + "policy_type"]; +impl GovernancePolicyDeleteDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - ) -> Result { - // ignore any fields found; none are presently recognized - crate::eat_json_fields(&mut map)?; - Ok(FilePreviewDetails {}) + optional: bool, + ) -> Result, V::Error> { + let mut field_governance_policy_id = None; + let mut field_name = None; + let mut field_policy_type = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "governance_policy_id" => { + if field_governance_policy_id.is_some() { + return Err(::serde::de::Error::duplicate_field("governance_policy_id")); + } + field_governance_policy_id = Some(map.next_value()?); + } + "name" => { + if field_name.is_some() { + return Err(::serde::de::Error::duplicate_field("name")); + } + field_name = Some(map.next_value()?); + } + "policy_type" => { + if field_policy_type.is_some() { + return Err(::serde::de::Error::duplicate_field("policy_type")); + } + field_policy_type = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } + } + } + if optional && nothing { + return Ok(None); + } + let result = GovernancePolicyDeleteDetails { + governance_policy_id: field_governance_policy_id.ok_or_else(|| ::serde::de::Error::missing_field("governance_policy_id"))?, + name: field_name.ok_or_else(|| ::serde::de::Error::missing_field("name"))?, + policy_type: field_policy_type.and_then(Option::flatten), + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("governance_policy_id", &self.governance_policy_id)?; + s.serialize_field("name", &self.name)?; + if let Some(val) = &self.policy_type { + s.serialize_field("policy_type", val)?; + } + Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for FilePreviewDetails { +impl<'de> ::serde::de::Deserialize<'de> for GovernancePolicyDeleteDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = FilePreviewDetails; + type Value = GovernancePolicyDeleteDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a FilePreviewDetails struct") + f.write_str("a GovernancePolicyDeleteDetails struct") } fn visit_map>(self, map: V) -> Result { - FilePreviewDetails::internal_deserialize(map) + GovernancePolicyDeleteDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("FilePreviewDetails", FILE_PREVIEW_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("GovernancePolicyDeleteDetails", GOVERNANCE_POLICY_DELETE_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for FilePreviewDetails { +impl ::serde::ser::Serialize for GovernancePolicyDeleteDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - serializer.serialize_struct("FilePreviewDetails", 0)?.end() + let mut s = serializer.serialize_struct("GovernancePolicyDeleteDetails", 3)?; + self.internal_serialize::(&mut s)?; + s.end() } } #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct FilePreviewType { +pub struct GovernancePolicyDeleteType { pub description: String, } -impl FilePreviewType { +impl GovernancePolicyDeleteType { pub fn new(description: String) -> Self { - FilePreviewType { + GovernancePolicyDeleteType { description, } } } -const FILE_PREVIEW_TYPE_FIELDS: &[&str] = &["description"]; -impl FilePreviewType { +const GOVERNANCE_POLICY_DELETE_TYPE_FIELDS: &[&str] = &["description"]; +impl GovernancePolicyDeleteType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -41925,7 +63596,7 @@ impl FilePreviewType { if optional && nothing { return Ok(None); } - let result = FilePreviewType { + let result = GovernancePolicyDeleteType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -41941,80 +63612,120 @@ impl FilePreviewType { } } -impl<'de> ::serde::de::Deserialize<'de> for FilePreviewType { +impl<'de> ::serde::de::Deserialize<'de> for GovernancePolicyDeleteType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = FilePreviewType; + type Value = GovernancePolicyDeleteType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a FilePreviewType struct") + f.write_str("a GovernancePolicyDeleteType struct") } fn visit_map>(self, map: V) -> Result { - FilePreviewType::internal_deserialize(map) + GovernancePolicyDeleteType::internal_deserialize(map) } } - deserializer.deserialize_struct("FilePreviewType", FILE_PREVIEW_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("GovernancePolicyDeleteType", GOVERNANCE_POLICY_DELETE_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for FilePreviewType { +impl ::serde::ser::Serialize for GovernancePolicyDeleteType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("FilePreviewType", 1)?; + let mut s = serializer.serialize_struct("GovernancePolicyDeleteType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Changed File Provider Migration policy for team. +/// Edited policy. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct FileProviderMigrationPolicyChangedDetails { - /// To. - pub new_value: crate::types::team_policies::FileProviderMigrationPolicyState, +pub struct GovernancePolicyEditDetailsDetails { + /// Policy ID. + pub governance_policy_id: String, + /// Policy name. + pub name: String, + /// Attribute. + pub attribute: String, /// From. - pub previous_value: crate::types::team_policies::FileProviderMigrationPolicyState, + pub previous_value: String, + /// To. + pub new_value: String, + /// Policy type. + pub policy_type: Option, } -impl FileProviderMigrationPolicyChangedDetails { +impl GovernancePolicyEditDetailsDetails { pub fn new( - new_value: crate::types::team_policies::FileProviderMigrationPolicyState, - previous_value: crate::types::team_policies::FileProviderMigrationPolicyState, + governance_policy_id: String, + name: String, + attribute: String, + previous_value: String, + new_value: String, ) -> Self { - FileProviderMigrationPolicyChangedDetails { - new_value, + GovernancePolicyEditDetailsDetails { + governance_policy_id, + name, + attribute, previous_value, + new_value, + policy_type: None, } } + + pub fn with_policy_type(mut self, value: PolicyType) -> Self { + self.policy_type = Some(value); + self + } } -const FILE_PROVIDER_MIGRATION_POLICY_CHANGED_DETAILS_FIELDS: &[&str] = &["new_value", - "previous_value"]; -impl FileProviderMigrationPolicyChangedDetails { +const GOVERNANCE_POLICY_EDIT_DETAILS_DETAILS_FIELDS: &[&str] = &["governance_policy_id", + "name", + "attribute", + "previous_value", + "new_value", + "policy_type"]; +impl GovernancePolicyEditDetailsDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_new_value = None; + ) -> Result, V::Error> { + let mut field_governance_policy_id = None; + let mut field_name = None; + let mut field_attribute = None; let mut field_previous_value = None; + let mut field_new_value = None; + let mut field_policy_type = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "new_value" => { - if field_new_value.is_some() { - return Err(::serde::de::Error::duplicate_field("new_value")); + "governance_policy_id" => { + if field_governance_policy_id.is_some() { + return Err(::serde::de::Error::duplicate_field("governance_policy_id")); } - field_new_value = Some(map.next_value()?); + field_governance_policy_id = Some(map.next_value()?); + } + "name" => { + if field_name.is_some() { + return Err(::serde::de::Error::duplicate_field("name")); + } + field_name = Some(map.next_value()?); + } + "attribute" => { + if field_attribute.is_some() { + return Err(::serde::de::Error::duplicate_field("attribute")); + } + field_attribute = Some(map.next_value()?); } "previous_value" => { if field_previous_value.is_some() { @@ -42022,6 +63733,18 @@ impl FileProviderMigrationPolicyChangedDetails { } field_previous_value = Some(map.next_value()?); } + "new_value" => { + if field_new_value.is_some() { + return Err(::serde::de::Error::duplicate_field("new_value")); + } + field_new_value = Some(map.next_value()?); + } + "policy_type" => { + if field_policy_type.is_some() { + return Err(::serde::de::Error::duplicate_field("policy_type")); + } + field_policy_type = Some(map.next_value()?); + } _ => { // unknown field allowed and ignored map.next_value::<::serde_json::Value>()?; @@ -42031,9 +63754,13 @@ impl FileProviderMigrationPolicyChangedDetails { if optional && nothing { return Ok(None); } - let result = FileProviderMigrationPolicyChangedDetails { - new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, + let result = GovernancePolicyEditDetailsDetails { + governance_policy_id: field_governance_policy_id.ok_or_else(|| ::serde::de::Error::missing_field("governance_policy_id"))?, + name: field_name.ok_or_else(|| ::serde::de::Error::missing_field("name"))?, + attribute: field_attribute.ok_or_else(|| ::serde::de::Error::missing_field("attribute"))?, previous_value: field_previous_value.ok_or_else(|| ::serde::de::Error::missing_field("previous_value"))?, + new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, + policy_type: field_policy_type.and_then(Option::flatten), }; Ok(Some(result)) } @@ -42043,35 +63770,41 @@ impl FileProviderMigrationPolicyChangedDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("new_value", &self.new_value)?; + s.serialize_field("governance_policy_id", &self.governance_policy_id)?; + s.serialize_field("name", &self.name)?; + s.serialize_field("attribute", &self.attribute)?; s.serialize_field("previous_value", &self.previous_value)?; + s.serialize_field("new_value", &self.new_value)?; + if let Some(val) = &self.policy_type { + s.serialize_field("policy_type", val)?; + } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for FileProviderMigrationPolicyChangedDetails { +impl<'de> ::serde::de::Deserialize<'de> for GovernancePolicyEditDetailsDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = FileProviderMigrationPolicyChangedDetails; + type Value = GovernancePolicyEditDetailsDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a FileProviderMigrationPolicyChangedDetails struct") + f.write_str("a GovernancePolicyEditDetailsDetails struct") } fn visit_map>(self, map: V) -> Result { - FileProviderMigrationPolicyChangedDetails::internal_deserialize(map) + GovernancePolicyEditDetailsDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("FileProviderMigrationPolicyChangedDetails", FILE_PROVIDER_MIGRATION_POLICY_CHANGED_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("GovernancePolicyEditDetailsDetails", GOVERNANCE_POLICY_EDIT_DETAILS_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for FileProviderMigrationPolicyChangedDetails { +impl ::serde::ser::Serialize for GovernancePolicyEditDetailsDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("FileProviderMigrationPolicyChangedDetails", 2)?; + let mut s = serializer.serialize_struct("GovernancePolicyEditDetailsDetails", 6)?; self.internal_serialize::(&mut s)?; s.end() } @@ -42079,30 +63812,30 @@ impl ::serde::ser::Serialize for FileProviderMigrationPolicyChangedDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct FileProviderMigrationPolicyChangedType { +pub struct GovernancePolicyEditDetailsType { pub description: String, } -impl FileProviderMigrationPolicyChangedType { +impl GovernancePolicyEditDetailsType { pub fn new(description: String) -> Self { - FileProviderMigrationPolicyChangedType { + GovernancePolicyEditDetailsType { description, } } } -const FILE_PROVIDER_MIGRATION_POLICY_CHANGED_TYPE_FIELDS: &[&str] = &["description"]; -impl FileProviderMigrationPolicyChangedType { +const GOVERNANCE_POLICY_EDIT_DETAILS_TYPE_FIELDS: &[&str] = &["description"]; +impl GovernancePolicyEditDetailsType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -42123,7 +63856,7 @@ impl FileProviderMigrationPolicyChangedType { if optional && nothing { return Ok(None); } - let result = FileProviderMigrationPolicyChangedType { + let result = GovernancePolicyEditDetailsType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -42139,72 +63872,126 @@ impl FileProviderMigrationPolicyChangedType { } } -impl<'de> ::serde::de::Deserialize<'de> for FileProviderMigrationPolicyChangedType { +impl<'de> ::serde::de::Deserialize<'de> for GovernancePolicyEditDetailsType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = FileProviderMigrationPolicyChangedType; + type Value = GovernancePolicyEditDetailsType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a FileProviderMigrationPolicyChangedType struct") + f.write_str("a GovernancePolicyEditDetailsType struct") } fn visit_map>(self, map: V) -> Result { - FileProviderMigrationPolicyChangedType::internal_deserialize(map) + GovernancePolicyEditDetailsType::internal_deserialize(map) } } - deserializer.deserialize_struct("FileProviderMigrationPolicyChangedType", FILE_PROVIDER_MIGRATION_POLICY_CHANGED_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("GovernancePolicyEditDetailsType", GOVERNANCE_POLICY_EDIT_DETAILS_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for FileProviderMigrationPolicyChangedType { +impl ::serde::ser::Serialize for GovernancePolicyEditDetailsType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("FileProviderMigrationPolicyChangedType", 1)?; + let mut s = serializer.serialize_struct("GovernancePolicyEditDetailsType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Renamed files and/or folders. +/// Changed policy duration. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct FileRenameDetails { - /// Relocate action details. - pub relocate_action_details: Vec, +pub struct GovernancePolicyEditDurationDetails { + /// Policy ID. + pub governance_policy_id: String, + /// Policy name. + pub name: String, + /// From. + pub previous_value: DurationLogInfo, + /// To. + pub new_value: DurationLogInfo, + /// Policy type. + pub policy_type: Option, } -impl FileRenameDetails { - pub fn new(relocate_action_details: Vec) -> Self { - FileRenameDetails { - relocate_action_details, +impl GovernancePolicyEditDurationDetails { + pub fn new( + governance_policy_id: String, + name: String, + previous_value: DurationLogInfo, + new_value: DurationLogInfo, + ) -> Self { + GovernancePolicyEditDurationDetails { + governance_policy_id, + name, + previous_value, + new_value, + policy_type: None, } } + + pub fn with_policy_type(mut self, value: PolicyType) -> Self { + self.policy_type = Some(value); + self + } } -const FILE_RENAME_DETAILS_FIELDS: &[&str] = &["relocate_action_details"]; -impl FileRenameDetails { +const GOVERNANCE_POLICY_EDIT_DURATION_DETAILS_FIELDS: &[&str] = &["governance_policy_id", + "name", + "previous_value", + "new_value", + "policy_type"]; +impl GovernancePolicyEditDurationDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_relocate_action_details = None; + ) -> Result, V::Error> { + let mut field_governance_policy_id = None; + let mut field_name = None; + let mut field_previous_value = None; + let mut field_new_value = None; + let mut field_policy_type = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "relocate_action_details" => { - if field_relocate_action_details.is_some() { - return Err(::serde::de::Error::duplicate_field("relocate_action_details")); + "governance_policy_id" => { + if field_governance_policy_id.is_some() { + return Err(::serde::de::Error::duplicate_field("governance_policy_id")); } - field_relocate_action_details = Some(map.next_value()?); + field_governance_policy_id = Some(map.next_value()?); + } + "name" => { + if field_name.is_some() { + return Err(::serde::de::Error::duplicate_field("name")); + } + field_name = Some(map.next_value()?); + } + "previous_value" => { + if field_previous_value.is_some() { + return Err(::serde::de::Error::duplicate_field("previous_value")); + } + field_previous_value = Some(map.next_value()?); + } + "new_value" => { + if field_new_value.is_some() { + return Err(::serde::de::Error::duplicate_field("new_value")); + } + field_new_value = Some(map.next_value()?); + } + "policy_type" => { + if field_policy_type.is_some() { + return Err(::serde::de::Error::duplicate_field("policy_type")); + } + field_policy_type = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -42215,8 +64002,12 @@ impl FileRenameDetails { if optional && nothing { return Ok(None); } - let result = FileRenameDetails { - relocate_action_details: field_relocate_action_details.ok_or_else(|| ::serde::de::Error::missing_field("relocate_action_details"))?, + let result = GovernancePolicyEditDurationDetails { + governance_policy_id: field_governance_policy_id.ok_or_else(|| ::serde::de::Error::missing_field("governance_policy_id"))?, + name: field_name.ok_or_else(|| ::serde::de::Error::missing_field("name"))?, + previous_value: field_previous_value.ok_or_else(|| ::serde::de::Error::missing_field("previous_value"))?, + new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, + policy_type: field_policy_type.and_then(Option::flatten), }; Ok(Some(result)) } @@ -42226,34 +64017,40 @@ impl FileRenameDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("relocate_action_details", &self.relocate_action_details)?; + s.serialize_field("governance_policy_id", &self.governance_policy_id)?; + s.serialize_field("name", &self.name)?; + s.serialize_field("previous_value", &self.previous_value)?; + s.serialize_field("new_value", &self.new_value)?; + if let Some(val) = &self.policy_type { + s.serialize_field("policy_type", val)?; + } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for FileRenameDetails { +impl<'de> ::serde::de::Deserialize<'de> for GovernancePolicyEditDurationDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = FileRenameDetails; + type Value = GovernancePolicyEditDurationDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a FileRenameDetails struct") + f.write_str("a GovernancePolicyEditDurationDetails struct") } fn visit_map>(self, map: V) -> Result { - FileRenameDetails::internal_deserialize(map) + GovernancePolicyEditDurationDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("FileRenameDetails", FILE_RENAME_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("GovernancePolicyEditDurationDetails", GOVERNANCE_POLICY_EDIT_DURATION_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for FileRenameDetails { +impl ::serde::ser::Serialize for GovernancePolicyEditDurationDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("FileRenameDetails", 1)?; + let mut s = serializer.serialize_struct("GovernancePolicyEditDurationDetails", 5)?; self.internal_serialize::(&mut s)?; s.end() } @@ -42261,30 +64058,30 @@ impl ::serde::ser::Serialize for FileRenameDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct FileRenameType { +pub struct GovernancePolicyEditDurationType { pub description: String, } -impl FileRenameType { +impl GovernancePolicyEditDurationType { pub fn new(description: String) -> Self { - FileRenameType { + GovernancePolicyEditDurationType { description, } } } -const FILE_RENAME_TYPE_FIELDS: &[&str] = &["description"]; -impl FileRenameType { +const GOVERNANCE_POLICY_EDIT_DURATION_TYPE_FIELDS: &[&str] = &["description"]; +impl GovernancePolicyEditDurationType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -42305,7 +64102,7 @@ impl FileRenameType { if optional && nothing { return Ok(None); } - let result = FileRenameType { + let result = GovernancePolicyEditDurationType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -42321,107 +64118,110 @@ impl FileRenameType { } } -impl<'de> ::serde::de::Deserialize<'de> for FileRenameType { +impl<'de> ::serde::de::Deserialize<'de> for GovernancePolicyEditDurationType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = FileRenameType; + type Value = GovernancePolicyEditDurationType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a FileRenameType struct") + f.write_str("a GovernancePolicyEditDurationType struct") } fn visit_map>(self, map: V) -> Result { - FileRenameType::internal_deserialize(map) + GovernancePolicyEditDurationType::internal_deserialize(map) } } - deserializer.deserialize_struct("FileRenameType", FILE_RENAME_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("GovernancePolicyEditDurationType", GOVERNANCE_POLICY_EDIT_DURATION_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for FileRenameType { +impl ::serde::ser::Serialize for GovernancePolicyEditDurationType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("FileRenameType", 1)?; + let mut s = serializer.serialize_struct("GovernancePolicyEditDurationType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Changed file request. +/// Created a policy download. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct FileRequestChangeDetails { - /// New file request details. - pub new_details: FileRequestDetails, - /// File request id. Might be missing due to historical data gap. - pub file_request_id: Option, - /// Previous file request details. Might be missing due to historical data gap. - pub previous_details: Option, +pub struct GovernancePolicyExportCreatedDetails { + /// Policy ID. + pub governance_policy_id: String, + /// Policy name. + pub name: String, + /// Export name. + pub export_name: String, + /// Policy type. + pub policy_type: Option, } -impl FileRequestChangeDetails { - pub fn new(new_details: FileRequestDetails) -> Self { - FileRequestChangeDetails { - new_details, - file_request_id: None, - previous_details: None, +impl GovernancePolicyExportCreatedDetails { + pub fn new(governance_policy_id: String, name: String, export_name: String) -> Self { + GovernancePolicyExportCreatedDetails { + governance_policy_id, + name, + export_name, + policy_type: None, } } - pub fn with_file_request_id( - mut self, - value: crate::types::file_requests::FileRequestId, - ) -> Self { - self.file_request_id = Some(value); - self - } - - pub fn with_previous_details(mut self, value: FileRequestDetails) -> Self { - self.previous_details = Some(value); + pub fn with_policy_type(mut self, value: PolicyType) -> Self { + self.policy_type = Some(value); self } } -const FILE_REQUEST_CHANGE_DETAILS_FIELDS: &[&str] = &["new_details", - "file_request_id", - "previous_details"]; -impl FileRequestChangeDetails { +const GOVERNANCE_POLICY_EXPORT_CREATED_DETAILS_FIELDS: &[&str] = &["governance_policy_id", + "name", + "export_name", + "policy_type"]; +impl GovernancePolicyExportCreatedDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_new_details = None; - let mut field_file_request_id = None; - let mut field_previous_details = None; + ) -> Result, V::Error> { + let mut field_governance_policy_id = None; + let mut field_name = None; + let mut field_export_name = None; + let mut field_policy_type = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "new_details" => { - if field_new_details.is_some() { - return Err(::serde::de::Error::duplicate_field("new_details")); + "governance_policy_id" => { + if field_governance_policy_id.is_some() { + return Err(::serde::de::Error::duplicate_field("governance_policy_id")); } - field_new_details = Some(map.next_value()?); + field_governance_policy_id = Some(map.next_value()?); } - "file_request_id" => { - if field_file_request_id.is_some() { - return Err(::serde::de::Error::duplicate_field("file_request_id")); + "name" => { + if field_name.is_some() { + return Err(::serde::de::Error::duplicate_field("name")); } - field_file_request_id = Some(map.next_value()?); + field_name = Some(map.next_value()?); } - "previous_details" => { - if field_previous_details.is_some() { - return Err(::serde::de::Error::duplicate_field("previous_details")); + "export_name" => { + if field_export_name.is_some() { + return Err(::serde::de::Error::duplicate_field("export_name")); } - field_previous_details = Some(map.next_value()?); + field_export_name = Some(map.next_value()?); + } + "policy_type" => { + if field_policy_type.is_some() { + return Err(::serde::de::Error::duplicate_field("policy_type")); + } + field_policy_type = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -42432,10 +64232,11 @@ impl FileRequestChangeDetails { if optional && nothing { return Ok(None); } - let result = FileRequestChangeDetails { - new_details: field_new_details.ok_or_else(|| ::serde::de::Error::missing_field("new_details"))?, - file_request_id: field_file_request_id.and_then(Option::flatten), - previous_details: field_previous_details.and_then(Option::flatten), + let result = GovernancePolicyExportCreatedDetails { + governance_policy_id: field_governance_policy_id.ok_or_else(|| ::serde::de::Error::missing_field("governance_policy_id"))?, + name: field_name.ok_or_else(|| ::serde::de::Error::missing_field("name"))?, + export_name: field_export_name.ok_or_else(|| ::serde::de::Error::missing_field("export_name"))?, + policy_type: field_policy_type.and_then(Option::flatten), }; Ok(Some(result)) } @@ -42445,40 +64246,39 @@ impl FileRequestChangeDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("new_details", &self.new_details)?; - if let Some(val) = &self.file_request_id { - s.serialize_field("file_request_id", val)?; - } - if let Some(val) = &self.previous_details { - s.serialize_field("previous_details", val)?; + s.serialize_field("governance_policy_id", &self.governance_policy_id)?; + s.serialize_field("name", &self.name)?; + s.serialize_field("export_name", &self.export_name)?; + if let Some(val) = &self.policy_type { + s.serialize_field("policy_type", val)?; } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for FileRequestChangeDetails { +impl<'de> ::serde::de::Deserialize<'de> for GovernancePolicyExportCreatedDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = FileRequestChangeDetails; + type Value = GovernancePolicyExportCreatedDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a FileRequestChangeDetails struct") + f.write_str("a GovernancePolicyExportCreatedDetails struct") } fn visit_map>(self, map: V) -> Result { - FileRequestChangeDetails::internal_deserialize(map) + GovernancePolicyExportCreatedDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("FileRequestChangeDetails", FILE_REQUEST_CHANGE_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("GovernancePolicyExportCreatedDetails", GOVERNANCE_POLICY_EXPORT_CREATED_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for FileRequestChangeDetails { +impl ::serde::ser::Serialize for GovernancePolicyExportCreatedDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("FileRequestChangeDetails", 3)?; + let mut s = serializer.serialize_struct("GovernancePolicyExportCreatedDetails", 4)?; self.internal_serialize::(&mut s)?; s.end() } @@ -42486,30 +64286,30 @@ impl ::serde::ser::Serialize for FileRequestChangeDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct FileRequestChangeType { +pub struct GovernancePolicyExportCreatedType { pub description: String, } -impl FileRequestChangeType { +impl GovernancePolicyExportCreatedType { pub fn new(description: String) -> Self { - FileRequestChangeType { + GovernancePolicyExportCreatedType { description, } } } -const FILE_REQUEST_CHANGE_TYPE_FIELDS: &[&str] = &["description"]; -impl FileRequestChangeType { +const GOVERNANCE_POLICY_EXPORT_CREATED_TYPE_FIELDS: &[&str] = &["description"]; +impl GovernancePolicyExportCreatedType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -42530,7 +64330,7 @@ impl FileRequestChangeType { if optional && nothing { return Ok(None); } - let result = FileRequestChangeType { + let result = GovernancePolicyExportCreatedType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -42546,81 +64346,110 @@ impl FileRequestChangeType { } } -impl<'de> ::serde::de::Deserialize<'de> for FileRequestChangeType { +impl<'de> ::serde::de::Deserialize<'de> for GovernancePolicyExportCreatedType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = FileRequestChangeType; + type Value = GovernancePolicyExportCreatedType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a FileRequestChangeType struct") + f.write_str("a GovernancePolicyExportCreatedType struct") } fn visit_map>(self, map: V) -> Result { - FileRequestChangeType::internal_deserialize(map) + GovernancePolicyExportCreatedType::internal_deserialize(map) } } - deserializer.deserialize_struct("FileRequestChangeType", FILE_REQUEST_CHANGE_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("GovernancePolicyExportCreatedType", GOVERNANCE_POLICY_EXPORT_CREATED_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for FileRequestChangeType { +impl ::serde::ser::Serialize for GovernancePolicyExportCreatedType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("FileRequestChangeType", 1)?; + let mut s = serializer.serialize_struct("GovernancePolicyExportCreatedType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Closed file request. -#[derive(Debug, Clone, PartialEq, Eq, Default)] +/// Removed a policy download. +#[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct FileRequestCloseDetails { - /// File request id. Might be missing due to historical data gap. - pub file_request_id: Option, - /// Previous file request details. Might be missing due to historical data gap. - pub previous_details: Option, +pub struct GovernancePolicyExportRemovedDetails { + /// Policy ID. + pub governance_policy_id: String, + /// Policy name. + pub name: String, + /// Export name. + pub export_name: String, + /// Policy type. + pub policy_type: Option, } -impl FileRequestCloseDetails { - pub fn with_file_request_id( - mut self, - value: crate::types::file_requests::FileRequestId, - ) -> Self { - self.file_request_id = Some(value); - self +impl GovernancePolicyExportRemovedDetails { + pub fn new(governance_policy_id: String, name: String, export_name: String) -> Self { + GovernancePolicyExportRemovedDetails { + governance_policy_id, + name, + export_name, + policy_type: None, + } } - pub fn with_previous_details(mut self, value: FileRequestDetails) -> Self { - self.previous_details = Some(value); + pub fn with_policy_type(mut self, value: PolicyType) -> Self { + self.policy_type = Some(value); self } } -const FILE_REQUEST_CLOSE_DETAILS_FIELDS: &[&str] = &["file_request_id", - "previous_details"]; -impl FileRequestCloseDetails { - // no _opt deserializer +const GOVERNANCE_POLICY_EXPORT_REMOVED_DETAILS_FIELDS: &[&str] = &["governance_policy_id", + "name", + "export_name", + "policy_type"]; +impl GovernancePolicyExportRemovedDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - ) -> Result { - let mut field_file_request_id = None; - let mut field_previous_details = None; + optional: bool, + ) -> Result, V::Error> { + let mut field_governance_policy_id = None; + let mut field_name = None; + let mut field_export_name = None; + let mut field_policy_type = None; + let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { + nothing = false; match key { - "file_request_id" => { - if field_file_request_id.is_some() { - return Err(::serde::de::Error::duplicate_field("file_request_id")); + "governance_policy_id" => { + if field_governance_policy_id.is_some() { + return Err(::serde::de::Error::duplicate_field("governance_policy_id")); } - field_file_request_id = Some(map.next_value()?); + field_governance_policy_id = Some(map.next_value()?); } - "previous_details" => { - if field_previous_details.is_some() { - return Err(::serde::de::Error::duplicate_field("previous_details")); + "name" => { + if field_name.is_some() { + return Err(::serde::de::Error::duplicate_field("name")); } - field_previous_details = Some(map.next_value()?); + field_name = Some(map.next_value()?); + } + "export_name" => { + if field_export_name.is_some() { + return Err(::serde::de::Error::duplicate_field("export_name")); + } + field_export_name = Some(map.next_value()?); + } + "policy_type" => { + if field_policy_type.is_some() { + return Err(::serde::de::Error::duplicate_field("policy_type")); + } + field_policy_type = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -42628,11 +64457,16 @@ impl FileRequestCloseDetails { } } } - let result = FileRequestCloseDetails { - file_request_id: field_file_request_id.and_then(Option::flatten), - previous_details: field_previous_details.and_then(Option::flatten), + if optional && nothing { + return Ok(None); + } + let result = GovernancePolicyExportRemovedDetails { + governance_policy_id: field_governance_policy_id.ok_or_else(|| ::serde::de::Error::missing_field("governance_policy_id"))?, + name: field_name.ok_or_else(|| ::serde::de::Error::missing_field("name"))?, + export_name: field_export_name.ok_or_else(|| ::serde::de::Error::missing_field("export_name"))?, + policy_type: field_policy_type.and_then(Option::flatten), }; - Ok(result) + Ok(Some(result)) } pub(crate) fn internal_serialize( @@ -42640,39 +64474,39 @@ impl FileRequestCloseDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - if let Some(val) = &self.file_request_id { - s.serialize_field("file_request_id", val)?; - } - if let Some(val) = &self.previous_details { - s.serialize_field("previous_details", val)?; + s.serialize_field("governance_policy_id", &self.governance_policy_id)?; + s.serialize_field("name", &self.name)?; + s.serialize_field("export_name", &self.export_name)?; + if let Some(val) = &self.policy_type { + s.serialize_field("policy_type", val)?; } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for FileRequestCloseDetails { +impl<'de> ::serde::de::Deserialize<'de> for GovernancePolicyExportRemovedDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = FileRequestCloseDetails; + type Value = GovernancePolicyExportRemovedDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a FileRequestCloseDetails struct") + f.write_str("a GovernancePolicyExportRemovedDetails struct") } fn visit_map>(self, map: V) -> Result { - FileRequestCloseDetails::internal_deserialize(map) + GovernancePolicyExportRemovedDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("FileRequestCloseDetails", FILE_REQUEST_CLOSE_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("GovernancePolicyExportRemovedDetails", GOVERNANCE_POLICY_EXPORT_REMOVED_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for FileRequestCloseDetails { +impl ::serde::ser::Serialize for GovernancePolicyExportRemovedDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("FileRequestCloseDetails", 2)?; + let mut s = serializer.serialize_struct("GovernancePolicyExportRemovedDetails", 4)?; self.internal_serialize::(&mut s)?; s.end() } @@ -42680,30 +64514,30 @@ impl ::serde::ser::Serialize for FileRequestCloseDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct FileRequestCloseType { +pub struct GovernancePolicyExportRemovedType { pub description: String, } -impl FileRequestCloseType { +impl GovernancePolicyExportRemovedType { pub fn new(description: String) -> Self { - FileRequestCloseType { + GovernancePolicyExportRemovedType { description, } } } -const FILE_REQUEST_CLOSE_TYPE_FIELDS: &[&str] = &["description"]; -impl FileRequestCloseType { +const GOVERNANCE_POLICY_EXPORT_REMOVED_TYPE_FIELDS: &[&str] = &["description"]; +impl GovernancePolicyExportRemovedType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -42724,7 +64558,7 @@ impl FileRequestCloseType { if optional && nothing { return Ok(None); } - let result = FileRequestCloseType { + let result = GovernancePolicyExportRemovedType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -42740,81 +64574,131 @@ impl FileRequestCloseType { } } -impl<'de> ::serde::de::Deserialize<'de> for FileRequestCloseType { +impl<'de> ::serde::de::Deserialize<'de> for GovernancePolicyExportRemovedType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = FileRequestCloseType; + type Value = GovernancePolicyExportRemovedType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a FileRequestCloseType struct") + f.write_str("a GovernancePolicyExportRemovedType struct") } fn visit_map>(self, map: V) -> Result { - FileRequestCloseType::internal_deserialize(map) + GovernancePolicyExportRemovedType::internal_deserialize(map) } } - deserializer.deserialize_struct("FileRequestCloseType", FILE_REQUEST_CLOSE_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("GovernancePolicyExportRemovedType", GOVERNANCE_POLICY_EXPORT_REMOVED_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for FileRequestCloseType { +impl ::serde::ser::Serialize for GovernancePolicyExportRemovedType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("FileRequestCloseType", 1)?; + let mut s = serializer.serialize_struct("GovernancePolicyExportRemovedType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Created file request. -#[derive(Debug, Clone, PartialEq, Eq, Default)] +/// Removed folders from policy. +#[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct FileRequestCreateDetails { - /// File request id. Might be missing due to historical data gap. - pub file_request_id: Option, - /// File request details. Might be missing due to historical data gap. - pub request_details: Option, +pub struct GovernancePolicyRemoveFoldersDetails { + /// Policy ID. + pub governance_policy_id: String, + /// Policy name. + pub name: String, + /// Policy type. + pub policy_type: Option, + /// Folders. + pub folders: Option>, + /// Reason. + pub reason: Option, } -impl FileRequestCreateDetails { - pub fn with_file_request_id( - mut self, - value: crate::types::file_requests::FileRequestId, - ) -> Self { - self.file_request_id = Some(value); +impl GovernancePolicyRemoveFoldersDetails { + pub fn new(governance_policy_id: String, name: String) -> Self { + GovernancePolicyRemoveFoldersDetails { + governance_policy_id, + name, + policy_type: None, + folders: None, + reason: None, + } + } + + pub fn with_policy_type(mut self, value: PolicyType) -> Self { + self.policy_type = Some(value); self } - pub fn with_request_details(mut self, value: FileRequestDetails) -> Self { - self.request_details = Some(value); + pub fn with_folders(mut self, value: Vec) -> Self { + self.folders = Some(value); + self + } + + pub fn with_reason(mut self, value: String) -> Self { + self.reason = Some(value); self } } -const FILE_REQUEST_CREATE_DETAILS_FIELDS: &[&str] = &["file_request_id", - "request_details"]; -impl FileRequestCreateDetails { - // no _opt deserializer +const GOVERNANCE_POLICY_REMOVE_FOLDERS_DETAILS_FIELDS: &[&str] = &["governance_policy_id", + "name", + "policy_type", + "folders", + "reason"]; +impl GovernancePolicyRemoveFoldersDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - ) -> Result { - let mut field_file_request_id = None; - let mut field_request_details = None; + optional: bool, + ) -> Result, V::Error> { + let mut field_governance_policy_id = None; + let mut field_name = None; + let mut field_policy_type = None; + let mut field_folders = None; + let mut field_reason = None; + let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { + nothing = false; match key { - "file_request_id" => { - if field_file_request_id.is_some() { - return Err(::serde::de::Error::duplicate_field("file_request_id")); + "governance_policy_id" => { + if field_governance_policy_id.is_some() { + return Err(::serde::de::Error::duplicate_field("governance_policy_id")); } - field_file_request_id = Some(map.next_value()?); + field_governance_policy_id = Some(map.next_value()?); } - "request_details" => { - if field_request_details.is_some() { - return Err(::serde::de::Error::duplicate_field("request_details")); + "name" => { + if field_name.is_some() { + return Err(::serde::de::Error::duplicate_field("name")); } - field_request_details = Some(map.next_value()?); + field_name = Some(map.next_value()?); + } + "policy_type" => { + if field_policy_type.is_some() { + return Err(::serde::de::Error::duplicate_field("policy_type")); + } + field_policy_type = Some(map.next_value()?); + } + "folders" => { + if field_folders.is_some() { + return Err(::serde::de::Error::duplicate_field("folders")); + } + field_folders = Some(map.next_value()?); + } + "reason" => { + if field_reason.is_some() { + return Err(::serde::de::Error::duplicate_field("reason")); + } + field_reason = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -42822,11 +64706,17 @@ impl FileRequestCreateDetails { } } } - let result = FileRequestCreateDetails { - file_request_id: field_file_request_id.and_then(Option::flatten), - request_details: field_request_details.and_then(Option::flatten), + if optional && nothing { + return Ok(None); + } + let result = GovernancePolicyRemoveFoldersDetails { + governance_policy_id: field_governance_policy_id.ok_or_else(|| ::serde::de::Error::missing_field("governance_policy_id"))?, + name: field_name.ok_or_else(|| ::serde::de::Error::missing_field("name"))?, + policy_type: field_policy_type.and_then(Option::flatten), + folders: field_folders.and_then(Option::flatten), + reason: field_reason.and_then(Option::flatten), }; - Ok(result) + Ok(Some(result)) } pub(crate) fn internal_serialize( @@ -42834,39 +64724,44 @@ impl FileRequestCreateDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - if let Some(val) = &self.file_request_id { - s.serialize_field("file_request_id", val)?; + s.serialize_field("governance_policy_id", &self.governance_policy_id)?; + s.serialize_field("name", &self.name)?; + if let Some(val) = &self.policy_type { + s.serialize_field("policy_type", val)?; } - if let Some(val) = &self.request_details { - s.serialize_field("request_details", val)?; + if let Some(val) = &self.folders { + s.serialize_field("folders", val)?; + } + if let Some(val) = &self.reason { + s.serialize_field("reason", val)?; } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for FileRequestCreateDetails { +impl<'de> ::serde::de::Deserialize<'de> for GovernancePolicyRemoveFoldersDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = FileRequestCreateDetails; + type Value = GovernancePolicyRemoveFoldersDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a FileRequestCreateDetails struct") + f.write_str("a GovernancePolicyRemoveFoldersDetails struct") } fn visit_map>(self, map: V) -> Result { - FileRequestCreateDetails::internal_deserialize(map) + GovernancePolicyRemoveFoldersDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("FileRequestCreateDetails", FILE_REQUEST_CREATE_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("GovernancePolicyRemoveFoldersDetails", GOVERNANCE_POLICY_REMOVE_FOLDERS_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for FileRequestCreateDetails { +impl ::serde::ser::Serialize for GovernancePolicyRemoveFoldersDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("FileRequestCreateDetails", 2)?; + let mut s = serializer.serialize_struct("GovernancePolicyRemoveFoldersDetails", 5)?; self.internal_serialize::(&mut s)?; s.end() } @@ -42874,30 +64769,30 @@ impl ::serde::ser::Serialize for FileRequestCreateDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct FileRequestCreateType { +pub struct GovernancePolicyRemoveFoldersType { pub description: String, } -impl FileRequestCreateType { +impl GovernancePolicyRemoveFoldersType { pub fn new(description: String) -> Self { - FileRequestCreateType { + GovernancePolicyRemoveFoldersType { description, } } } -const FILE_REQUEST_CREATE_TYPE_FIELDS: &[&str] = &["description"]; -impl FileRequestCreateType { +const GOVERNANCE_POLICY_REMOVE_FOLDERS_TYPE_FIELDS: &[&str] = &["description"]; +impl GovernancePolicyRemoveFoldersType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -42918,7 +64813,7 @@ impl FileRequestCreateType { if optional && nothing { return Ok(None); } - let result = FileRequestCreateType { + let result = GovernancePolicyRemoveFoldersType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -42934,78 +64829,99 @@ impl FileRequestCreateType { } } -impl<'de> ::serde::de::Deserialize<'de> for FileRequestCreateType { +impl<'de> ::serde::de::Deserialize<'de> for GovernancePolicyRemoveFoldersType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = FileRequestCreateType; + type Value = GovernancePolicyRemoveFoldersType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a FileRequestCreateType struct") + f.write_str("a GovernancePolicyRemoveFoldersType struct") } fn visit_map>(self, map: V) -> Result { - FileRequestCreateType::internal_deserialize(map) + GovernancePolicyRemoveFoldersType::internal_deserialize(map) } } - deserializer.deserialize_struct("FileRequestCreateType", FILE_REQUEST_CREATE_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("GovernancePolicyRemoveFoldersType", GOVERNANCE_POLICY_REMOVE_FOLDERS_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for FileRequestCreateType { +impl ::serde::ser::Serialize for GovernancePolicyRemoveFoldersType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("FileRequestCreateType", 1)?; + let mut s = serializer.serialize_struct("GovernancePolicyRemoveFoldersType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// File request deadline -#[derive(Debug, Clone, PartialEq, Eq, Default)] +/// Created a summary report for a policy. +#[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct FileRequestDeadline { - /// The deadline for this file request. Might be missing due to historical data gap. - pub deadline: Option, - /// If set, allow uploads after the deadline has passed. - pub allow_late_uploads: Option, +pub struct GovernancePolicyReportCreatedDetails { + /// Policy ID. + pub governance_policy_id: String, + /// Policy name. + pub name: String, + /// Policy type. + pub policy_type: Option, } -impl FileRequestDeadline { - pub fn with_deadline(mut self, value: crate::types::common::DropboxTimestamp) -> Self { - self.deadline = Some(value); - self +impl GovernancePolicyReportCreatedDetails { + pub fn new(governance_policy_id: String, name: String) -> Self { + GovernancePolicyReportCreatedDetails { + governance_policy_id, + name, + policy_type: None, + } } - pub fn with_allow_late_uploads(mut self, value: String) -> Self { - self.allow_late_uploads = Some(value); + pub fn with_policy_type(mut self, value: PolicyType) -> Self { + self.policy_type = Some(value); self } } -const FILE_REQUEST_DEADLINE_FIELDS: &[&str] = &["deadline", - "allow_late_uploads"]; -impl FileRequestDeadline { - // no _opt deserializer +const GOVERNANCE_POLICY_REPORT_CREATED_DETAILS_FIELDS: &[&str] = &["governance_policy_id", + "name", + "policy_type"]; +impl GovernancePolicyReportCreatedDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - ) -> Result { - let mut field_deadline = None; - let mut field_allow_late_uploads = None; + optional: bool, + ) -> Result, V::Error> { + let mut field_governance_policy_id = None; + let mut field_name = None; + let mut field_policy_type = None; + let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { + nothing = false; match key { - "deadline" => { - if field_deadline.is_some() { - return Err(::serde::de::Error::duplicate_field("deadline")); + "governance_policy_id" => { + if field_governance_policy_id.is_some() { + return Err(::serde::de::Error::duplicate_field("governance_policy_id")); } - field_deadline = Some(map.next_value()?); + field_governance_policy_id = Some(map.next_value()?); } - "allow_late_uploads" => { - if field_allow_late_uploads.is_some() { - return Err(::serde::de::Error::duplicate_field("allow_late_uploads")); + "name" => { + if field_name.is_some() { + return Err(::serde::de::Error::duplicate_field("name")); } - field_allow_late_uploads = Some(map.next_value()?); + field_name = Some(map.next_value()?); + } + "policy_type" => { + if field_policy_type.is_some() { + return Err(::serde::de::Error::duplicate_field("policy_type")); + } + field_policy_type = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -43013,11 +64929,15 @@ impl FileRequestDeadline { } } } - let result = FileRequestDeadline { - deadline: field_deadline.and_then(Option::flatten), - allow_late_uploads: field_allow_late_uploads.and_then(Option::flatten), + if optional && nothing { + return Ok(None); + } + let result = GovernancePolicyReportCreatedDetails { + governance_policy_id: field_governance_policy_id.ok_or_else(|| ::serde::de::Error::missing_field("governance_policy_id"))?, + name: field_name.ok_or_else(|| ::serde::de::Error::missing_field("name"))?, + policy_type: field_policy_type.and_then(Option::flatten), }; - Ok(result) + Ok(Some(result)) } pub(crate) fn internal_serialize( @@ -43025,91 +64945,79 @@ impl FileRequestDeadline { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - if let Some(val) = &self.deadline { - s.serialize_field("deadline", val)?; - } - if let Some(val) = &self.allow_late_uploads { - s.serialize_field("allow_late_uploads", val)?; + s.serialize_field("governance_policy_id", &self.governance_policy_id)?; + s.serialize_field("name", &self.name)?; + if let Some(val) = &self.policy_type { + s.serialize_field("policy_type", val)?; } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for FileRequestDeadline { +impl<'de> ::serde::de::Deserialize<'de> for GovernancePolicyReportCreatedDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = FileRequestDeadline; + type Value = GovernancePolicyReportCreatedDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a FileRequestDeadline struct") + f.write_str("a GovernancePolicyReportCreatedDetails struct") } fn visit_map>(self, map: V) -> Result { - FileRequestDeadline::internal_deserialize(map) + GovernancePolicyReportCreatedDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("FileRequestDeadline", FILE_REQUEST_DEADLINE_FIELDS, StructVisitor) + deserializer.deserialize_struct("GovernancePolicyReportCreatedDetails", GOVERNANCE_POLICY_REPORT_CREATED_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for FileRequestDeadline { +impl ::serde::ser::Serialize for GovernancePolicyReportCreatedDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("FileRequestDeadline", 2)?; + let mut s = serializer.serialize_struct("GovernancePolicyReportCreatedDetails", 3)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Delete file request. -#[derive(Debug, Clone, PartialEq, Eq, Default)] +#[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct FileRequestDeleteDetails { - /// File request id. Might be missing due to historical data gap. - pub file_request_id: Option, - /// Previous file request details. Might be missing due to historical data gap. - pub previous_details: Option, +pub struct GovernancePolicyReportCreatedType { + pub description: String, } -impl FileRequestDeleteDetails { - pub fn with_file_request_id( - mut self, - value: crate::types::file_requests::FileRequestId, - ) -> Self { - self.file_request_id = Some(value); - self - } - - pub fn with_previous_details(mut self, value: FileRequestDetails) -> Self { - self.previous_details = Some(value); - self +impl GovernancePolicyReportCreatedType { + pub fn new(description: String) -> Self { + GovernancePolicyReportCreatedType { + description, + } } } -const FILE_REQUEST_DELETE_DETAILS_FIELDS: &[&str] = &["file_request_id", - "previous_details"]; -impl FileRequestDeleteDetails { - // no _opt deserializer +const GOVERNANCE_POLICY_REPORT_CREATED_TYPE_FIELDS: &[&str] = &["description"]; +impl GovernancePolicyReportCreatedType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - ) -> Result { - let mut field_file_request_id = None; - let mut field_previous_details = None; + optional: bool, + ) -> Result, V::Error> { + let mut field_description = None; + let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { + nothing = false; match key { - "file_request_id" => { - if field_file_request_id.is_some() { - return Err(::serde::de::Error::duplicate_field("file_request_id")); - } - field_file_request_id = Some(map.next_value()?); - } - "previous_details" => { - if field_previous_details.is_some() { - return Err(::serde::de::Error::duplicate_field("previous_details")); + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); } - field_previous_details = Some(map.next_value()?); + field_description = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -43117,11 +65025,13 @@ impl FileRequestDeleteDetails { } } } - let result = FileRequestDeleteDetails { - file_request_id: field_file_request_id.and_then(Option::flatten), - previous_details: field_previous_details.and_then(Option::flatten), + if optional && nothing { + return Ok(None); + } + let result = GovernancePolicyReportCreatedType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; - Ok(result) + Ok(Some(result)) } pub(crate) fn internal_serialize( @@ -43129,80 +65039,131 @@ impl FileRequestDeleteDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - if let Some(val) = &self.file_request_id { - s.serialize_field("file_request_id", val)?; - } - if let Some(val) = &self.previous_details { - s.serialize_field("previous_details", val)?; - } + s.serialize_field("description", &self.description)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for FileRequestDeleteDetails { +impl<'de> ::serde::de::Deserialize<'de> for GovernancePolicyReportCreatedType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = FileRequestDeleteDetails; + type Value = GovernancePolicyReportCreatedType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a FileRequestDeleteDetails struct") + f.write_str("a GovernancePolicyReportCreatedType struct") } fn visit_map>(self, map: V) -> Result { - FileRequestDeleteDetails::internal_deserialize(map) + GovernancePolicyReportCreatedType::internal_deserialize(map) } } - deserializer.deserialize_struct("FileRequestDeleteDetails", FILE_REQUEST_DELETE_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("GovernancePolicyReportCreatedType", GOVERNANCE_POLICY_REPORT_CREATED_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for FileRequestDeleteDetails { +impl ::serde::ser::Serialize for GovernancePolicyReportCreatedType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("FileRequestDeleteDetails", 2)?; + let mut s = serializer.serialize_struct("GovernancePolicyReportCreatedType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } +/// Downloaded content from a policy. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct FileRequestDeleteType { - pub description: String, +pub struct GovernancePolicyZipPartDownloadedDetails { + /// Policy ID. + pub governance_policy_id: String, + /// Policy name. + pub name: String, + /// Export name. + pub export_name: String, + /// Policy type. + pub policy_type: Option, + /// Part. + pub part: Option, } -impl FileRequestDeleteType { - pub fn new(description: String) -> Self { - FileRequestDeleteType { - description, +impl GovernancePolicyZipPartDownloadedDetails { + pub fn new(governance_policy_id: String, name: String, export_name: String) -> Self { + GovernancePolicyZipPartDownloadedDetails { + governance_policy_id, + name, + export_name, + policy_type: None, + part: None, } } + + pub fn with_policy_type(mut self, value: PolicyType) -> Self { + self.policy_type = Some(value); + self + } + + pub fn with_part(mut self, value: String) -> Self { + self.part = Some(value); + self + } } -const FILE_REQUEST_DELETE_TYPE_FIELDS: &[&str] = &["description"]; -impl FileRequestDeleteType { +const GOVERNANCE_POLICY_ZIP_PART_DOWNLOADED_DETAILS_FIELDS: &[&str] = &["governance_policy_id", + "name", + "export_name", + "policy_type", + "part"]; +impl GovernancePolicyZipPartDownloadedDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_description = None; + ) -> Result, V::Error> { + let mut field_governance_policy_id = None; + let mut field_name = None; + let mut field_export_name = None; + let mut field_policy_type = None; + let mut field_part = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "description" => { - if field_description.is_some() { - return Err(::serde::de::Error::duplicate_field("description")); + "governance_policy_id" => { + if field_governance_policy_id.is_some() { + return Err(::serde::de::Error::duplicate_field("governance_policy_id")); } - field_description = Some(map.next_value()?); + field_governance_policy_id = Some(map.next_value()?); + } + "name" => { + if field_name.is_some() { + return Err(::serde::de::Error::duplicate_field("name")); + } + field_name = Some(map.next_value()?); + } + "export_name" => { + if field_export_name.is_some() { + return Err(::serde::de::Error::duplicate_field("export_name")); + } + field_export_name = Some(map.next_value()?); + } + "policy_type" => { + if field_policy_type.is_some() { + return Err(::serde::de::Error::duplicate_field("policy_type")); + } + field_policy_type = Some(map.next_value()?); + } + "part" => { + if field_part.is_some() { + return Err(::serde::de::Error::duplicate_field("part")); + } + field_part = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -43213,8 +65174,12 @@ impl FileRequestDeleteType { if optional && nothing { return Ok(None); } - let result = FileRequestDeleteType { - description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + let result = GovernancePolicyZipPartDownloadedDetails { + governance_policy_id: field_governance_policy_id.ok_or_else(|| ::serde::de::Error::missing_field("governance_policy_id"))?, + name: field_name.ok_or_else(|| ::serde::de::Error::missing_field("name"))?, + export_name: field_export_name.ok_or_else(|| ::serde::de::Error::missing_field("export_name"))?, + policy_type: field_policy_type.and_then(Option::flatten), + part: field_part.and_then(Option::flatten), }; Ok(Some(result)) } @@ -43224,93 +65189,83 @@ impl FileRequestDeleteType { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("description", &self.description)?; + s.serialize_field("governance_policy_id", &self.governance_policy_id)?; + s.serialize_field("name", &self.name)?; + s.serialize_field("export_name", &self.export_name)?; + if let Some(val) = &self.policy_type { + s.serialize_field("policy_type", val)?; + } + if let Some(val) = &self.part { + s.serialize_field("part", val)?; + } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for FileRequestDeleteType { +impl<'de> ::serde::de::Deserialize<'de> for GovernancePolicyZipPartDownloadedDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = FileRequestDeleteType; + type Value = GovernancePolicyZipPartDownloadedDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a FileRequestDeleteType struct") + f.write_str("a GovernancePolicyZipPartDownloadedDetails struct") } fn visit_map>(self, map: V) -> Result { - FileRequestDeleteType::internal_deserialize(map) + GovernancePolicyZipPartDownloadedDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("FileRequestDeleteType", FILE_REQUEST_DELETE_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("GovernancePolicyZipPartDownloadedDetails", GOVERNANCE_POLICY_ZIP_PART_DOWNLOADED_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for FileRequestDeleteType { +impl ::serde::ser::Serialize for GovernancePolicyZipPartDownloadedDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("FileRequestDeleteType", 1)?; + let mut s = serializer.serialize_struct("GovernancePolicyZipPartDownloadedDetails", 5)?; self.internal_serialize::(&mut s)?; s.end() } } -/// File request details #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct FileRequestDetails { - /// Asset position in the Assets list. - pub asset_index: u64, - /// File request deadline. - pub deadline: Option, +pub struct GovernancePolicyZipPartDownloadedType { + pub description: String, } -impl FileRequestDetails { - pub fn new(asset_index: u64) -> Self { - FileRequestDetails { - asset_index, - deadline: None, +impl GovernancePolicyZipPartDownloadedType { + pub fn new(description: String) -> Self { + GovernancePolicyZipPartDownloadedType { + description, } } - - pub fn with_deadline(mut self, value: FileRequestDeadline) -> Self { - self.deadline = Some(value); - self - } } -const FILE_REQUEST_DETAILS_FIELDS: &[&str] = &["asset_index", - "deadline"]; -impl FileRequestDetails { +const GOVERNANCE_POLICY_ZIP_PART_DOWNLOADED_TYPE_FIELDS: &[&str] = &["description"]; +impl GovernancePolicyZipPartDownloadedType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_asset_index = None; - let mut field_deadline = None; + ) -> Result, V::Error> { + let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "asset_index" => { - if field_asset_index.is_some() { - return Err(::serde::de::Error::duplicate_field("asset_index")); - } - field_asset_index = Some(map.next_value()?); - } - "deadline" => { - if field_deadline.is_some() { - return Err(::serde::de::Error::duplicate_field("deadline")); + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); } - field_deadline = Some(map.next_value()?); + field_description = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -43321,9 +65276,8 @@ impl FileRequestDetails { if optional && nothing { return Ok(None); } - let result = FileRequestDetails { - asset_index: field_asset_index.ok_or_else(|| ::serde::de::Error::missing_field("asset_index"))?, - deadline: field_deadline.and_then(Option::flatten), + let result = GovernancePolicyZipPartDownloadedType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) } @@ -43333,147 +65287,77 @@ impl FileRequestDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("asset_index", &self.asset_index)?; - if let Some(val) = &self.deadline { - s.serialize_field("deadline", val)?; - } + s.serialize_field("description", &self.description)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for FileRequestDetails { +impl<'de> ::serde::de::Deserialize<'de> for GovernancePolicyZipPartDownloadedType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = FileRequestDetails; + type Value = GovernancePolicyZipPartDownloadedType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a FileRequestDetails struct") + f.write_str("a GovernancePolicyZipPartDownloadedType struct") } fn visit_map>(self, map: V) -> Result { - FileRequestDetails::internal_deserialize(map) + GovernancePolicyZipPartDownloadedType::internal_deserialize(map) } } - deserializer.deserialize_struct("FileRequestDetails", FILE_REQUEST_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("GovernancePolicyZipPartDownloadedType", GOVERNANCE_POLICY_ZIP_PART_DOWNLOADED_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for FileRequestDetails { +impl ::serde::ser::Serialize for GovernancePolicyZipPartDownloadedType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("FileRequestDetails", 2)?; + let mut s = serializer.serialize_struct("GovernancePolicyZipPartDownloadedType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Received files for file request. +/// Added external ID for group. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct FileRequestReceiveFileDetails { - /// Submitted file names. - pub submitted_file_names: Vec, - /// File request id. Might be missing due to historical data gap. - pub file_request_id: Option, - /// File request details. Might be missing due to historical data gap. - pub file_request_details: Option, - /// The name as provided by the submitter. - pub submitter_name: Option, - /// The email as provided by the submitter. - pub submitter_email: Option, +pub struct GroupAddExternalIdDetails { + /// Current external id. + pub new_value: crate::types::team_common::GroupExternalId, } -impl FileRequestReceiveFileDetails { - pub fn new(submitted_file_names: Vec) -> Self { - FileRequestReceiveFileDetails { - submitted_file_names, - file_request_id: None, - file_request_details: None, - submitter_name: None, - submitter_email: None, +impl GroupAddExternalIdDetails { + pub fn new(new_value: crate::types::team_common::GroupExternalId) -> Self { + GroupAddExternalIdDetails { + new_value, } } - - pub fn with_file_request_id( - mut self, - value: crate::types::file_requests::FileRequestId, - ) -> Self { - self.file_request_id = Some(value); - self - } - - pub fn with_file_request_details(mut self, value: FileRequestDetails) -> Self { - self.file_request_details = Some(value); - self - } - - pub fn with_submitter_name(mut self, value: crate::types::common::DisplayNameLegacy) -> Self { - self.submitter_name = Some(value); - self - } - - pub fn with_submitter_email(mut self, value: EmailAddress) -> Self { - self.submitter_email = Some(value); - self - } } -const FILE_REQUEST_RECEIVE_FILE_DETAILS_FIELDS: &[&str] = &["submitted_file_names", - "file_request_id", - "file_request_details", - "submitter_name", - "submitter_email"]; -impl FileRequestReceiveFileDetails { +const GROUP_ADD_EXTERNAL_ID_DETAILS_FIELDS: &[&str] = &["new_value"]; +impl GroupAddExternalIdDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_submitted_file_names = None; - let mut field_file_request_id = None; - let mut field_file_request_details = None; - let mut field_submitter_name = None; - let mut field_submitter_email = None; + ) -> Result, V::Error> { + let mut field_new_value = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "submitted_file_names" => { - if field_submitted_file_names.is_some() { - return Err(::serde::de::Error::duplicate_field("submitted_file_names")); - } - field_submitted_file_names = Some(map.next_value()?); - } - "file_request_id" => { - if field_file_request_id.is_some() { - return Err(::serde::de::Error::duplicate_field("file_request_id")); - } - field_file_request_id = Some(map.next_value()?); - } - "file_request_details" => { - if field_file_request_details.is_some() { - return Err(::serde::de::Error::duplicate_field("file_request_details")); - } - field_file_request_details = Some(map.next_value()?); - } - "submitter_name" => { - if field_submitter_name.is_some() { - return Err(::serde::de::Error::duplicate_field("submitter_name")); - } - field_submitter_name = Some(map.next_value()?); - } - "submitter_email" => { - if field_submitter_email.is_some() { - return Err(::serde::de::Error::duplicate_field("submitter_email")); + "new_value" => { + if field_new_value.is_some() { + return Err(::serde::de::Error::duplicate_field("new_value")); } - field_submitter_email = Some(map.next_value()?); + field_new_value = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -43484,12 +65368,8 @@ impl FileRequestReceiveFileDetails { if optional && nothing { return Ok(None); } - let result = FileRequestReceiveFileDetails { - submitted_file_names: field_submitted_file_names.ok_or_else(|| ::serde::de::Error::missing_field("submitted_file_names"))?, - file_request_id: field_file_request_id.and_then(Option::flatten), - file_request_details: field_file_request_details.and_then(Option::flatten), - submitter_name: field_submitter_name.and_then(Option::flatten), - submitter_email: field_submitter_email.and_then(Option::flatten), + let result = GroupAddExternalIdDetails { + new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, }; Ok(Some(result)) } @@ -43499,46 +65379,34 @@ impl FileRequestReceiveFileDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("submitted_file_names", &self.submitted_file_names)?; - if let Some(val) = &self.file_request_id { - s.serialize_field("file_request_id", val)?; - } - if let Some(val) = &self.file_request_details { - s.serialize_field("file_request_details", val)?; - } - if let Some(val) = &self.submitter_name { - s.serialize_field("submitter_name", val)?; - } - if let Some(val) = &self.submitter_email { - s.serialize_field("submitter_email", val)?; - } + s.serialize_field("new_value", &self.new_value)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for FileRequestReceiveFileDetails { +impl<'de> ::serde::de::Deserialize<'de> for GroupAddExternalIdDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = FileRequestReceiveFileDetails; + type Value = GroupAddExternalIdDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a FileRequestReceiveFileDetails struct") + f.write_str("a GroupAddExternalIdDetails struct") } fn visit_map>(self, map: V) -> Result { - FileRequestReceiveFileDetails::internal_deserialize(map) + GroupAddExternalIdDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("FileRequestReceiveFileDetails", FILE_REQUEST_RECEIVE_FILE_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("GroupAddExternalIdDetails", GROUP_ADD_EXTERNAL_ID_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for FileRequestReceiveFileDetails { +impl ::serde::ser::Serialize for GroupAddExternalIdDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("FileRequestReceiveFileDetails", 5)?; + let mut s = serializer.serialize_struct("GroupAddExternalIdDetails", 1)?; self.internal_serialize::(&mut s)?; s.end() } @@ -43546,30 +65414,30 @@ impl ::serde::ser::Serialize for FileRequestReceiveFileDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct FileRequestReceiveFileType { +pub struct GroupAddExternalIdType { pub description: String, } -impl FileRequestReceiveFileType { +impl GroupAddExternalIdType { pub fn new(description: String) -> Self { - FileRequestReceiveFileType { + GroupAddExternalIdType { description, } } } -const FILE_REQUEST_RECEIVE_FILE_TYPE_FIELDS: &[&str] = &["description"]; -impl FileRequestReceiveFileType { +const GROUP_ADD_EXTERNAL_ID_TYPE_FIELDS: &[&str] = &["description"]; +impl GroupAddExternalIdType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -43590,7 +65458,7 @@ impl FileRequestReceiveFileType { if optional && nothing { return Ok(None); } - let result = FileRequestReceiveFileType { + let result = GroupAddExternalIdType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -43606,88 +65474,72 @@ impl FileRequestReceiveFileType { } } -impl<'de> ::serde::de::Deserialize<'de> for FileRequestReceiveFileType { +impl<'de> ::serde::de::Deserialize<'de> for GroupAddExternalIdType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = FileRequestReceiveFileType; + type Value = GroupAddExternalIdType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a FileRequestReceiveFileType struct") + f.write_str("a GroupAddExternalIdType struct") } fn visit_map>(self, map: V) -> Result { - FileRequestReceiveFileType::internal_deserialize(map) + GroupAddExternalIdType::internal_deserialize(map) } } - deserializer.deserialize_struct("FileRequestReceiveFileType", FILE_REQUEST_RECEIVE_FILE_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("GroupAddExternalIdType", GROUP_ADD_EXTERNAL_ID_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for FileRequestReceiveFileType { +impl ::serde::ser::Serialize for GroupAddExternalIdType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("FileRequestReceiveFileType", 1)?; + let mut s = serializer.serialize_struct("GroupAddExternalIdType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Enabled/disabled file requests. +/// Added team members to group. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct FileRequestsChangePolicyDetails { - /// New file requests policy. - pub new_value: FileRequestsPolicy, - /// Previous file requests policy. Might be missing due to historical data gap. - pub previous_value: Option, +pub struct GroupAddMemberDetails { + /// Is group owner. + pub is_group_owner: bool, } -impl FileRequestsChangePolicyDetails { - pub fn new(new_value: FileRequestsPolicy) -> Self { - FileRequestsChangePolicyDetails { - new_value, - previous_value: None, +impl GroupAddMemberDetails { + pub fn new(is_group_owner: bool) -> Self { + GroupAddMemberDetails { + is_group_owner, } } - - pub fn with_previous_value(mut self, value: FileRequestsPolicy) -> Self { - self.previous_value = Some(value); - self - } } -const FILE_REQUESTS_CHANGE_POLICY_DETAILS_FIELDS: &[&str] = &["new_value", - "previous_value"]; -impl FileRequestsChangePolicyDetails { +const GROUP_ADD_MEMBER_DETAILS_FIELDS: &[&str] = &["is_group_owner"]; +impl GroupAddMemberDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_new_value = None; - let mut field_previous_value = None; + ) -> Result, V::Error> { + let mut field_is_group_owner = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "new_value" => { - if field_new_value.is_some() { - return Err(::serde::de::Error::duplicate_field("new_value")); - } - field_new_value = Some(map.next_value()?); - } - "previous_value" => { - if field_previous_value.is_some() { - return Err(::serde::de::Error::duplicate_field("previous_value")); + "is_group_owner" => { + if field_is_group_owner.is_some() { + return Err(::serde::de::Error::duplicate_field("is_group_owner")); } - field_previous_value = Some(map.next_value()?); + field_is_group_owner = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -43698,9 +65550,8 @@ impl FileRequestsChangePolicyDetails { if optional && nothing { return Ok(None); } - let result = FileRequestsChangePolicyDetails { - new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, - previous_value: field_previous_value.and_then(Option::flatten), + let result = GroupAddMemberDetails { + is_group_owner: field_is_group_owner.ok_or_else(|| ::serde::de::Error::missing_field("is_group_owner"))?, }; Ok(Some(result)) } @@ -43710,37 +65561,34 @@ impl FileRequestsChangePolicyDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("new_value", &self.new_value)?; - if let Some(val) = &self.previous_value { - s.serialize_field("previous_value", val)?; - } + s.serialize_field("is_group_owner", &self.is_group_owner)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for FileRequestsChangePolicyDetails { +impl<'de> ::serde::de::Deserialize<'de> for GroupAddMemberDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = FileRequestsChangePolicyDetails; + type Value = GroupAddMemberDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a FileRequestsChangePolicyDetails struct") + f.write_str("a GroupAddMemberDetails struct") } fn visit_map>(self, map: V) -> Result { - FileRequestsChangePolicyDetails::internal_deserialize(map) + GroupAddMemberDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("FileRequestsChangePolicyDetails", FILE_REQUESTS_CHANGE_POLICY_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("GroupAddMemberDetails", GROUP_ADD_MEMBER_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for FileRequestsChangePolicyDetails { +impl ::serde::ser::Serialize for GroupAddMemberDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("FileRequestsChangePolicyDetails", 2)?; + let mut s = serializer.serialize_struct("GroupAddMemberDetails", 1)?; self.internal_serialize::(&mut s)?; s.end() } @@ -43748,30 +65596,30 @@ impl ::serde::ser::Serialize for FileRequestsChangePolicyDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct FileRequestsChangePolicyType { +pub struct GroupAddMemberType { pub description: String, } -impl FileRequestsChangePolicyType { +impl GroupAddMemberType { pub fn new(description: String) -> Self { - FileRequestsChangePolicyType { + GroupAddMemberType { description, } } } -const FILE_REQUESTS_CHANGE_POLICY_TYPE_FIELDS: &[&str] = &["description"]; -impl FileRequestsChangePolicyType { +const GROUP_ADD_MEMBER_TYPE_FIELDS: &[&str] = &["description"]; +impl GroupAddMemberType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -43792,7 +65640,7 @@ impl FileRequestsChangePolicyType { if optional && nothing { return Ok(None); } - let result = FileRequestsChangePolicyType { + let result = GroupAddMemberType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -43808,114 +65656,86 @@ impl FileRequestsChangePolicyType { } } -impl<'de> ::serde::de::Deserialize<'de> for FileRequestsChangePolicyType { +impl<'de> ::serde::de::Deserialize<'de> for GroupAddMemberType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = FileRequestsChangePolicyType; + type Value = GroupAddMemberType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a FileRequestsChangePolicyType struct") + f.write_str("a GroupAddMemberType struct") } fn visit_map>(self, map: V) -> Result { - FileRequestsChangePolicyType::internal_deserialize(map) + GroupAddMemberType::internal_deserialize(map) } } - deserializer.deserialize_struct("FileRequestsChangePolicyType", FILE_REQUESTS_CHANGE_POLICY_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("GroupAddMemberType", GROUP_ADD_MEMBER_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for FileRequestsChangePolicyType { +impl ::serde::ser::Serialize for GroupAddMemberType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("FileRequestsChangePolicyType", 1)?; + let mut s = serializer.serialize_struct("GroupAddMemberType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Enabled file request emails for everyone. -#[derive(Debug, Clone, PartialEq, Eq, Default)] -#[non_exhaustive] // structs may have more fields added in the future. -pub struct FileRequestsEmailsEnabledDetails { -} - -const FILE_REQUESTS_EMAILS_ENABLED_DETAILS_FIELDS: &[&str] = &[]; -impl FileRequestsEmailsEnabledDetails { - // no _opt deserializer - pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( - mut map: V, - ) -> Result { - // ignore any fields found; none are presently recognized - crate::eat_json_fields(&mut map)?; - Ok(FileRequestsEmailsEnabledDetails {}) - } -} - -impl<'de> ::serde::de::Deserialize<'de> for FileRequestsEmailsEnabledDetails { - fn deserialize>(deserializer: D) -> Result { - // struct deserializer - use serde::de::{MapAccess, Visitor}; - struct StructVisitor; - impl<'de> Visitor<'de> for StructVisitor { - type Value = FileRequestsEmailsEnabledDetails; - fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a FileRequestsEmailsEnabledDetails struct") - } - fn visit_map>(self, map: V) -> Result { - FileRequestsEmailsEnabledDetails::internal_deserialize(map) - } - } - deserializer.deserialize_struct("FileRequestsEmailsEnabledDetails", FILE_REQUESTS_EMAILS_ENABLED_DETAILS_FIELDS, StructVisitor) - } -} - -impl ::serde::ser::Serialize for FileRequestsEmailsEnabledDetails { - fn serialize(&self, serializer: S) -> Result { - // struct serializer - use serde::ser::SerializeStruct; - serializer.serialize_struct("FileRequestsEmailsEnabledDetails", 0)?.end() - } -} - +/// Changed external ID for group. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct FileRequestsEmailsEnabledType { - pub description: String, +pub struct GroupChangeExternalIdDetails { + /// Current external id. + pub new_value: crate::types::team_common::GroupExternalId, + /// Old external id. + pub previous_value: crate::types::team_common::GroupExternalId, } -impl FileRequestsEmailsEnabledType { - pub fn new(description: String) -> Self { - FileRequestsEmailsEnabledType { - description, +impl GroupChangeExternalIdDetails { + pub fn new( + new_value: crate::types::team_common::GroupExternalId, + previous_value: crate::types::team_common::GroupExternalId, + ) -> Self { + GroupChangeExternalIdDetails { + new_value, + previous_value, } } } -const FILE_REQUESTS_EMAILS_ENABLED_TYPE_FIELDS: &[&str] = &["description"]; -impl FileRequestsEmailsEnabledType { +const GROUP_CHANGE_EXTERNAL_ID_DETAILS_FIELDS: &[&str] = &["new_value", + "previous_value"]; +impl GroupChangeExternalIdDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_description = None; + ) -> Result, V::Error> { + let mut field_new_value = None; + let mut field_previous_value = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "description" => { - if field_description.is_some() { - return Err(::serde::de::Error::duplicate_field("description")); + "new_value" => { + if field_new_value.is_some() { + return Err(::serde::de::Error::duplicate_field("new_value")); } - field_description = Some(map.next_value()?); + field_new_value = Some(map.next_value()?); + } + "previous_value" => { + if field_previous_value.is_some() { + return Err(::serde::de::Error::duplicate_field("previous_value")); + } + field_previous_value = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -43926,8 +65746,9 @@ impl FileRequestsEmailsEnabledType { if optional && nothing { return Ok(None); } - let result = FileRequestsEmailsEnabledType { - description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + let result = GroupChangeExternalIdDetails { + new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, + previous_value: field_previous_value.ok_or_else(|| ::serde::de::Error::missing_field("previous_value"))?, }; Ok(Some(result)) } @@ -43937,109 +65758,66 @@ impl FileRequestsEmailsEnabledType { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("description", &self.description)?; + s.serialize_field("new_value", &self.new_value)?; + s.serialize_field("previous_value", &self.previous_value)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for FileRequestsEmailsEnabledType { +impl<'de> ::serde::de::Deserialize<'de> for GroupChangeExternalIdDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = FileRequestsEmailsEnabledType; + type Value = GroupChangeExternalIdDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a FileRequestsEmailsEnabledType struct") + f.write_str("a GroupChangeExternalIdDetails struct") } fn visit_map>(self, map: V) -> Result { - FileRequestsEmailsEnabledType::internal_deserialize(map) + GroupChangeExternalIdDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("FileRequestsEmailsEnabledType", FILE_REQUESTS_EMAILS_ENABLED_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("GroupChangeExternalIdDetails", GROUP_CHANGE_EXTERNAL_ID_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for FileRequestsEmailsEnabledType { +impl ::serde::ser::Serialize for GroupChangeExternalIdDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("FileRequestsEmailsEnabledType", 1)?; + let mut s = serializer.serialize_struct("GroupChangeExternalIdDetails", 2)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Enabled file request emails for team. -#[derive(Debug, Clone, PartialEq, Eq, Default)] -#[non_exhaustive] // structs may have more fields added in the future. -pub struct FileRequestsEmailsRestrictedToTeamOnlyDetails { -} - -const FILE_REQUESTS_EMAILS_RESTRICTED_TO_TEAM_ONLY_DETAILS_FIELDS: &[&str] = &[]; -impl FileRequestsEmailsRestrictedToTeamOnlyDetails { - // no _opt deserializer - pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( - mut map: V, - ) -> Result { - // ignore any fields found; none are presently recognized - crate::eat_json_fields(&mut map)?; - Ok(FileRequestsEmailsRestrictedToTeamOnlyDetails {}) - } -} - -impl<'de> ::serde::de::Deserialize<'de> for FileRequestsEmailsRestrictedToTeamOnlyDetails { - fn deserialize>(deserializer: D) -> Result { - // struct deserializer - use serde::de::{MapAccess, Visitor}; - struct StructVisitor; - impl<'de> Visitor<'de> for StructVisitor { - type Value = FileRequestsEmailsRestrictedToTeamOnlyDetails; - fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a FileRequestsEmailsRestrictedToTeamOnlyDetails struct") - } - fn visit_map>(self, map: V) -> Result { - FileRequestsEmailsRestrictedToTeamOnlyDetails::internal_deserialize(map) - } - } - deserializer.deserialize_struct("FileRequestsEmailsRestrictedToTeamOnlyDetails", FILE_REQUESTS_EMAILS_RESTRICTED_TO_TEAM_ONLY_DETAILS_FIELDS, StructVisitor) - } -} - -impl ::serde::ser::Serialize for FileRequestsEmailsRestrictedToTeamOnlyDetails { - fn serialize(&self, serializer: S) -> Result { - // struct serializer - use serde::ser::SerializeStruct; - serializer.serialize_struct("FileRequestsEmailsRestrictedToTeamOnlyDetails", 0)?.end() - } -} - #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct FileRequestsEmailsRestrictedToTeamOnlyType { +pub struct GroupChangeExternalIdType { pub description: String, } -impl FileRequestsEmailsRestrictedToTeamOnlyType { +impl GroupChangeExternalIdType { pub fn new(description: String) -> Self { - FileRequestsEmailsRestrictedToTeamOnlyType { + GroupChangeExternalIdType { description, } } } -const FILE_REQUESTS_EMAILS_RESTRICTED_TO_TEAM_ONLY_TYPE_FIELDS: &[&str] = &["description"]; -impl FileRequestsEmailsRestrictedToTeamOnlyType { +const GROUP_CHANGE_EXTERNAL_ID_TYPE_FIELDS: &[&str] = &["description"]; +impl GroupChangeExternalIdType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -44060,7 +65838,7 @@ impl FileRequestsEmailsRestrictedToTeamOnlyType { if optional && nothing { return Ok(None); } - let result = FileRequestsEmailsRestrictedToTeamOnlyType { + let result = GroupChangeExternalIdType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -44076,127 +65854,91 @@ impl FileRequestsEmailsRestrictedToTeamOnlyType { } } -impl<'de> ::serde::de::Deserialize<'de> for FileRequestsEmailsRestrictedToTeamOnlyType { +impl<'de> ::serde::de::Deserialize<'de> for GroupChangeExternalIdType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = FileRequestsEmailsRestrictedToTeamOnlyType; + type Value = GroupChangeExternalIdType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a FileRequestsEmailsRestrictedToTeamOnlyType struct") + f.write_str("a GroupChangeExternalIdType struct") } fn visit_map>(self, map: V) -> Result { - FileRequestsEmailsRestrictedToTeamOnlyType::internal_deserialize(map) + GroupChangeExternalIdType::internal_deserialize(map) } } - deserializer.deserialize_struct("FileRequestsEmailsRestrictedToTeamOnlyType", FILE_REQUESTS_EMAILS_RESTRICTED_TO_TEAM_ONLY_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("GroupChangeExternalIdType", GROUP_CHANGE_EXTERNAL_ID_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for FileRequestsEmailsRestrictedToTeamOnlyType { +impl ::serde::ser::Serialize for GroupChangeExternalIdType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("FileRequestsEmailsRestrictedToTeamOnlyType", 1)?; + let mut s = serializer.serialize_struct("GroupChangeExternalIdType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// File requests policy +/// Changed group management type. #[derive(Debug, Clone, PartialEq, Eq)] -#[non_exhaustive] // variants may be added in the future -pub enum FileRequestsPolicy { - Disabled, - Enabled, - /// Catch-all used for unrecognized values returned from the server. Encountering this value - /// typically indicates that this SDK version is out of date. - Other, -} - -impl<'de> ::serde::de::Deserialize<'de> for FileRequestsPolicy { - fn deserialize>(deserializer: D) -> Result { - // union deserializer - use serde::de::{self, MapAccess, Visitor}; - struct EnumVisitor; - impl<'de> Visitor<'de> for EnumVisitor { - type Value = FileRequestsPolicy; - fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a FileRequestsPolicy structure") - } - fn visit_map>(self, mut map: V) -> Result { - let tag: &str = match map.next_key()? { - Some(".tag") => map.next_value()?, - _ => return Err(de::Error::missing_field(".tag")) - }; - let value = match tag { - "disabled" => FileRequestsPolicy::Disabled, - "enabled" => FileRequestsPolicy::Enabled, - _ => FileRequestsPolicy::Other, - }; - crate::eat_json_fields(&mut map)?; - Ok(value) - } - } - const VARIANTS: &[&str] = &["disabled", - "enabled", - "other"]; - deserializer.deserialize_struct("FileRequestsPolicy", VARIANTS, EnumVisitor) - } +#[non_exhaustive] // structs may have more fields added in the future. +pub struct GroupChangeManagementTypeDetails { + /// New group management type. + pub new_value: crate::types::team_common::GroupManagementType, + /// Previous group management type. Might be missing due to historical data gap. + pub previous_value: Option, } -impl ::serde::ser::Serialize for FileRequestsPolicy { - fn serialize(&self, serializer: S) -> Result { - // union serializer - use serde::ser::SerializeStruct; - match self { - FileRequestsPolicy::Disabled => { - // unit - let mut s = serializer.serialize_struct("FileRequestsPolicy", 1)?; - s.serialize_field(".tag", "disabled")?; - s.end() - } - FileRequestsPolicy::Enabled => { - // unit - let mut s = serializer.serialize_struct("FileRequestsPolicy", 1)?; - s.serialize_field(".tag", "enabled")?; - s.end() - } - FileRequestsPolicy::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) +impl GroupChangeManagementTypeDetails { + pub fn new(new_value: crate::types::team_common::GroupManagementType) -> Self { + GroupChangeManagementTypeDetails { + new_value, + previous_value: None, } } -} - -/// Resolved file comment. -#[derive(Debug, Clone, PartialEq, Eq, Default)] -#[non_exhaustive] // structs may have more fields added in the future. -pub struct FileResolveCommentDetails { - /// Comment text. - pub comment_text: Option, -} -impl FileResolveCommentDetails { - pub fn with_comment_text(mut self, value: String) -> Self { - self.comment_text = Some(value); + pub fn with_previous_value( + mut self, + value: crate::types::team_common::GroupManagementType, + ) -> Self { + self.previous_value = Some(value); self } } -const FILE_RESOLVE_COMMENT_DETAILS_FIELDS: &[&str] = &["comment_text"]; -impl FileResolveCommentDetails { - // no _opt deserializer +const GROUP_CHANGE_MANAGEMENT_TYPE_DETAILS_FIELDS: &[&str] = &["new_value", + "previous_value"]; +impl GroupChangeManagementTypeDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - ) -> Result { - let mut field_comment_text = None; + optional: bool, + ) -> Result, V::Error> { + let mut field_new_value = None; + let mut field_previous_value = None; + let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { + nothing = false; match key { - "comment_text" => { - if field_comment_text.is_some() { - return Err(::serde::de::Error::duplicate_field("comment_text")); + "new_value" => { + if field_new_value.is_some() { + return Err(::serde::de::Error::duplicate_field("new_value")); } - field_comment_text = Some(map.next_value()?); + field_new_value = Some(map.next_value()?); + } + "previous_value" => { + if field_previous_value.is_some() { + return Err(::serde::de::Error::duplicate_field("previous_value")); + } + field_previous_value = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -44204,10 +65946,14 @@ impl FileResolveCommentDetails { } } } - let result = FileResolveCommentDetails { - comment_text: field_comment_text.and_then(Option::flatten), + if optional && nothing { + return Ok(None); + } + let result = GroupChangeManagementTypeDetails { + new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, + previous_value: field_previous_value.and_then(Option::flatten), }; - Ok(result) + Ok(Some(result)) } pub(crate) fn internal_serialize( @@ -44215,36 +65961,37 @@ impl FileResolveCommentDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - if let Some(val) = &self.comment_text { - s.serialize_field("comment_text", val)?; + s.serialize_field("new_value", &self.new_value)?; + if let Some(val) = &self.previous_value { + s.serialize_field("previous_value", val)?; } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for FileResolveCommentDetails { +impl<'de> ::serde::de::Deserialize<'de> for GroupChangeManagementTypeDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = FileResolveCommentDetails; + type Value = GroupChangeManagementTypeDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a FileResolveCommentDetails struct") + f.write_str("a GroupChangeManagementTypeDetails struct") } fn visit_map>(self, map: V) -> Result { - FileResolveCommentDetails::internal_deserialize(map) + GroupChangeManagementTypeDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("FileResolveCommentDetails", FILE_RESOLVE_COMMENT_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("GroupChangeManagementTypeDetails", GROUP_CHANGE_MANAGEMENT_TYPE_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for FileResolveCommentDetails { +impl ::serde::ser::Serialize for GroupChangeManagementTypeDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("FileResolveCommentDetails", 1)?; + let mut s = serializer.serialize_struct("GroupChangeManagementTypeDetails", 2)?; self.internal_serialize::(&mut s)?; s.end() } @@ -44252,30 +65999,30 @@ impl ::serde::ser::Serialize for FileResolveCommentDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct FileResolveCommentType { +pub struct GroupChangeManagementTypeType { pub description: String, } -impl FileResolveCommentType { +impl GroupChangeManagementTypeType { pub fn new(description: String) -> Self { - FileResolveCommentType { + GroupChangeManagementTypeType { description, } } } -const FILE_RESOLVE_COMMENT_TYPE_FIELDS: &[&str] = &["description"]; -impl FileResolveCommentType { +const GROUP_CHANGE_MANAGEMENT_TYPE_TYPE_FIELDS: &[&str] = &["description"]; +impl GroupChangeManagementTypeType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -44296,7 +66043,7 @@ impl FileResolveCommentType { if optional && nothing { return Ok(None); } - let result = FileResolveCommentType { + let result = GroupChangeManagementTypeType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -44312,104 +66059,152 @@ impl FileResolveCommentType { } } -impl<'de> ::serde::de::Deserialize<'de> for FileResolveCommentType { +impl<'de> ::serde::de::Deserialize<'de> for GroupChangeManagementTypeType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = FileResolveCommentType; + type Value = GroupChangeManagementTypeType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a FileResolveCommentType struct") + f.write_str("a GroupChangeManagementTypeType struct") } fn visit_map>(self, map: V) -> Result { - FileResolveCommentType::internal_deserialize(map) + GroupChangeManagementTypeType::internal_deserialize(map) } } - deserializer.deserialize_struct("FileResolveCommentType", FILE_RESOLVE_COMMENT_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("GroupChangeManagementTypeType", GROUP_CHANGE_MANAGEMENT_TYPE_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for FileResolveCommentType { +impl ::serde::ser::Serialize for GroupChangeManagementTypeType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("FileResolveCommentType", 1)?; + let mut s = serializer.serialize_struct("GroupChangeManagementTypeType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Restored deleted files and/or folders. -#[derive(Debug, Clone, PartialEq, Eq, Default)] +/// Changed manager permissions of group member. +#[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct FileRestoreDetails { +pub struct GroupChangeMemberRoleDetails { + /// Is group owner. + pub is_group_owner: bool, } -const FILE_RESTORE_DETAILS_FIELDS: &[&str] = &[]; -impl FileRestoreDetails { - // no _opt deserializer +impl GroupChangeMemberRoleDetails { + pub fn new(is_group_owner: bool) -> Self { + GroupChangeMemberRoleDetails { + is_group_owner, + } + } +} + +const GROUP_CHANGE_MEMBER_ROLE_DETAILS_FIELDS: &[&str] = &["is_group_owner"]; +impl GroupChangeMemberRoleDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - ) -> Result { - // ignore any fields found; none are presently recognized - crate::eat_json_fields(&mut map)?; - Ok(FileRestoreDetails {}) + optional: bool, + ) -> Result, V::Error> { + let mut field_is_group_owner = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "is_group_owner" => { + if field_is_group_owner.is_some() { + return Err(::serde::de::Error::duplicate_field("is_group_owner")); + } + field_is_group_owner = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } + } + } + if optional && nothing { + return Ok(None); + } + let result = GroupChangeMemberRoleDetails { + is_group_owner: field_is_group_owner.ok_or_else(|| ::serde::de::Error::missing_field("is_group_owner"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("is_group_owner", &self.is_group_owner)?; + Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for FileRestoreDetails { +impl<'de> ::serde::de::Deserialize<'de> for GroupChangeMemberRoleDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = FileRestoreDetails; + type Value = GroupChangeMemberRoleDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a FileRestoreDetails struct") + f.write_str("a GroupChangeMemberRoleDetails struct") } fn visit_map>(self, map: V) -> Result { - FileRestoreDetails::internal_deserialize(map) + GroupChangeMemberRoleDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("FileRestoreDetails", FILE_RESTORE_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("GroupChangeMemberRoleDetails", GROUP_CHANGE_MEMBER_ROLE_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for FileRestoreDetails { +impl ::serde::ser::Serialize for GroupChangeMemberRoleDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - serializer.serialize_struct("FileRestoreDetails", 0)?.end() + let mut s = serializer.serialize_struct("GroupChangeMemberRoleDetails", 1)?; + self.internal_serialize::(&mut s)?; + s.end() } } #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct FileRestoreType { +pub struct GroupChangeMemberRoleType { pub description: String, } -impl FileRestoreType { +impl GroupChangeMemberRoleType { pub fn new(description: String) -> Self { - FileRestoreType { + GroupChangeMemberRoleType { description, } } } -const FILE_RESTORE_TYPE_FIELDS: &[&str] = &["description"]; -impl FileRestoreType { +const GROUP_CHANGE_MEMBER_ROLE_TYPE_FIELDS: &[&str] = &["description"]; +impl GroupChangeMemberRoleType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -44430,7 +66225,7 @@ impl FileRestoreType { if optional && nothing { return Ok(None); } - let result = FileRestoreType { + let result = GroupChangeMemberRoleType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -44446,114 +66241,78 @@ impl FileRestoreType { } } -impl<'de> ::serde::de::Deserialize<'de> for FileRestoreType { +impl<'de> ::serde::de::Deserialize<'de> for GroupChangeMemberRoleType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = FileRestoreType; + type Value = GroupChangeMemberRoleType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a FileRestoreType struct") + f.write_str("a GroupChangeMemberRoleType struct") } fn visit_map>(self, map: V) -> Result { - FileRestoreType::internal_deserialize(map) + GroupChangeMemberRoleType::internal_deserialize(map) } } - deserializer.deserialize_struct("FileRestoreType", FILE_RESTORE_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("GroupChangeMemberRoleType", GROUP_CHANGE_MEMBER_ROLE_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for FileRestoreType { +impl ::serde::ser::Serialize for GroupChangeMemberRoleType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("FileRestoreType", 1)?; + let mut s = serializer.serialize_struct("GroupChangeMemberRoleType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Reverted files to previous version. +/// Created group. #[derive(Debug, Clone, PartialEq, Eq, Default)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct FileRevertDetails { -} - -const FILE_REVERT_DETAILS_FIELDS: &[&str] = &[]; -impl FileRevertDetails { - // no _opt deserializer - pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( - mut map: V, - ) -> Result { - // ignore any fields found; none are presently recognized - crate::eat_json_fields(&mut map)?; - Ok(FileRevertDetails {}) - } -} - -impl<'de> ::serde::de::Deserialize<'de> for FileRevertDetails { - fn deserialize>(deserializer: D) -> Result { - // struct deserializer - use serde::de::{MapAccess, Visitor}; - struct StructVisitor; - impl<'de> Visitor<'de> for StructVisitor { - type Value = FileRevertDetails; - fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a FileRevertDetails struct") - } - fn visit_map>(self, map: V) -> Result { - FileRevertDetails::internal_deserialize(map) - } - } - deserializer.deserialize_struct("FileRevertDetails", FILE_REVERT_DETAILS_FIELDS, StructVisitor) - } +pub struct GroupCreateDetails { + /// Is company managed group. + pub is_company_managed: Option, + /// Group join policy. + pub join_policy: Option, } -impl ::serde::ser::Serialize for FileRevertDetails { - fn serialize(&self, serializer: S) -> Result { - // struct serializer - use serde::ser::SerializeStruct; - serializer.serialize_struct("FileRevertDetails", 0)?.end() +impl GroupCreateDetails { + pub fn with_is_company_managed(mut self, value: bool) -> Self { + self.is_company_managed = Some(value); + self } -} - -#[derive(Debug, Clone, PartialEq, Eq)] -#[non_exhaustive] // structs may have more fields added in the future. -pub struct FileRevertType { - pub description: String, -} -impl FileRevertType { - pub fn new(description: String) -> Self { - FileRevertType { - description, - } + pub fn with_join_policy(mut self, value: GroupJoinPolicy) -> Self { + self.join_policy = Some(value); + self } } -const FILE_REVERT_TYPE_FIELDS: &[&str] = &["description"]; -impl FileRevertType { +const GROUP_CREATE_DETAILS_FIELDS: &[&str] = &["is_company_managed", + "join_policy"]; +impl GroupCreateDetails { + // no _opt deserializer pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( - map: V, - ) -> Result { - Self::internal_deserialize_opt(map, false).map(Option::unwrap) - } - - pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - optional: bool, - ) -> Result, V::Error> { - let mut field_description = None; - let mut nothing = true; + ) -> Result { + let mut field_is_company_managed = None; + let mut field_join_policy = None; while let Some(key) = map.next_key::<&str>()? { - nothing = false; match key { - "description" => { - if field_description.is_some() { - return Err(::serde::de::Error::duplicate_field("description")); + "is_company_managed" => { + if field_is_company_managed.is_some() { + return Err(::serde::de::Error::duplicate_field("is_company_managed")); } - field_description = Some(map.next_value()?); + field_is_company_managed = Some(map.next_value()?); + } + "join_policy" => { + if field_join_policy.is_some() { + return Err(::serde::de::Error::duplicate_field("join_policy")); + } + field_join_policy = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -44561,13 +66320,11 @@ impl FileRevertType { } } } - if optional && nothing { - return Ok(None); - } - let result = FileRevertType { - description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + let result = GroupCreateDetails { + is_company_managed: field_is_company_managed.and_then(Option::flatten), + join_policy: field_join_policy.and_then(Option::flatten), }; - Ok(Some(result)) + Ok(result) } pub(crate) fn internal_serialize( @@ -44575,109 +66332,70 @@ impl FileRevertType { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("description", &self.description)?; + if let Some(val) = &self.is_company_managed { + s.serialize_field("is_company_managed", val)?; + } + if let Some(val) = &self.join_policy { + s.serialize_field("join_policy", val)?; + } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for FileRevertType { +impl<'de> ::serde::de::Deserialize<'de> for GroupCreateDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = FileRevertType; + type Value = GroupCreateDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a FileRevertType struct") + f.write_str("a GroupCreateDetails struct") } fn visit_map>(self, map: V) -> Result { - FileRevertType::internal_deserialize(map) + GroupCreateDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("FileRevertType", FILE_REVERT_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("GroupCreateDetails", GROUP_CREATE_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for FileRevertType { +impl ::serde::ser::Serialize for GroupCreateDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("FileRevertType", 1)?; + let mut s = serializer.serialize_struct("GroupCreateDetails", 2)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Rolled back file actions. -#[derive(Debug, Clone, PartialEq, Eq, Default)] -#[non_exhaustive] // structs may have more fields added in the future. -pub struct FileRollbackChangesDetails { -} - -const FILE_ROLLBACK_CHANGES_DETAILS_FIELDS: &[&str] = &[]; -impl FileRollbackChangesDetails { - // no _opt deserializer - pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( - mut map: V, - ) -> Result { - // ignore any fields found; none are presently recognized - crate::eat_json_fields(&mut map)?; - Ok(FileRollbackChangesDetails {}) - } -} - -impl<'de> ::serde::de::Deserialize<'de> for FileRollbackChangesDetails { - fn deserialize>(deserializer: D) -> Result { - // struct deserializer - use serde::de::{MapAccess, Visitor}; - struct StructVisitor; - impl<'de> Visitor<'de> for StructVisitor { - type Value = FileRollbackChangesDetails; - fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a FileRollbackChangesDetails struct") - } - fn visit_map>(self, map: V) -> Result { - FileRollbackChangesDetails::internal_deserialize(map) - } - } - deserializer.deserialize_struct("FileRollbackChangesDetails", FILE_ROLLBACK_CHANGES_DETAILS_FIELDS, StructVisitor) - } -} - -impl ::serde::ser::Serialize for FileRollbackChangesDetails { - fn serialize(&self, serializer: S) -> Result { - // struct serializer - use serde::ser::SerializeStruct; - serializer.serialize_struct("FileRollbackChangesDetails", 0)?.end() - } -} - #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct FileRollbackChangesType { +pub struct GroupCreateType { pub description: String, } -impl FileRollbackChangesType { +impl GroupCreateType { pub fn new(description: String) -> Self { - FileRollbackChangesType { + GroupCreateType { description, } } } -const FILE_ROLLBACK_CHANGES_TYPE_FIELDS: &[&str] = &["description"]; -impl FileRollbackChangesType { +const GROUP_CREATE_TYPE_FIELDS: &[&str] = &["description"]; +impl GroupCreateType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -44698,7 +66416,7 @@ impl FileRollbackChangesType { if optional && nothing { return Ok(None); } - let result = FileRollbackChangesType { + let result = GroupCreateType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -44714,72 +66432,63 @@ impl FileRollbackChangesType { } } -impl<'de> ::serde::de::Deserialize<'de> for FileRollbackChangesType { +impl<'de> ::serde::de::Deserialize<'de> for GroupCreateType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = FileRollbackChangesType; + type Value = GroupCreateType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a FileRollbackChangesType struct") + f.write_str("a GroupCreateType struct") } fn visit_map>(self, map: V) -> Result { - FileRollbackChangesType::internal_deserialize(map) + GroupCreateType::internal_deserialize(map) } } - deserializer.deserialize_struct("FileRollbackChangesType", FILE_ROLLBACK_CHANGES_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("GroupCreateType", GROUP_CREATE_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for FileRollbackChangesType { +impl ::serde::ser::Serialize for GroupCreateType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("FileRollbackChangesType", 1)?; + let mut s = serializer.serialize_struct("GroupCreateType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Saved file/folder using copy reference. -#[derive(Debug, Clone, PartialEq, Eq)] +/// Deleted group. +#[derive(Debug, Clone, PartialEq, Eq, Default)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct FileSaveCopyReferenceDetails { - /// Relocate action details. - pub relocate_action_details: Vec, +pub struct GroupDeleteDetails { + /// Is company managed group. + pub is_company_managed: Option, } -impl FileSaveCopyReferenceDetails { - pub fn new(relocate_action_details: Vec) -> Self { - FileSaveCopyReferenceDetails { - relocate_action_details, - } +impl GroupDeleteDetails { + pub fn with_is_company_managed(mut self, value: bool) -> Self { + self.is_company_managed = Some(value); + self } } -const FILE_SAVE_COPY_REFERENCE_DETAILS_FIELDS: &[&str] = &["relocate_action_details"]; -impl FileSaveCopyReferenceDetails { +const GROUP_DELETE_DETAILS_FIELDS: &[&str] = &["is_company_managed"]; +impl GroupDeleteDetails { + // no _opt deserializer pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( - map: V, - ) -> Result { - Self::internal_deserialize_opt(map, false).map(Option::unwrap) - } - - pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - optional: bool, - ) -> Result, V::Error> { - let mut field_relocate_action_details = None; - let mut nothing = true; + ) -> Result { + let mut field_is_company_managed = None; while let Some(key) = map.next_key::<&str>()? { - nothing = false; match key { - "relocate_action_details" => { - if field_relocate_action_details.is_some() { - return Err(::serde::de::Error::duplicate_field("relocate_action_details")); + "is_company_managed" => { + if field_is_company_managed.is_some() { + return Err(::serde::de::Error::duplicate_field("is_company_managed")); } - field_relocate_action_details = Some(map.next_value()?); + field_is_company_managed = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -44787,13 +66496,10 @@ impl FileSaveCopyReferenceDetails { } } } - if optional && nothing { - return Ok(None); - } - let result = FileSaveCopyReferenceDetails { - relocate_action_details: field_relocate_action_details.ok_or_else(|| ::serde::de::Error::missing_field("relocate_action_details"))?, + let result = GroupDeleteDetails { + is_company_managed: field_is_company_managed.and_then(Option::flatten), }; - Ok(Some(result)) + Ok(result) } pub(crate) fn internal_serialize( @@ -44801,34 +66507,36 @@ impl FileSaveCopyReferenceDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("relocate_action_details", &self.relocate_action_details)?; + if let Some(val) = &self.is_company_managed { + s.serialize_field("is_company_managed", val)?; + } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for FileSaveCopyReferenceDetails { +impl<'de> ::serde::de::Deserialize<'de> for GroupDeleteDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = FileSaveCopyReferenceDetails; + type Value = GroupDeleteDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a FileSaveCopyReferenceDetails struct") + f.write_str("a GroupDeleteDetails struct") } fn visit_map>(self, map: V) -> Result { - FileSaveCopyReferenceDetails::internal_deserialize(map) + GroupDeleteDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("FileSaveCopyReferenceDetails", FILE_SAVE_COPY_REFERENCE_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("GroupDeleteDetails", GROUP_DELETE_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for FileSaveCopyReferenceDetails { +impl ::serde::ser::Serialize for GroupDeleteDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("FileSaveCopyReferenceDetails", 1)?; + let mut s = serializer.serialize_struct("GroupDeleteDetails", 1)?; self.internal_serialize::(&mut s)?; s.end() } @@ -44836,30 +66544,30 @@ impl ::serde::ser::Serialize for FileSaveCopyReferenceDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct FileSaveCopyReferenceType { +pub struct GroupDeleteType { pub description: String, } -impl FileSaveCopyReferenceType { +impl GroupDeleteType { pub fn new(description: String) -> Self { - FileSaveCopyReferenceType { + GroupDeleteType { description, } } } -const FILE_SAVE_COPY_REFERENCE_TYPE_FIELDS: &[&str] = &["description"]; -impl FileSaveCopyReferenceType { +const GROUP_DELETE_TYPE_FIELDS: &[&str] = &["description"]; +impl GroupDeleteType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -44880,7 +66588,7 @@ impl FileSaveCopyReferenceType { if optional && nothing { return Ok(None); } - let result = FileSaveCopyReferenceType { + let result = GroupDeleteType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -44896,152 +66604,104 @@ impl FileSaveCopyReferenceType { } } -impl<'de> ::serde::de::Deserialize<'de> for FileSaveCopyReferenceType { +impl<'de> ::serde::de::Deserialize<'de> for GroupDeleteType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = FileSaveCopyReferenceType; + type Value = GroupDeleteType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a FileSaveCopyReferenceType struct") + f.write_str("a GroupDeleteType struct") } fn visit_map>(self, map: V) -> Result { - FileSaveCopyReferenceType::internal_deserialize(map) + GroupDeleteType::internal_deserialize(map) } } - deserializer.deserialize_struct("FileSaveCopyReferenceType", FILE_SAVE_COPY_REFERENCE_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("GroupDeleteType", GROUP_DELETE_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for FileSaveCopyReferenceType { +impl ::serde::ser::Serialize for GroupDeleteType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("FileSaveCopyReferenceType", 1)?; + let mut s = serializer.serialize_struct("GroupDeleteType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Transfer files added. -#[derive(Debug, Clone, PartialEq, Eq)] +/// Updated group. +#[derive(Debug, Clone, PartialEq, Eq, Default)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct FileTransfersFileAddDetails { - /// Transfer id. - pub file_transfer_id: String, -} - -impl FileTransfersFileAddDetails { - pub fn new(file_transfer_id: String) -> Self { - FileTransfersFileAddDetails { - file_transfer_id, - } - } +pub struct GroupDescriptionUpdatedDetails { } -const FILE_TRANSFERS_FILE_ADD_DETAILS_FIELDS: &[&str] = &["file_transfer_id"]; -impl FileTransfersFileAddDetails { +const GROUP_DESCRIPTION_UPDATED_DETAILS_FIELDS: &[&str] = &[]; +impl GroupDescriptionUpdatedDetails { + // no _opt deserializer pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( - map: V, - ) -> Result { - Self::internal_deserialize_opt(map, false).map(Option::unwrap) - } - - pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - optional: bool, - ) -> Result, V::Error> { - let mut field_file_transfer_id = None; - let mut nothing = true; - while let Some(key) = map.next_key::<&str>()? { - nothing = false; - match key { - "file_transfer_id" => { - if field_file_transfer_id.is_some() { - return Err(::serde::de::Error::duplicate_field("file_transfer_id")); - } - field_file_transfer_id = Some(map.next_value()?); - } - _ => { - // unknown field allowed and ignored - map.next_value::<::serde_json::Value>()?; - } - } - } - if optional && nothing { - return Ok(None); - } - let result = FileTransfersFileAddDetails { - file_transfer_id: field_file_transfer_id.ok_or_else(|| ::serde::de::Error::missing_field("file_transfer_id"))?, - }; - Ok(Some(result)) - } - - pub(crate) fn internal_serialize( - &self, - s: &mut S::SerializeStruct, - ) -> Result<(), S::Error> { - use serde::ser::SerializeStruct; - s.serialize_field("file_transfer_id", &self.file_transfer_id)?; - Ok(()) + ) -> Result { + // ignore any fields found; none are presently recognized + crate::eat_json_fields(&mut map)?; + Ok(GroupDescriptionUpdatedDetails {}) } } -impl<'de> ::serde::de::Deserialize<'de> for FileTransfersFileAddDetails { +impl<'de> ::serde::de::Deserialize<'de> for GroupDescriptionUpdatedDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = FileTransfersFileAddDetails; + type Value = GroupDescriptionUpdatedDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a FileTransfersFileAddDetails struct") + f.write_str("a GroupDescriptionUpdatedDetails struct") } fn visit_map>(self, map: V) -> Result { - FileTransfersFileAddDetails::internal_deserialize(map) + GroupDescriptionUpdatedDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("FileTransfersFileAddDetails", FILE_TRANSFERS_FILE_ADD_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("GroupDescriptionUpdatedDetails", GROUP_DESCRIPTION_UPDATED_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for FileTransfersFileAddDetails { +impl ::serde::ser::Serialize for GroupDescriptionUpdatedDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("FileTransfersFileAddDetails", 1)?; - self.internal_serialize::(&mut s)?; - s.end() + serializer.serialize_struct("GroupDescriptionUpdatedDetails", 0)?.end() } } #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct FileTransfersFileAddType { +pub struct GroupDescriptionUpdatedType { pub description: String, } -impl FileTransfersFileAddType { +impl GroupDescriptionUpdatedType { pub fn new(description: String) -> Self { - FileTransfersFileAddType { + GroupDescriptionUpdatedType { description, } } } -const FILE_TRANSFERS_FILE_ADD_TYPE_FIELDS: &[&str] = &["description"]; -impl FileTransfersFileAddType { +const GROUP_DESCRIPTION_UPDATED_TYPE_FIELDS: &[&str] = &["description"]; +impl GroupDescriptionUpdatedType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -45062,7 +66722,7 @@ impl FileTransfersFileAddType { if optional && nothing { return Ok(None); } - let result = FileTransfersFileAddType { + let result = GroupDescriptionUpdatedType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -45078,130 +66738,66 @@ impl FileTransfersFileAddType { } } -impl<'de> ::serde::de::Deserialize<'de> for FileTransfersFileAddType { +impl<'de> ::serde::de::Deserialize<'de> for GroupDescriptionUpdatedType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = FileTransfersFileAddType; + type Value = GroupDescriptionUpdatedType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a FileTransfersFileAddType struct") + f.write_str("a GroupDescriptionUpdatedType struct") } fn visit_map>(self, map: V) -> Result { - FileTransfersFileAddType::internal_deserialize(map) + GroupDescriptionUpdatedType::internal_deserialize(map) } } - deserializer.deserialize_struct("FileTransfersFileAddType", FILE_TRANSFERS_FILE_ADD_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("GroupDescriptionUpdatedType", GROUP_DESCRIPTION_UPDATED_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for FileTransfersFileAddType { +impl ::serde::ser::Serialize for GroupDescriptionUpdatedType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("FileTransfersFileAddType", 1)?; + let mut s = serializer.serialize_struct("GroupDescriptionUpdatedType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// File transfers policy -#[derive(Debug, Clone, PartialEq, Eq)] -#[non_exhaustive] // variants may be added in the future -pub enum FileTransfersPolicy { - Disabled, - Enabled, - /// Catch-all used for unrecognized values returned from the server. Encountering this value - /// typically indicates that this SDK version is out of date. - Other, -} - -impl<'de> ::serde::de::Deserialize<'de> for FileTransfersPolicy { - fn deserialize>(deserializer: D) -> Result { - // union deserializer - use serde::de::{self, MapAccess, Visitor}; - struct EnumVisitor; - impl<'de> Visitor<'de> for EnumVisitor { - type Value = FileTransfersPolicy; - fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a FileTransfersPolicy structure") - } - fn visit_map>(self, mut map: V) -> Result { - let tag: &str = match map.next_key()? { - Some(".tag") => map.next_value()?, - _ => return Err(de::Error::missing_field(".tag")) - }; - let value = match tag { - "disabled" => FileTransfersPolicy::Disabled, - "enabled" => FileTransfersPolicy::Enabled, - _ => FileTransfersPolicy::Other, - }; - crate::eat_json_fields(&mut map)?; - Ok(value) - } - } - const VARIANTS: &[&str] = &["disabled", - "enabled", - "other"]; - deserializer.deserialize_struct("FileTransfersPolicy", VARIANTS, EnumVisitor) - } -} - -impl ::serde::ser::Serialize for FileTransfersPolicy { - fn serialize(&self, serializer: S) -> Result { - // union serializer - use serde::ser::SerializeStruct; - match self { - FileTransfersPolicy::Disabled => { - // unit - let mut s = serializer.serialize_struct("FileTransfersPolicy", 1)?; - s.serialize_field(".tag", "disabled")?; - s.end() - } - FileTransfersPolicy::Enabled => { - // unit - let mut s = serializer.serialize_struct("FileTransfersPolicy", 1)?; - s.serialize_field(".tag", "enabled")?; - s.end() - } - FileTransfersPolicy::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) - } - } -} - -/// Changed file transfers policy for team. +/// Changed group's external sharing setting. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct FileTransfersPolicyChangedDetails { - /// New file transfers policy. - pub new_value: FileTransfersPolicy, - /// Previous file transfers policy. - pub previous_value: FileTransfersPolicy, +pub struct GroupExternalSharingSettingOverrideChangedDetails { + /// New external sharing setting. + pub new_value: ExternalSharingSetting, + /// Previous external sharing setting. + pub previous_value: ExternalSharingSetting, } -impl FileTransfersPolicyChangedDetails { - pub fn new(new_value: FileTransfersPolicy, previous_value: FileTransfersPolicy) -> Self { - FileTransfersPolicyChangedDetails { +impl GroupExternalSharingSettingOverrideChangedDetails { + pub fn new(new_value: ExternalSharingSetting, previous_value: ExternalSharingSetting) -> Self { + GroupExternalSharingSettingOverrideChangedDetails { new_value, previous_value, } } } -const FILE_TRANSFERS_POLICY_CHANGED_DETAILS_FIELDS: &[&str] = &["new_value", - "previous_value"]; -impl FileTransfersPolicyChangedDetails { +const GROUP_EXTERNAL_SHARING_SETTING_OVERRIDE_CHANGED_DETAILS_FIELDS: &[&str] = &["new_value", + "previous_value"]; +impl GroupExternalSharingSettingOverrideChangedDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_new_value = None; let mut field_previous_value = None; let mut nothing = true; @@ -45229,7 +66825,7 @@ impl FileTransfersPolicyChangedDetails { if optional && nothing { return Ok(None); } - let result = FileTransfersPolicyChangedDetails { + let result = GroupExternalSharingSettingOverrideChangedDetails { new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, previous_value: field_previous_value.ok_or_else(|| ::serde::de::Error::missing_field("previous_value"))?, }; @@ -45247,29 +66843,29 @@ impl FileTransfersPolicyChangedDetails { } } -impl<'de> ::serde::de::Deserialize<'de> for FileTransfersPolicyChangedDetails { +impl<'de> ::serde::de::Deserialize<'de> for GroupExternalSharingSettingOverrideChangedDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = FileTransfersPolicyChangedDetails; + type Value = GroupExternalSharingSettingOverrideChangedDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a FileTransfersPolicyChangedDetails struct") + f.write_str("a GroupExternalSharingSettingOverrideChangedDetails struct") } fn visit_map>(self, map: V) -> Result { - FileTransfersPolicyChangedDetails::internal_deserialize(map) + GroupExternalSharingSettingOverrideChangedDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("FileTransfersPolicyChangedDetails", FILE_TRANSFERS_POLICY_CHANGED_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("GroupExternalSharingSettingOverrideChangedDetails", GROUP_EXTERNAL_SHARING_SETTING_OVERRIDE_CHANGED_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for FileTransfersPolicyChangedDetails { +impl ::serde::ser::Serialize for GroupExternalSharingSettingOverrideChangedDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("FileTransfersPolicyChangedDetails", 2)?; + let mut s = serializer.serialize_struct("GroupExternalSharingSettingOverrideChangedDetails", 2)?; self.internal_serialize::(&mut s)?; s.end() } @@ -45277,30 +66873,30 @@ impl ::serde::ser::Serialize for FileTransfersPolicyChangedDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct FileTransfersPolicyChangedType { +pub struct GroupExternalSharingSettingOverrideChangedType { pub description: String, } -impl FileTransfersPolicyChangedType { +impl GroupExternalSharingSettingOverrideChangedType { pub fn new(description: String) -> Self { - FileTransfersPolicyChangedType { + GroupExternalSharingSettingOverrideChangedType { description, } } } -const FILE_TRANSFERS_POLICY_CHANGED_TYPE_FIELDS: &[&str] = &["description"]; -impl FileTransfersPolicyChangedType { +const GROUP_EXTERNAL_SHARING_SETTING_OVERRIDE_CHANGED_TYPE_FIELDS: &[&str] = &["description"]; +impl GroupExternalSharingSettingOverrideChangedType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -45321,7 +66917,7 @@ impl FileTransfersPolicyChangedType { if optional && nothing { return Ok(None); } - let result = FileTransfersPolicyChangedType { + let result = GroupExternalSharingSettingOverrideChangedType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -45337,72 +66933,141 @@ impl FileTransfersPolicyChangedType { } } -impl<'de> ::serde::de::Deserialize<'de> for FileTransfersPolicyChangedType { +impl<'de> ::serde::de::Deserialize<'de> for GroupExternalSharingSettingOverrideChangedType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = FileTransfersPolicyChangedType; + type Value = GroupExternalSharingSettingOverrideChangedType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a FileTransfersPolicyChangedType struct") + f.write_str("a GroupExternalSharingSettingOverrideChangedType struct") } fn visit_map>(self, map: V) -> Result { - FileTransfersPolicyChangedType::internal_deserialize(map) + GroupExternalSharingSettingOverrideChangedType::internal_deserialize(map) } } - deserializer.deserialize_struct("FileTransfersPolicyChangedType", FILE_TRANSFERS_POLICY_CHANGED_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("GroupExternalSharingSettingOverrideChangedType", GROUP_EXTERNAL_SHARING_SETTING_OVERRIDE_CHANGED_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for FileTransfersPolicyChangedType { +impl ::serde::ser::Serialize for GroupExternalSharingSettingOverrideChangedType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("FileTransfersPolicyChangedType", 1)?; + let mut s = serializer.serialize_struct("GroupExternalSharingSettingOverrideChangedType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Deleted transfer. #[derive(Debug, Clone, PartialEq, Eq)] -#[non_exhaustive] // structs may have more fields added in the future. -pub struct FileTransfersTransferDeleteDetails { - /// Transfer id. - pub file_transfer_id: String, +#[non_exhaustive] // variants may be added in the future +pub enum GroupJoinPolicy { + Open, + RequestToJoin, + /// Catch-all used for unrecognized values returned from the server. Encountering this value + /// typically indicates that this SDK version is out of date. + Other, } -impl FileTransfersTransferDeleteDetails { - pub fn new(file_transfer_id: String) -> Self { - FileTransfersTransferDeleteDetails { - file_transfer_id, +impl<'de> ::serde::de::Deserialize<'de> for GroupJoinPolicy { + fn deserialize>(deserializer: D) -> Result { + // union deserializer + use serde::de::{self, MapAccess, Visitor}; + struct EnumVisitor; + impl<'de> Visitor<'de> for EnumVisitor { + type Value = GroupJoinPolicy; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a GroupJoinPolicy structure") + } + fn visit_map>(self, mut map: V) -> Result { + let tag: &str = match map.next_key()? { + Some(".tag") => map.next_value()?, + _ => return Err(de::Error::missing_field(".tag")) + }; + let value = match tag { + "open" => GroupJoinPolicy::Open, + "request_to_join" => GroupJoinPolicy::RequestToJoin, + _ => GroupJoinPolicy::Other, + }; + crate::eat_json_fields(&mut map)?; + Ok(value) + } + } + const VARIANTS: &[&str] = &["open", + "request_to_join", + "other"]; + deserializer.deserialize_struct("GroupJoinPolicy", VARIANTS, EnumVisitor) + } +} + +impl ::serde::ser::Serialize for GroupJoinPolicy { + fn serialize(&self, serializer: S) -> Result { + // union serializer + use serde::ser::SerializeStruct; + match self { + GroupJoinPolicy::Open => { + // unit + let mut s = serializer.serialize_struct("GroupJoinPolicy", 1)?; + s.serialize_field(".tag", "open")?; + s.end() + } + GroupJoinPolicy::RequestToJoin => { + // unit + let mut s = serializer.serialize_struct("GroupJoinPolicy", 1)?; + s.serialize_field(".tag", "request_to_join")?; + s.end() + } + GroupJoinPolicy::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) } } -} +} + +/// Updated group join policy. +#[derive(Debug, Clone, PartialEq, Eq, Default)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct GroupJoinPolicyUpdatedDetails { + /// Is company managed group. + pub is_company_managed: Option, + /// Group join policy. + pub join_policy: Option, +} + +impl GroupJoinPolicyUpdatedDetails { + pub fn with_is_company_managed(mut self, value: bool) -> Self { + self.is_company_managed = Some(value); + self + } -const FILE_TRANSFERS_TRANSFER_DELETE_DETAILS_FIELDS: &[&str] = &["file_transfer_id"]; -impl FileTransfersTransferDeleteDetails { - pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( - map: V, - ) -> Result { - Self::internal_deserialize_opt(map, false).map(Option::unwrap) + pub fn with_join_policy(mut self, value: GroupJoinPolicy) -> Self { + self.join_policy = Some(value); + self } +} - pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( +const GROUP_JOIN_POLICY_UPDATED_DETAILS_FIELDS: &[&str] = &["is_company_managed", + "join_policy"]; +impl GroupJoinPolicyUpdatedDetails { + // no _opt deserializer + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - optional: bool, - ) -> Result, V::Error> { - let mut field_file_transfer_id = None; - let mut nothing = true; + ) -> Result { + let mut field_is_company_managed = None; + let mut field_join_policy = None; while let Some(key) = map.next_key::<&str>()? { - nothing = false; match key { - "file_transfer_id" => { - if field_file_transfer_id.is_some() { - return Err(::serde::de::Error::duplicate_field("file_transfer_id")); + "is_company_managed" => { + if field_is_company_managed.is_some() { + return Err(::serde::de::Error::duplicate_field("is_company_managed")); } - field_file_transfer_id = Some(map.next_value()?); + field_is_company_managed = Some(map.next_value()?); + } + "join_policy" => { + if field_join_policy.is_some() { + return Err(::serde::de::Error::duplicate_field("join_policy")); + } + field_join_policy = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -45410,13 +67075,11 @@ impl FileTransfersTransferDeleteDetails { } } } - if optional && nothing { - return Ok(None); - } - let result = FileTransfersTransferDeleteDetails { - file_transfer_id: field_file_transfer_id.ok_or_else(|| ::serde::de::Error::missing_field("file_transfer_id"))?, + let result = GroupJoinPolicyUpdatedDetails { + is_company_managed: field_is_company_managed.and_then(Option::flatten), + join_policy: field_join_policy.and_then(Option::flatten), }; - Ok(Some(result)) + Ok(result) } pub(crate) fn internal_serialize( @@ -45424,34 +67087,39 @@ impl FileTransfersTransferDeleteDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("file_transfer_id", &self.file_transfer_id)?; + if let Some(val) = &self.is_company_managed { + s.serialize_field("is_company_managed", val)?; + } + if let Some(val) = &self.join_policy { + s.serialize_field("join_policy", val)?; + } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for FileTransfersTransferDeleteDetails { +impl<'de> ::serde::de::Deserialize<'de> for GroupJoinPolicyUpdatedDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = FileTransfersTransferDeleteDetails; + type Value = GroupJoinPolicyUpdatedDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a FileTransfersTransferDeleteDetails struct") + f.write_str("a GroupJoinPolicyUpdatedDetails struct") } fn visit_map>(self, map: V) -> Result { - FileTransfersTransferDeleteDetails::internal_deserialize(map) + GroupJoinPolicyUpdatedDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("FileTransfersTransferDeleteDetails", FILE_TRANSFERS_TRANSFER_DELETE_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("GroupJoinPolicyUpdatedDetails", GROUP_JOIN_POLICY_UPDATED_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for FileTransfersTransferDeleteDetails { +impl ::serde::ser::Serialize for GroupJoinPolicyUpdatedDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("FileTransfersTransferDeleteDetails", 1)?; + let mut s = serializer.serialize_struct("GroupJoinPolicyUpdatedDetails", 2)?; self.internal_serialize::(&mut s)?; s.end() } @@ -45459,30 +67127,30 @@ impl ::serde::ser::Serialize for FileTransfersTransferDeleteDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct FileTransfersTransferDeleteType { +pub struct GroupJoinPolicyUpdatedType { pub description: String, } -impl FileTransfersTransferDeleteType { +impl GroupJoinPolicyUpdatedType { pub fn new(description: String) -> Self { - FileTransfersTransferDeleteType { + GroupJoinPolicyUpdatedType { description, } } } -const FILE_TRANSFERS_TRANSFER_DELETE_TYPE_FIELDS: &[&str] = &["description"]; -impl FileTransfersTransferDeleteType { +const GROUP_JOIN_POLICY_UPDATED_TYPE_FIELDS: &[&str] = &["description"]; +impl GroupJoinPolicyUpdatedType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -45503,7 +67171,7 @@ impl FileTransfersTransferDeleteType { if optional && nothing { return Ok(None); } - let result = FileTransfersTransferDeleteType { + let result = GroupJoinPolicyUpdatedType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -45519,72 +67187,104 @@ impl FileTransfersTransferDeleteType { } } -impl<'de> ::serde::de::Deserialize<'de> for FileTransfersTransferDeleteType { +impl<'de> ::serde::de::Deserialize<'de> for GroupJoinPolicyUpdatedType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = FileTransfersTransferDeleteType; + type Value = GroupJoinPolicyUpdatedType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a FileTransfersTransferDeleteType struct") + f.write_str("a GroupJoinPolicyUpdatedType struct") } fn visit_map>(self, map: V) -> Result { - FileTransfersTransferDeleteType::internal_deserialize(map) + GroupJoinPolicyUpdatedType::internal_deserialize(map) } } - deserializer.deserialize_struct("FileTransfersTransferDeleteType", FILE_TRANSFERS_TRANSFER_DELETE_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("GroupJoinPolicyUpdatedType", GROUP_JOIN_POLICY_UPDATED_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for FileTransfersTransferDeleteType { +impl ::serde::ser::Serialize for GroupJoinPolicyUpdatedType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("FileTransfersTransferDeleteType", 1)?; + let mut s = serializer.serialize_struct("GroupJoinPolicyUpdatedType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Transfer downloaded. +/// Group's logged information. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct FileTransfersTransferDownloadDetails { - /// Transfer id. - pub file_transfer_id: String, +pub struct GroupLogInfo { + /// The name of this group. + pub display_name: String, + /// The unique id of this group. + pub group_id: Option, + /// External group ID. + pub external_id: Option, } -impl FileTransfersTransferDownloadDetails { - pub fn new(file_transfer_id: String) -> Self { - FileTransfersTransferDownloadDetails { - file_transfer_id, +impl GroupLogInfo { + pub fn new(display_name: String) -> Self { + GroupLogInfo { + display_name, + group_id: None, + external_id: None, } } + + pub fn with_group_id(mut self, value: crate::types::team_common::GroupId) -> Self { + self.group_id = Some(value); + self + } + + pub fn with_external_id(mut self, value: crate::types::team_common::GroupExternalId) -> Self { + self.external_id = Some(value); + self + } } -const FILE_TRANSFERS_TRANSFER_DOWNLOAD_DETAILS_FIELDS: &[&str] = &["file_transfer_id"]; -impl FileTransfersTransferDownloadDetails { +const GROUP_LOG_INFO_FIELDS: &[&str] = &["display_name", + "group_id", + "external_id"]; +impl GroupLogInfo { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_file_transfer_id = None; + ) -> Result, V::Error> { + let mut field_display_name = None; + let mut field_group_id = None; + let mut field_external_id = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "file_transfer_id" => { - if field_file_transfer_id.is_some() { - return Err(::serde::de::Error::duplicate_field("file_transfer_id")); + "display_name" => { + if field_display_name.is_some() { + return Err(::serde::de::Error::duplicate_field("display_name")); } - field_file_transfer_id = Some(map.next_value()?); + field_display_name = Some(map.next_value()?); + } + "group_id" => { + if field_group_id.is_some() { + return Err(::serde::de::Error::duplicate_field("group_id")); + } + field_group_id = Some(map.next_value()?); + } + "external_id" => { + if field_external_id.is_some() { + return Err(::serde::de::Error::duplicate_field("external_id")); + } + field_external_id = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -45595,8 +67295,10 @@ impl FileTransfersTransferDownloadDetails { if optional && nothing { return Ok(None); } - let result = FileTransfersTransferDownloadDetails { - file_transfer_id: field_file_transfer_id.ok_or_else(|| ::serde::de::Error::missing_field("file_transfer_id"))?, + let result = GroupLogInfo { + display_name: field_display_name.ok_or_else(|| ::serde::de::Error::missing_field("display_name"))?, + group_id: field_group_id.and_then(Option::flatten), + external_id: field_external_id.and_then(Option::flatten), }; Ok(Some(result)) } @@ -45606,65 +67308,115 @@ impl FileTransfersTransferDownloadDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("file_transfer_id", &self.file_transfer_id)?; + s.serialize_field("display_name", &self.display_name)?; + if let Some(val) = &self.group_id { + s.serialize_field("group_id", val)?; + } + if let Some(val) = &self.external_id { + s.serialize_field("external_id", val)?; + } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for FileTransfersTransferDownloadDetails { +impl<'de> ::serde::de::Deserialize<'de> for GroupLogInfo { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = FileTransfersTransferDownloadDetails; + type Value = GroupLogInfo; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a FileTransfersTransferDownloadDetails struct") + f.write_str("a GroupLogInfo struct") } fn visit_map>(self, map: V) -> Result { - FileTransfersTransferDownloadDetails::internal_deserialize(map) + GroupLogInfo::internal_deserialize(map) } } - deserializer.deserialize_struct("FileTransfersTransferDownloadDetails", FILE_TRANSFERS_TRANSFER_DOWNLOAD_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("GroupLogInfo", GROUP_LOG_INFO_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for FileTransfersTransferDownloadDetails { +impl ::serde::ser::Serialize for GroupLogInfo { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("FileTransfersTransferDownloadDetails", 1)?; + let mut s = serializer.serialize_struct("GroupLogInfo", 3)?; self.internal_serialize::(&mut s)?; s.end() } } +/// Moved group. +#[derive(Debug, Clone, PartialEq, Eq, Default)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct GroupMovedDetails { +} + +const GROUP_MOVED_DETAILS_FIELDS: &[&str] = &[]; +impl GroupMovedDetails { + // no _opt deserializer + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + ) -> Result { + // ignore any fields found; none are presently recognized + crate::eat_json_fields(&mut map)?; + Ok(GroupMovedDetails {}) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for GroupMovedDetails { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = GroupMovedDetails; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a GroupMovedDetails struct") + } + fn visit_map>(self, map: V) -> Result { + GroupMovedDetails::internal_deserialize(map) + } + } + deserializer.deserialize_struct("GroupMovedDetails", GROUP_MOVED_DETAILS_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for GroupMovedDetails { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + serializer.serialize_struct("GroupMovedDetails", 0)?.end() + } +} + #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct FileTransfersTransferDownloadType { +pub struct GroupMovedType { pub description: String, } -impl FileTransfersTransferDownloadType { +impl GroupMovedType { pub fn new(description: String) -> Self { - FileTransfersTransferDownloadType { + GroupMovedType { description, } } } -const FILE_TRANSFERS_TRANSFER_DOWNLOAD_TYPE_FIELDS: &[&str] = &["description"]; -impl FileTransfersTransferDownloadType { +const GROUP_MOVED_TYPE_FIELDS: &[&str] = &["description"]; +impl GroupMovedType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -45685,7 +67437,7 @@ impl FileTransfersTransferDownloadType { if optional && nothing { return Ok(None); } - let result = FileTransfersTransferDownloadType { + let result = GroupMovedType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -45701,72 +67453,72 @@ impl FileTransfersTransferDownloadType { } } -impl<'de> ::serde::de::Deserialize<'de> for FileTransfersTransferDownloadType { +impl<'de> ::serde::de::Deserialize<'de> for GroupMovedType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = FileTransfersTransferDownloadType; + type Value = GroupMovedType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a FileTransfersTransferDownloadType struct") + f.write_str("a GroupMovedType struct") } fn visit_map>(self, map: V) -> Result { - FileTransfersTransferDownloadType::internal_deserialize(map) + GroupMovedType::internal_deserialize(map) } } - deserializer.deserialize_struct("FileTransfersTransferDownloadType", FILE_TRANSFERS_TRANSFER_DOWNLOAD_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("GroupMovedType", GROUP_MOVED_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for FileTransfersTransferDownloadType { +impl ::serde::ser::Serialize for GroupMovedType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("FileTransfersTransferDownloadType", 1)?; + let mut s = serializer.serialize_struct("GroupMovedType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Sent transfer. +/// Removed external ID for group. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct FileTransfersTransferSendDetails { - /// Transfer id. - pub file_transfer_id: String, +pub struct GroupRemoveExternalIdDetails { + /// Old external id. + pub previous_value: crate::types::team_common::GroupExternalId, } -impl FileTransfersTransferSendDetails { - pub fn new(file_transfer_id: String) -> Self { - FileTransfersTransferSendDetails { - file_transfer_id, +impl GroupRemoveExternalIdDetails { + pub fn new(previous_value: crate::types::team_common::GroupExternalId) -> Self { + GroupRemoveExternalIdDetails { + previous_value, } } } -const FILE_TRANSFERS_TRANSFER_SEND_DETAILS_FIELDS: &[&str] = &["file_transfer_id"]; -impl FileTransfersTransferSendDetails { +const GROUP_REMOVE_EXTERNAL_ID_DETAILS_FIELDS: &[&str] = &["previous_value"]; +impl GroupRemoveExternalIdDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_file_transfer_id = None; + ) -> Result, V::Error> { + let mut field_previous_value = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "file_transfer_id" => { - if field_file_transfer_id.is_some() { - return Err(::serde::de::Error::duplicate_field("file_transfer_id")); + "previous_value" => { + if field_previous_value.is_some() { + return Err(::serde::de::Error::duplicate_field("previous_value")); } - field_file_transfer_id = Some(map.next_value()?); + field_previous_value = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -45777,8 +67529,8 @@ impl FileTransfersTransferSendDetails { if optional && nothing { return Ok(None); } - let result = FileTransfersTransferSendDetails { - file_transfer_id: field_file_transfer_id.ok_or_else(|| ::serde::de::Error::missing_field("file_transfer_id"))?, + let result = GroupRemoveExternalIdDetails { + previous_value: field_previous_value.ok_or_else(|| ::serde::de::Error::missing_field("previous_value"))?, }; Ok(Some(result)) } @@ -45788,34 +67540,34 @@ impl FileTransfersTransferSendDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("file_transfer_id", &self.file_transfer_id)?; + s.serialize_field("previous_value", &self.previous_value)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for FileTransfersTransferSendDetails { +impl<'de> ::serde::de::Deserialize<'de> for GroupRemoveExternalIdDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = FileTransfersTransferSendDetails; + type Value = GroupRemoveExternalIdDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a FileTransfersTransferSendDetails struct") + f.write_str("a GroupRemoveExternalIdDetails struct") } fn visit_map>(self, map: V) -> Result { - FileTransfersTransferSendDetails::internal_deserialize(map) + GroupRemoveExternalIdDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("FileTransfersTransferSendDetails", FILE_TRANSFERS_TRANSFER_SEND_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("GroupRemoveExternalIdDetails", GROUP_REMOVE_EXTERNAL_ID_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for FileTransfersTransferSendDetails { +impl ::serde::ser::Serialize for GroupRemoveExternalIdDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("FileTransfersTransferSendDetails", 1)?; + let mut s = serializer.serialize_struct("GroupRemoveExternalIdDetails", 1)?; self.internal_serialize::(&mut s)?; s.end() } @@ -45823,30 +67575,30 @@ impl ::serde::ser::Serialize for FileTransfersTransferSendDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct FileTransfersTransferSendType { +pub struct GroupRemoveExternalIdType { pub description: String, } -impl FileTransfersTransferSendType { +impl GroupRemoveExternalIdType { pub fn new(description: String) -> Self { - FileTransfersTransferSendType { + GroupRemoveExternalIdType { description, } } } -const FILE_TRANSFERS_TRANSFER_SEND_TYPE_FIELDS: &[&str] = &["description"]; -impl FileTransfersTransferSendType { +const GROUP_REMOVE_EXTERNAL_ID_TYPE_FIELDS: &[&str] = &["description"]; +impl GroupRemoveExternalIdType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -45867,7 +67619,7 @@ impl FileTransfersTransferSendType { if optional && nothing { return Ok(None); } - let result = FileTransfersTransferSendType { + let result = GroupRemoveExternalIdType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -45883,152 +67635,104 @@ impl FileTransfersTransferSendType { } } -impl<'de> ::serde::de::Deserialize<'de> for FileTransfersTransferSendType { +impl<'de> ::serde::de::Deserialize<'de> for GroupRemoveExternalIdType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = FileTransfersTransferSendType; + type Value = GroupRemoveExternalIdType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a FileTransfersTransferSendType struct") + f.write_str("a GroupRemoveExternalIdType struct") } fn visit_map>(self, map: V) -> Result { - FileTransfersTransferSendType::internal_deserialize(map) + GroupRemoveExternalIdType::internal_deserialize(map) } } - deserializer.deserialize_struct("FileTransfersTransferSendType", FILE_TRANSFERS_TRANSFER_SEND_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("GroupRemoveExternalIdType", GROUP_REMOVE_EXTERNAL_ID_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for FileTransfersTransferSendType { +impl ::serde::ser::Serialize for GroupRemoveExternalIdType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("FileTransfersTransferSendType", 1)?; + let mut s = serializer.serialize_struct("GroupRemoveExternalIdType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Viewed transfer. -#[derive(Debug, Clone, PartialEq, Eq)] +/// Removed team members from group. +#[derive(Debug, Clone, PartialEq, Eq, Default)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct FileTransfersTransferViewDetails { - /// Transfer id. - pub file_transfer_id: String, -} - -impl FileTransfersTransferViewDetails { - pub fn new(file_transfer_id: String) -> Self { - FileTransfersTransferViewDetails { - file_transfer_id, - } - } +pub struct GroupRemoveMemberDetails { } -const FILE_TRANSFERS_TRANSFER_VIEW_DETAILS_FIELDS: &[&str] = &["file_transfer_id"]; -impl FileTransfersTransferViewDetails { +const GROUP_REMOVE_MEMBER_DETAILS_FIELDS: &[&str] = &[]; +impl GroupRemoveMemberDetails { + // no _opt deserializer pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( - map: V, - ) -> Result { - Self::internal_deserialize_opt(map, false).map(Option::unwrap) - } - - pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - optional: bool, - ) -> Result, V::Error> { - let mut field_file_transfer_id = None; - let mut nothing = true; - while let Some(key) = map.next_key::<&str>()? { - nothing = false; - match key { - "file_transfer_id" => { - if field_file_transfer_id.is_some() { - return Err(::serde::de::Error::duplicate_field("file_transfer_id")); - } - field_file_transfer_id = Some(map.next_value()?); - } - _ => { - // unknown field allowed and ignored - map.next_value::<::serde_json::Value>()?; - } - } - } - if optional && nothing { - return Ok(None); - } - let result = FileTransfersTransferViewDetails { - file_transfer_id: field_file_transfer_id.ok_or_else(|| ::serde::de::Error::missing_field("file_transfer_id"))?, - }; - Ok(Some(result)) - } - - pub(crate) fn internal_serialize( - &self, - s: &mut S::SerializeStruct, - ) -> Result<(), S::Error> { - use serde::ser::SerializeStruct; - s.serialize_field("file_transfer_id", &self.file_transfer_id)?; - Ok(()) + ) -> Result { + // ignore any fields found; none are presently recognized + crate::eat_json_fields(&mut map)?; + Ok(GroupRemoveMemberDetails {}) } } -impl<'de> ::serde::de::Deserialize<'de> for FileTransfersTransferViewDetails { +impl<'de> ::serde::de::Deserialize<'de> for GroupRemoveMemberDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = FileTransfersTransferViewDetails; + type Value = GroupRemoveMemberDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a FileTransfersTransferViewDetails struct") + f.write_str("a GroupRemoveMemberDetails struct") } fn visit_map>(self, map: V) -> Result { - FileTransfersTransferViewDetails::internal_deserialize(map) + GroupRemoveMemberDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("FileTransfersTransferViewDetails", FILE_TRANSFERS_TRANSFER_VIEW_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("GroupRemoveMemberDetails", GROUP_REMOVE_MEMBER_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for FileTransfersTransferViewDetails { +impl ::serde::ser::Serialize for GroupRemoveMemberDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("FileTransfersTransferViewDetails", 1)?; - self.internal_serialize::(&mut s)?; - s.end() + serializer.serialize_struct("GroupRemoveMemberDetails", 0)?.end() } } #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct FileTransfersTransferViewType { +pub struct GroupRemoveMemberType { pub description: String, } -impl FileTransfersTransferViewType { +impl GroupRemoveMemberType { pub fn new(description: String) -> Self { - FileTransfersTransferViewType { + GroupRemoveMemberType { description, } } } -const FILE_TRANSFERS_TRANSFER_VIEW_TYPE_FIELDS: &[&str] = &["description"]; -impl FileTransfersTransferViewType { +const GROUP_REMOVE_MEMBER_TYPE_FIELDS: &[&str] = &["description"]; +impl GroupRemoveMemberType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -46049,7 +67753,7 @@ impl FileTransfersTransferViewType { if optional && nothing { return Ok(None); } - let result = FileTransfersTransferViewType { + let result = GroupRemoveMemberType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -46065,63 +67769,83 @@ impl FileTransfersTransferViewType { } } -impl<'de> ::serde::de::Deserialize<'de> for FileTransfersTransferViewType { +impl<'de> ::serde::de::Deserialize<'de> for GroupRemoveMemberType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = FileTransfersTransferViewType; + type Value = GroupRemoveMemberType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a FileTransfersTransferViewType struct") + f.write_str("a GroupRemoveMemberType struct") } fn visit_map>(self, map: V) -> Result { - FileTransfersTransferViewType::internal_deserialize(map) + GroupRemoveMemberType::internal_deserialize(map) } } - deserializer.deserialize_struct("FileTransfersTransferViewType", FILE_TRANSFERS_TRANSFER_VIEW_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("GroupRemoveMemberType", GROUP_REMOVE_MEMBER_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for FileTransfersTransferViewType { +impl ::serde::ser::Serialize for GroupRemoveMemberType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("FileTransfersTransferViewType", 1)?; + let mut s = serializer.serialize_struct("GroupRemoveMemberType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Unliked file comment. -#[derive(Debug, Clone, PartialEq, Eq, Default)] +/// Renamed group. +#[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct FileUnlikeCommentDetails { - /// Comment text. - pub comment_text: Option, +pub struct GroupRenameDetails { + /// Previous display name. + pub previous_value: String, + /// New display name. + pub new_value: String, } -impl FileUnlikeCommentDetails { - pub fn with_comment_text(mut self, value: String) -> Self { - self.comment_text = Some(value); - self +impl GroupRenameDetails { + pub fn new(previous_value: String, new_value: String) -> Self { + GroupRenameDetails { + previous_value, + new_value, + } } } -const FILE_UNLIKE_COMMENT_DETAILS_FIELDS: &[&str] = &["comment_text"]; -impl FileUnlikeCommentDetails { - // no _opt deserializer +const GROUP_RENAME_DETAILS_FIELDS: &[&str] = &["previous_value", + "new_value"]; +impl GroupRenameDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - ) -> Result { - let mut field_comment_text = None; + optional: bool, + ) -> Result, V::Error> { + let mut field_previous_value = None; + let mut field_new_value = None; + let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { + nothing = false; match key { - "comment_text" => { - if field_comment_text.is_some() { - return Err(::serde::de::Error::duplicate_field("comment_text")); + "previous_value" => { + if field_previous_value.is_some() { + return Err(::serde::de::Error::duplicate_field("previous_value")); } - field_comment_text = Some(map.next_value()?); + field_previous_value = Some(map.next_value()?); + } + "new_value" => { + if field_new_value.is_some() { + return Err(::serde::de::Error::duplicate_field("new_value")); + } + field_new_value = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -46129,10 +67853,14 @@ impl FileUnlikeCommentDetails { } } } - let result = FileUnlikeCommentDetails { - comment_text: field_comment_text.and_then(Option::flatten), + if optional && nothing { + return Ok(None); + } + let result = GroupRenameDetails { + previous_value: field_previous_value.ok_or_else(|| ::serde::de::Error::missing_field("previous_value"))?, + new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, }; - Ok(result) + Ok(Some(result)) } pub(crate) fn internal_serialize( @@ -46140,36 +67868,35 @@ impl FileUnlikeCommentDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - if let Some(val) = &self.comment_text { - s.serialize_field("comment_text", val)?; - } + s.serialize_field("previous_value", &self.previous_value)?; + s.serialize_field("new_value", &self.new_value)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for FileUnlikeCommentDetails { +impl<'de> ::serde::de::Deserialize<'de> for GroupRenameDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = FileUnlikeCommentDetails; + type Value = GroupRenameDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a FileUnlikeCommentDetails struct") + f.write_str("a GroupRenameDetails struct") } fn visit_map>(self, map: V) -> Result { - FileUnlikeCommentDetails::internal_deserialize(map) + GroupRenameDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("FileUnlikeCommentDetails", FILE_UNLIKE_COMMENT_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("GroupRenameDetails", GROUP_RENAME_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for FileUnlikeCommentDetails { +impl ::serde::ser::Serialize for GroupRenameDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("FileUnlikeCommentDetails", 1)?; + let mut s = serializer.serialize_struct("GroupRenameDetails", 2)?; self.internal_serialize::(&mut s)?; s.end() } @@ -46177,30 +67904,30 @@ impl ::serde::ser::Serialize for FileUnlikeCommentDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct FileUnlikeCommentType { +pub struct GroupRenameType { pub description: String, } -impl FileUnlikeCommentType { +impl GroupRenameType { pub fn new(description: String) -> Self { - FileUnlikeCommentType { + GroupRenameType { description, } } } -const FILE_UNLIKE_COMMENT_TYPE_FIELDS: &[&str] = &["description"]; -impl FileUnlikeCommentType { +const GROUP_RENAME_TYPE_FIELDS: &[&str] = &["description"]; +impl GroupRenameType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -46221,7 +67948,7 @@ impl FileUnlikeCommentType { if optional && nothing { return Ok(None); } - let result = FileUnlikeCommentType { + let result = GroupRenameType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -46237,63 +67964,91 @@ impl FileUnlikeCommentType { } } -impl<'de> ::serde::de::Deserialize<'de> for FileUnlikeCommentType { +impl<'de> ::serde::de::Deserialize<'de> for GroupRenameType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = FileUnlikeCommentType; + type Value = GroupRenameType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a FileUnlikeCommentType struct") + f.write_str("a GroupRenameType struct") } fn visit_map>(self, map: V) -> Result { - FileUnlikeCommentType::internal_deserialize(map) + GroupRenameType::internal_deserialize(map) } } - deserializer.deserialize_struct("FileUnlikeCommentType", FILE_UNLIKE_COMMENT_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("GroupRenameType", GROUP_RENAME_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for FileUnlikeCommentType { +impl ::serde::ser::Serialize for GroupRenameType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("FileUnlikeCommentType", 1)?; + let mut s = serializer.serialize_struct("GroupRenameType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Unresolved file comment. -#[derive(Debug, Clone, PartialEq, Eq, Default)] +/// Changed who can create groups. +#[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct FileUnresolveCommentDetails { - /// Comment text. - pub comment_text: Option, +pub struct GroupUserManagementChangePolicyDetails { + /// New group users management policy. + pub new_value: crate::types::team_policies::GroupCreation, + /// Previous group users management policy. Might be missing due to historical data gap. + pub previous_value: Option, } -impl FileUnresolveCommentDetails { - pub fn with_comment_text(mut self, value: String) -> Self { - self.comment_text = Some(value); +impl GroupUserManagementChangePolicyDetails { + pub fn new(new_value: crate::types::team_policies::GroupCreation) -> Self { + GroupUserManagementChangePolicyDetails { + new_value, + previous_value: None, + } + } + + pub fn with_previous_value( + mut self, + value: crate::types::team_policies::GroupCreation, + ) -> Self { + self.previous_value = Some(value); self } } -const FILE_UNRESOLVE_COMMENT_DETAILS_FIELDS: &[&str] = &["comment_text"]; -impl FileUnresolveCommentDetails { - // no _opt deserializer +const GROUP_USER_MANAGEMENT_CHANGE_POLICY_DETAILS_FIELDS: &[&str] = &["new_value", + "previous_value"]; +impl GroupUserManagementChangePolicyDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - ) -> Result { - let mut field_comment_text = None; + optional: bool, + ) -> Result, V::Error> { + let mut field_new_value = None; + let mut field_previous_value = None; + let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { + nothing = false; match key { - "comment_text" => { - if field_comment_text.is_some() { - return Err(::serde::de::Error::duplicate_field("comment_text")); + "new_value" => { + if field_new_value.is_some() { + return Err(::serde::de::Error::duplicate_field("new_value")); } - field_comment_text = Some(map.next_value()?); + field_new_value = Some(map.next_value()?); + } + "previous_value" => { + if field_previous_value.is_some() { + return Err(::serde::de::Error::duplicate_field("previous_value")); + } + field_previous_value = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -46301,10 +68056,14 @@ impl FileUnresolveCommentDetails { } } } - let result = FileUnresolveCommentDetails { - comment_text: field_comment_text.and_then(Option::flatten), + if optional && nothing { + return Ok(None); + } + let result = GroupUserManagementChangePolicyDetails { + new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, + previous_value: field_previous_value.and_then(Option::flatten), }; - Ok(result) + Ok(Some(result)) } pub(crate) fn internal_serialize( @@ -46312,36 +68071,37 @@ impl FileUnresolveCommentDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - if let Some(val) = &self.comment_text { - s.serialize_field("comment_text", val)?; + s.serialize_field("new_value", &self.new_value)?; + if let Some(val) = &self.previous_value { + s.serialize_field("previous_value", val)?; } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for FileUnresolveCommentDetails { +impl<'de> ::serde::de::Deserialize<'de> for GroupUserManagementChangePolicyDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = FileUnresolveCommentDetails; + type Value = GroupUserManagementChangePolicyDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a FileUnresolveCommentDetails struct") + f.write_str("a GroupUserManagementChangePolicyDetails struct") } fn visit_map>(self, map: V) -> Result { - FileUnresolveCommentDetails::internal_deserialize(map) + GroupUserManagementChangePolicyDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("FileUnresolveCommentDetails", FILE_UNRESOLVE_COMMENT_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("GroupUserManagementChangePolicyDetails", GROUP_USER_MANAGEMENT_CHANGE_POLICY_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for FileUnresolveCommentDetails { +impl ::serde::ser::Serialize for GroupUserManagementChangePolicyDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("FileUnresolveCommentDetails", 1)?; + let mut s = serializer.serialize_struct("GroupUserManagementChangePolicyDetails", 2)?; self.internal_serialize::(&mut s)?; s.end() } @@ -46349,30 +68109,30 @@ impl ::serde::ser::Serialize for FileUnresolveCommentDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct FileUnresolveCommentType { +pub struct GroupUserManagementChangePolicyType { pub description: String, } -impl FileUnresolveCommentType { +impl GroupUserManagementChangePolicyType { pub fn new(description: String) -> Self { - FileUnresolveCommentType { + GroupUserManagementChangePolicyType { description, } } } -const FILE_UNRESOLVE_COMMENT_TYPE_FIELDS: &[&str] = &["description"]; -impl FileUnresolveCommentType { +const GROUP_USER_MANAGEMENT_CHANGE_POLICY_TYPE_FIELDS: &[&str] = &["description"]; +impl GroupUserManagementChangePolicyType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -46393,7 +68153,7 @@ impl FileUnresolveCommentType { if optional && nothing { return Ok(None); } - let result = FileUnresolveCommentType { + let result = GroupUserManagementChangePolicyType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -46409,144 +68169,112 @@ impl FileUnresolveCommentType { } } -impl<'de> ::serde::de::Deserialize<'de> for FileUnresolveCommentType { +impl<'de> ::serde::de::Deserialize<'de> for GroupUserManagementChangePolicyType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = FileUnresolveCommentType; + type Value = GroupUserManagementChangePolicyType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a FileUnresolveCommentType struct") + f.write_str("a GroupUserManagementChangePolicyType struct") } fn visit_map>(self, map: V) -> Result { - FileUnresolveCommentType::internal_deserialize(map) + GroupUserManagementChangePolicyType::internal_deserialize(map) } } - deserializer.deserialize_struct("FileUnresolveCommentType", FILE_UNRESOLVE_COMMENT_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("GroupUserManagementChangePolicyType", GROUP_USER_MANAGEMENT_CHANGE_POLICY_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for FileUnresolveCommentType { +impl ::serde::ser::Serialize for GroupUserManagementChangePolicyType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("FileUnresolveCommentType", 1)?; + let mut s = serializer.serialize_struct("GroupUserManagementChangePolicyType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Policy for deciding whether applying link restrictions on all team owned folders -#[derive(Debug, Clone, PartialEq, Eq)] -#[non_exhaustive] // variants may be added in the future -pub enum FolderLinkRestrictionPolicy { - Disabled, - Enabled, - /// Catch-all used for unrecognized values returned from the server. Encountering this value - /// typically indicates that this SDK version is out of date. - Other, -} - -impl<'de> ::serde::de::Deserialize<'de> for FolderLinkRestrictionPolicy { - fn deserialize>(deserializer: D) -> Result { - // union deserializer - use serde::de::{self, MapAccess, Visitor}; - struct EnumVisitor; - impl<'de> Visitor<'de> for EnumVisitor { - type Value = FolderLinkRestrictionPolicy; - fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a FolderLinkRestrictionPolicy structure") - } - fn visit_map>(self, mut map: V) -> Result { - let tag: &str = match map.next_key()? { - Some(".tag") => map.next_value()?, - _ => return Err(de::Error::missing_field(".tag")) - }; - let value = match tag { - "disabled" => FolderLinkRestrictionPolicy::Disabled, - "enabled" => FolderLinkRestrictionPolicy::Enabled, - _ => FolderLinkRestrictionPolicy::Other, - }; - crate::eat_json_fields(&mut map)?; - Ok(value) - } - } - const VARIANTS: &[&str] = &["disabled", - "enabled", - "other"]; - deserializer.deserialize_struct("FolderLinkRestrictionPolicy", VARIANTS, EnumVisitor) - } -} - -impl ::serde::ser::Serialize for FolderLinkRestrictionPolicy { - fn serialize(&self, serializer: S) -> Result { - // union serializer - use serde::ser::SerializeStruct; - match self { - FolderLinkRestrictionPolicy::Disabled => { - // unit - let mut s = serializer.serialize_struct("FolderLinkRestrictionPolicy", 1)?; - s.serialize_field(".tag", "disabled")?; - s.end() - } - FolderLinkRestrictionPolicy::Enabled => { - // unit - let mut s = serializer.serialize_struct("FolderLinkRestrictionPolicy", 1)?; - s.serialize_field(".tag", "enabled")?; - s.end() - } - FolderLinkRestrictionPolicy::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) - } - } -} - -/// Changed folder link restrictions policy for team. +/// Changed guest team admin status. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct FolderLinkRestrictionPolicyChangedDetails { - /// To. - pub new_value: FolderLinkRestrictionPolicy, - /// From. - pub previous_value: FolderLinkRestrictionPolicy, +pub struct GuestAdminChangeStatusDetails { + /// True for guest, false for host. + pub is_guest: bool, + /// Previous request state. + pub previous_value: TrustedTeamsRequestState, + /// New request state. + pub new_value: TrustedTeamsRequestState, + /// Action details. + pub action_details: TrustedTeamsRequestAction, + /// The name of the guest team. + pub guest_team_name: Option, + /// The name of the host team. + pub host_team_name: Option, } -impl FolderLinkRestrictionPolicyChangedDetails { +impl GuestAdminChangeStatusDetails { pub fn new( - new_value: FolderLinkRestrictionPolicy, - previous_value: FolderLinkRestrictionPolicy, + is_guest: bool, + previous_value: TrustedTeamsRequestState, + new_value: TrustedTeamsRequestState, + action_details: TrustedTeamsRequestAction, ) -> Self { - FolderLinkRestrictionPolicyChangedDetails { - new_value, + GuestAdminChangeStatusDetails { + is_guest, previous_value, + new_value, + action_details, + guest_team_name: None, + host_team_name: None, } } + + pub fn with_guest_team_name(mut self, value: String) -> Self { + self.guest_team_name = Some(value); + self + } + + pub fn with_host_team_name(mut self, value: String) -> Self { + self.host_team_name = Some(value); + self + } } -const FOLDER_LINK_RESTRICTION_POLICY_CHANGED_DETAILS_FIELDS: &[&str] = &["new_value", - "previous_value"]; -impl FolderLinkRestrictionPolicyChangedDetails { +const GUEST_ADMIN_CHANGE_STATUS_DETAILS_FIELDS: &[&str] = &["is_guest", + "previous_value", + "new_value", + "action_details", + "guest_team_name", + "host_team_name"]; +impl GuestAdminChangeStatusDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_new_value = None; + ) -> Result, V::Error> { + let mut field_is_guest = None; let mut field_previous_value = None; + let mut field_new_value = None; + let mut field_action_details = None; + let mut field_guest_team_name = None; + let mut field_host_team_name = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "new_value" => { - if field_new_value.is_some() { - return Err(::serde::de::Error::duplicate_field("new_value")); + "is_guest" => { + if field_is_guest.is_some() { + return Err(::serde::de::Error::duplicate_field("is_guest")); } - field_new_value = Some(map.next_value()?); + field_is_guest = Some(map.next_value()?); } "previous_value" => { if field_previous_value.is_some() { @@ -46554,6 +68282,30 @@ impl FolderLinkRestrictionPolicyChangedDetails { } field_previous_value = Some(map.next_value()?); } + "new_value" => { + if field_new_value.is_some() { + return Err(::serde::de::Error::duplicate_field("new_value")); + } + field_new_value = Some(map.next_value()?); + } + "action_details" => { + if field_action_details.is_some() { + return Err(::serde::de::Error::duplicate_field("action_details")); + } + field_action_details = Some(map.next_value()?); + } + "guest_team_name" => { + if field_guest_team_name.is_some() { + return Err(::serde::de::Error::duplicate_field("guest_team_name")); + } + field_guest_team_name = Some(map.next_value()?); + } + "host_team_name" => { + if field_host_team_name.is_some() { + return Err(::serde::de::Error::duplicate_field("host_team_name")); + } + field_host_team_name = Some(map.next_value()?); + } _ => { // unknown field allowed and ignored map.next_value::<::serde_json::Value>()?; @@ -46563,9 +68315,13 @@ impl FolderLinkRestrictionPolicyChangedDetails { if optional && nothing { return Ok(None); } - let result = FolderLinkRestrictionPolicyChangedDetails { - new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, + let result = GuestAdminChangeStatusDetails { + is_guest: field_is_guest.ok_or_else(|| ::serde::de::Error::missing_field("is_guest"))?, previous_value: field_previous_value.ok_or_else(|| ::serde::de::Error::missing_field("previous_value"))?, + new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, + action_details: field_action_details.ok_or_else(|| ::serde::de::Error::missing_field("action_details"))?, + guest_team_name: field_guest_team_name.and_then(Option::flatten), + host_team_name: field_host_team_name.and_then(Option::flatten), }; Ok(Some(result)) } @@ -46575,35 +68331,43 @@ impl FolderLinkRestrictionPolicyChangedDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("new_value", &self.new_value)?; + s.serialize_field("is_guest", &self.is_guest)?; s.serialize_field("previous_value", &self.previous_value)?; + s.serialize_field("new_value", &self.new_value)?; + s.serialize_field("action_details", &self.action_details)?; + if let Some(val) = &self.guest_team_name { + s.serialize_field("guest_team_name", val)?; + } + if let Some(val) = &self.host_team_name { + s.serialize_field("host_team_name", val)?; + } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for FolderLinkRestrictionPolicyChangedDetails { +impl<'de> ::serde::de::Deserialize<'de> for GuestAdminChangeStatusDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = FolderLinkRestrictionPolicyChangedDetails; + type Value = GuestAdminChangeStatusDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a FolderLinkRestrictionPolicyChangedDetails struct") + f.write_str("a GuestAdminChangeStatusDetails struct") } fn visit_map>(self, map: V) -> Result { - FolderLinkRestrictionPolicyChangedDetails::internal_deserialize(map) + GuestAdminChangeStatusDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("FolderLinkRestrictionPolicyChangedDetails", FOLDER_LINK_RESTRICTION_POLICY_CHANGED_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("GuestAdminChangeStatusDetails", GUEST_ADMIN_CHANGE_STATUS_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for FolderLinkRestrictionPolicyChangedDetails { +impl ::serde::ser::Serialize for GuestAdminChangeStatusDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("FolderLinkRestrictionPolicyChangedDetails", 2)?; + let mut s = serializer.serialize_struct("GuestAdminChangeStatusDetails", 6)?; self.internal_serialize::(&mut s)?; s.end() } @@ -46611,30 +68375,30 @@ impl ::serde::ser::Serialize for FolderLinkRestrictionPolicyChangedDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct FolderLinkRestrictionPolicyChangedType { +pub struct GuestAdminChangeStatusType { pub description: String, } -impl FolderLinkRestrictionPolicyChangedType { +impl GuestAdminChangeStatusType { pub fn new(description: String) -> Self { - FolderLinkRestrictionPolicyChangedType { + GuestAdminChangeStatusType { description, } } } -const FOLDER_LINK_RESTRICTION_POLICY_CHANGED_TYPE_FIELDS: &[&str] = &["description"]; -impl FolderLinkRestrictionPolicyChangedType { +const GUEST_ADMIN_CHANGE_STATUS_TYPE_FIELDS: &[&str] = &["description"]; +impl GuestAdminChangeStatusType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -46655,7 +68419,7 @@ impl FolderLinkRestrictionPolicyChangedType { if optional && nothing { return Ok(None); } - let result = FolderLinkRestrictionPolicyChangedType { + let result = GuestAdminChangeStatusType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -46671,136 +68435,78 @@ impl FolderLinkRestrictionPolicyChangedType { } } -impl<'de> ::serde::de::Deserialize<'de> for FolderLinkRestrictionPolicyChangedType { +impl<'de> ::serde::de::Deserialize<'de> for GuestAdminChangeStatusType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = FolderLinkRestrictionPolicyChangedType; + type Value = GuestAdminChangeStatusType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a FolderLinkRestrictionPolicyChangedType struct") + f.write_str("a GuestAdminChangeStatusType struct") } fn visit_map>(self, map: V) -> Result { - FolderLinkRestrictionPolicyChangedType::internal_deserialize(map) + GuestAdminChangeStatusType::internal_deserialize(map) } } - deserializer.deserialize_struct("FolderLinkRestrictionPolicyChangedType", FOLDER_LINK_RESTRICTION_POLICY_CHANGED_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("GuestAdminChangeStatusType", GUEST_ADMIN_CHANGE_STATUS_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for FolderLinkRestrictionPolicyChangedType { +impl ::serde::ser::Serialize for GuestAdminChangeStatusType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("FolderLinkRestrictionPolicyChangedType", 1)?; + let mut s = serializer.serialize_struct("GuestAdminChangeStatusType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Folder's logged information. -#[derive(Debug, Clone, PartialEq, Eq)] +/// Started trusted team admin session. +#[derive(Debug, Clone, PartialEq, Eq, Default)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct FolderLogInfo { - /// Path relative to event context. - pub path: PathLogInfo, - /// Display name. - pub display_name: Option, - /// Unique ID. - pub file_id: Option, - /// File or folder size in bytes. - pub file_size: Option, - /// Number of files within the folder. - pub file_count: Option, +pub struct GuestAdminSignedInViaTrustedTeamsDetails { + /// Host team name. + pub team_name: Option, + /// Trusted team name. + pub trusted_team_name: Option, } -impl FolderLogInfo { - pub fn new(path: PathLogInfo) -> Self { - FolderLogInfo { - path, - display_name: None, - file_id: None, - file_size: None, - file_count: None, - } - } - - pub fn with_display_name(mut self, value: String) -> Self { - self.display_name = Some(value); - self - } - - pub fn with_file_id(mut self, value: String) -> Self { - self.file_id = Some(value); - self - } - - pub fn with_file_size(mut self, value: u64) -> Self { - self.file_size = Some(value); - self - } - - pub fn with_file_count(mut self, value: u64) -> Self { - self.file_count = Some(value); +impl GuestAdminSignedInViaTrustedTeamsDetails { + pub fn with_team_name(mut self, value: String) -> Self { + self.team_name = Some(value); self } -} - -const FOLDER_LOG_INFO_FIELDS: &[&str] = &["path", - "display_name", - "file_id", - "file_size", - "file_count"]; -impl FolderLogInfo { - pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( - map: V, - ) -> Result { - Self::internal_deserialize_opt(map, false).map(Option::unwrap) - } - pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( - mut map: V, - optional: bool, - ) -> Result, V::Error> { - let mut field_path = None; - let mut field_display_name = None; - let mut field_file_id = None; - let mut field_file_size = None; - let mut field_file_count = None; - let mut nothing = true; - while let Some(key) = map.next_key::<&str>()? { - nothing = false; - match key { - "path" => { - if field_path.is_some() { - return Err(::serde::de::Error::duplicate_field("path")); - } - field_path = Some(map.next_value()?); - } - "display_name" => { - if field_display_name.is_some() { - return Err(::serde::de::Error::duplicate_field("display_name")); - } - field_display_name = Some(map.next_value()?); - } - "file_id" => { - if field_file_id.is_some() { - return Err(::serde::de::Error::duplicate_field("file_id")); - } - field_file_id = Some(map.next_value()?); - } - "file_size" => { - if field_file_size.is_some() { - return Err(::serde::de::Error::duplicate_field("file_size")); + pub fn with_trusted_team_name(mut self, value: String) -> Self { + self.trusted_team_name = Some(value); + self + } +} + +const GUEST_ADMIN_SIGNED_IN_VIA_TRUSTED_TEAMS_DETAILS_FIELDS: &[&str] = &["team_name", + "trusted_team_name"]; +impl GuestAdminSignedInViaTrustedTeamsDetails { + // no _opt deserializer + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + ) -> Result { + let mut field_team_name = None; + let mut field_trusted_team_name = None; + while let Some(key) = map.next_key::<&str>()? { + match key { + "team_name" => { + if field_team_name.is_some() { + return Err(::serde::de::Error::duplicate_field("team_name")); } - field_file_size = Some(map.next_value()?); + field_team_name = Some(map.next_value()?); } - "file_count" => { - if field_file_count.is_some() { - return Err(::serde::de::Error::duplicate_field("file_count")); + "trusted_team_name" => { + if field_trusted_team_name.is_some() { + return Err(::serde::de::Error::duplicate_field("trusted_team_name")); } - field_file_count = Some(map.next_value()?); + field_trusted_team_name = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -46808,17 +68514,11 @@ impl FolderLogInfo { } } } - if optional && nothing { - return Ok(None); - } - let result = FolderLogInfo { - path: field_path.ok_or_else(|| ::serde::de::Error::missing_field("path"))?, - display_name: field_display_name.and_then(Option::flatten), - file_id: field_file_id.and_then(Option::flatten), - file_size: field_file_size.and_then(Option::flatten), - file_count: field_file_count.and_then(Option::flatten), + let result = GuestAdminSignedInViaTrustedTeamsDetails { + team_name: field_team_name.and_then(Option::flatten), + trusted_team_name: field_trusted_team_name.and_then(Option::flatten), }; - Ok(Some(result)) + Ok(result) } pub(crate) fn internal_serialize( @@ -46826,100 +68526,80 @@ impl FolderLogInfo { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("path", &self.path)?; - if let Some(val) = &self.display_name { - s.serialize_field("display_name", val)?; - } - if let Some(val) = &self.file_id { - s.serialize_field("file_id", val)?; - } - if let Some(val) = &self.file_size { - s.serialize_field("file_size", val)?; + if let Some(val) = &self.team_name { + s.serialize_field("team_name", val)?; } - if let Some(val) = &self.file_count { - s.serialize_field("file_count", val)?; + if let Some(val) = &self.trusted_team_name { + s.serialize_field("trusted_team_name", val)?; } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for FolderLogInfo { +impl<'de> ::serde::de::Deserialize<'de> for GuestAdminSignedInViaTrustedTeamsDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = FolderLogInfo; + type Value = GuestAdminSignedInViaTrustedTeamsDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a FolderLogInfo struct") + f.write_str("a GuestAdminSignedInViaTrustedTeamsDetails struct") } fn visit_map>(self, map: V) -> Result { - FolderLogInfo::internal_deserialize(map) + GuestAdminSignedInViaTrustedTeamsDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("FolderLogInfo", FOLDER_LOG_INFO_FIELDS, StructVisitor) + deserializer.deserialize_struct("GuestAdminSignedInViaTrustedTeamsDetails", GUEST_ADMIN_SIGNED_IN_VIA_TRUSTED_TEAMS_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for FolderLogInfo { +impl ::serde::ser::Serialize for GuestAdminSignedInViaTrustedTeamsDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("FolderLogInfo", 5)?; + let mut s = serializer.serialize_struct("GuestAdminSignedInViaTrustedTeamsDetails", 2)?; self.internal_serialize::(&mut s)?; s.end() } } -// struct extends FileOrFolderLogInfo -impl From for FileOrFolderLogInfo { - fn from(subtype: FolderLogInfo) -> Self { - Self { - path: subtype.path, - display_name: subtype.display_name, - file_id: subtype.file_id, - file_size: subtype.file_size, - } - } -} -/// Updated folder overview. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct FolderOverviewDescriptionChangedDetails { - /// Folder Overview location position in the Assets list. - pub folder_overview_location_asset: u64, +pub struct GuestAdminSignedInViaTrustedTeamsType { + pub description: String, } -impl FolderOverviewDescriptionChangedDetails { - pub fn new(folder_overview_location_asset: u64) -> Self { - FolderOverviewDescriptionChangedDetails { - folder_overview_location_asset, +impl GuestAdminSignedInViaTrustedTeamsType { + pub fn new(description: String) -> Self { + GuestAdminSignedInViaTrustedTeamsType { + description, } } } -const FOLDER_OVERVIEW_DESCRIPTION_CHANGED_DETAILS_FIELDS: &[&str] = &["folder_overview_location_asset"]; -impl FolderOverviewDescriptionChangedDetails { +const GUEST_ADMIN_SIGNED_IN_VIA_TRUSTED_TEAMS_TYPE_FIELDS: &[&str] = &["description"]; +impl GuestAdminSignedInViaTrustedTeamsType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_folder_overview_location_asset = None; + ) -> Result, V::Error> { + let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "folder_overview_location_asset" => { - if field_folder_overview_location_asset.is_some() { - return Err(::serde::de::Error::duplicate_field("folder_overview_location_asset")); + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); } - field_folder_overview_location_asset = Some(map.next_value()?); + field_description = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -46930,8 +68610,8 @@ impl FolderOverviewDescriptionChangedDetails { if optional && nothing { return Ok(None); } - let result = FolderOverviewDescriptionChangedDetails { - folder_overview_location_asset: field_folder_overview_location_asset.ok_or_else(|| ::serde::de::Error::missing_field("folder_overview_location_asset"))?, + let result = GuestAdminSignedInViaTrustedTeamsType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) } @@ -46941,75 +68621,83 @@ impl FolderOverviewDescriptionChangedDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("folder_overview_location_asset", &self.folder_overview_location_asset)?; + s.serialize_field("description", &self.description)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for FolderOverviewDescriptionChangedDetails { +impl<'de> ::serde::de::Deserialize<'de> for GuestAdminSignedInViaTrustedTeamsType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = FolderOverviewDescriptionChangedDetails; + type Value = GuestAdminSignedInViaTrustedTeamsType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a FolderOverviewDescriptionChangedDetails struct") + f.write_str("a GuestAdminSignedInViaTrustedTeamsType struct") } fn visit_map>(self, map: V) -> Result { - FolderOverviewDescriptionChangedDetails::internal_deserialize(map) + GuestAdminSignedInViaTrustedTeamsType::internal_deserialize(map) } } - deserializer.deserialize_struct("FolderOverviewDescriptionChangedDetails", FOLDER_OVERVIEW_DESCRIPTION_CHANGED_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("GuestAdminSignedInViaTrustedTeamsType", GUEST_ADMIN_SIGNED_IN_VIA_TRUSTED_TEAMS_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for FolderOverviewDescriptionChangedDetails { +impl ::serde::ser::Serialize for GuestAdminSignedInViaTrustedTeamsType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("FolderOverviewDescriptionChangedDetails", 1)?; + let mut s = serializer.serialize_struct("GuestAdminSignedInViaTrustedTeamsType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -#[derive(Debug, Clone, PartialEq, Eq)] +/// Ended trusted team admin session. +#[derive(Debug, Clone, PartialEq, Eq, Default)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct FolderOverviewDescriptionChangedType { - pub description: String, +pub struct GuestAdminSignedOutViaTrustedTeamsDetails { + /// Host team name. + pub team_name: Option, + /// Trusted team name. + pub trusted_team_name: Option, } -impl FolderOverviewDescriptionChangedType { - pub fn new(description: String) -> Self { - FolderOverviewDescriptionChangedType { - description, - } +impl GuestAdminSignedOutViaTrustedTeamsDetails { + pub fn with_team_name(mut self, value: String) -> Self { + self.team_name = Some(value); + self } -} -const FOLDER_OVERVIEW_DESCRIPTION_CHANGED_TYPE_FIELDS: &[&str] = &["description"]; -impl FolderOverviewDescriptionChangedType { - pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( - map: V, - ) -> Result { - Self::internal_deserialize_opt(map, false).map(Option::unwrap) + pub fn with_trusted_team_name(mut self, value: String) -> Self { + self.trusted_team_name = Some(value); + self } +} - pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( +const GUEST_ADMIN_SIGNED_OUT_VIA_TRUSTED_TEAMS_DETAILS_FIELDS: &[&str] = &["team_name", + "trusted_team_name"]; +impl GuestAdminSignedOutViaTrustedTeamsDetails { + // no _opt deserializer + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - optional: bool, - ) -> Result, V::Error> { - let mut field_description = None; - let mut nothing = true; + ) -> Result { + let mut field_team_name = None; + let mut field_trusted_team_name = None; while let Some(key) = map.next_key::<&str>()? { - nothing = false; match key { - "description" => { - if field_description.is_some() { - return Err(::serde::de::Error::duplicate_field("description")); + "team_name" => { + if field_team_name.is_some() { + return Err(::serde::de::Error::duplicate_field("team_name")); } - field_description = Some(map.next_value()?); + field_team_name = Some(map.next_value()?); + } + "trusted_team_name" => { + if field_trusted_team_name.is_some() { + return Err(::serde::de::Error::duplicate_field("trusted_team_name")); + } + field_trusted_team_name = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -47017,13 +68705,11 @@ impl FolderOverviewDescriptionChangedType { } } } - if optional && nothing { - return Ok(None); - } - let result = FolderOverviewDescriptionChangedType { - description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + let result = GuestAdminSignedOutViaTrustedTeamsDetails { + team_name: field_team_name.and_then(Option::flatten), + trusted_team_name: field_trusted_team_name.and_then(Option::flatten), }; - Ok(Some(result)) + Ok(result) } pub(crate) fn internal_serialize( @@ -47031,88 +68717,80 @@ impl FolderOverviewDescriptionChangedType { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("description", &self.description)?; + if let Some(val) = &self.team_name { + s.serialize_field("team_name", val)?; + } + if let Some(val) = &self.trusted_team_name { + s.serialize_field("trusted_team_name", val)?; + } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for FolderOverviewDescriptionChangedType { +impl<'de> ::serde::de::Deserialize<'de> for GuestAdminSignedOutViaTrustedTeamsDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = FolderOverviewDescriptionChangedType; + type Value = GuestAdminSignedOutViaTrustedTeamsDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a FolderOverviewDescriptionChangedType struct") + f.write_str("a GuestAdminSignedOutViaTrustedTeamsDetails struct") } fn visit_map>(self, map: V) -> Result { - FolderOverviewDescriptionChangedType::internal_deserialize(map) + GuestAdminSignedOutViaTrustedTeamsDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("FolderOverviewDescriptionChangedType", FOLDER_OVERVIEW_DESCRIPTION_CHANGED_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("GuestAdminSignedOutViaTrustedTeamsDetails", GUEST_ADMIN_SIGNED_OUT_VIA_TRUSTED_TEAMS_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for FolderOverviewDescriptionChangedType { +impl ::serde::ser::Serialize for GuestAdminSignedOutViaTrustedTeamsDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("FolderOverviewDescriptionChangedType", 1)?; + let mut s = serializer.serialize_struct("GuestAdminSignedOutViaTrustedTeamsDetails", 2)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Pinned item to folder overview. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct FolderOverviewItemPinnedDetails { - /// Folder Overview location position in the Assets list. - pub folder_overview_location_asset: u64, - /// Pinned items positions in the Assets list. - pub pinned_items_asset_indices: Vec, +pub struct GuestAdminSignedOutViaTrustedTeamsType { + pub description: String, } -impl FolderOverviewItemPinnedDetails { - pub fn new(folder_overview_location_asset: u64, pinned_items_asset_indices: Vec) -> Self { - FolderOverviewItemPinnedDetails { - folder_overview_location_asset, - pinned_items_asset_indices, +impl GuestAdminSignedOutViaTrustedTeamsType { + pub fn new(description: String) -> Self { + GuestAdminSignedOutViaTrustedTeamsType { + description, } } } -const FOLDER_OVERVIEW_ITEM_PINNED_DETAILS_FIELDS: &[&str] = &["folder_overview_location_asset", - "pinned_items_asset_indices"]; -impl FolderOverviewItemPinnedDetails { +const GUEST_ADMIN_SIGNED_OUT_VIA_TRUSTED_TEAMS_TYPE_FIELDS: &[&str] = &["description"]; +impl GuestAdminSignedOutViaTrustedTeamsType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_folder_overview_location_asset = None; - let mut field_pinned_items_asset_indices = None; + ) -> Result, V::Error> { + let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "folder_overview_location_asset" => { - if field_folder_overview_location_asset.is_some() { - return Err(::serde::de::Error::duplicate_field("folder_overview_location_asset")); - } - field_folder_overview_location_asset = Some(map.next_value()?); - } - "pinned_items_asset_indices" => { - if field_pinned_items_asset_indices.is_some() { - return Err(::serde::de::Error::duplicate_field("pinned_items_asset_indices")); + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); } - field_pinned_items_asset_indices = Some(map.next_value()?); + field_description = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -47123,9 +68801,8 @@ impl FolderOverviewItemPinnedDetails { if optional && nothing { return Ok(None); } - let result = FolderOverviewItemPinnedDetails { - folder_overview_location_asset: field_folder_overview_location_asset.ok_or_else(|| ::serde::de::Error::missing_field("folder_overview_location_asset"))?, - pinned_items_asset_indices: field_pinned_items_asset_indices.ok_or_else(|| ::serde::de::Error::missing_field("pinned_items_asset_indices"))?, + let result = GuestAdminSignedOutViaTrustedTeamsType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) } @@ -47135,76 +68812,140 @@ impl FolderOverviewItemPinnedDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("folder_overview_location_asset", &self.folder_overview_location_asset)?; - s.serialize_field("pinned_items_asset_indices", &self.pinned_items_asset_indices)?; + s.serialize_field("description", &self.description)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for FolderOverviewItemPinnedDetails { +impl<'de> ::serde::de::Deserialize<'de> for GuestAdminSignedOutViaTrustedTeamsType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = FolderOverviewItemPinnedDetails; + type Value = GuestAdminSignedOutViaTrustedTeamsType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a FolderOverviewItemPinnedDetails struct") + f.write_str("a GuestAdminSignedOutViaTrustedTeamsType struct") } fn visit_map>(self, map: V) -> Result { - FolderOverviewItemPinnedDetails::internal_deserialize(map) + GuestAdminSignedOutViaTrustedTeamsType::internal_deserialize(map) } } - deserializer.deserialize_struct("FolderOverviewItemPinnedDetails", FOLDER_OVERVIEW_ITEM_PINNED_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("GuestAdminSignedOutViaTrustedTeamsType", GUEST_ADMIN_SIGNED_OUT_VIA_TRUSTED_TEAMS_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for FolderOverviewItemPinnedDetails { +impl ::serde::ser::Serialize for GuestAdminSignedOutViaTrustedTeamsType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("FolderOverviewItemPinnedDetails", 2)?; + let mut s = serializer.serialize_struct("GuestAdminSignedOutViaTrustedTeamsType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // variants may be added in the future +pub enum IdentifierType { + Email, + FacebookProfileName, + /// Catch-all used for unrecognized values returned from the server. Encountering this value + /// typically indicates that this SDK version is out of date. + Other, +} + +impl<'de> ::serde::de::Deserialize<'de> for IdentifierType { + fn deserialize>(deserializer: D) -> Result { + // union deserializer + use serde::de::{self, MapAccess, Visitor}; + struct EnumVisitor; + impl<'de> Visitor<'de> for EnumVisitor { + type Value = IdentifierType; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a IdentifierType structure") + } + fn visit_map>(self, mut map: V) -> Result { + let tag: &str = match map.next_key()? { + Some(".tag") => map.next_value()?, + _ => return Err(de::Error::missing_field(".tag")) + }; + let value = match tag { + "email" => IdentifierType::Email, + "facebook_profile_name" => IdentifierType::FacebookProfileName, + _ => IdentifierType::Other, + }; + crate::eat_json_fields(&mut map)?; + Ok(value) + } + } + const VARIANTS: &[&str] = &["email", + "facebook_profile_name", + "other"]; + deserializer.deserialize_struct("IdentifierType", VARIANTS, EnumVisitor) + } +} + +impl ::serde::ser::Serialize for IdentifierType { + fn serialize(&self, serializer: S) -> Result { + // union serializer + use serde::ser::SerializeStruct; + match self { + IdentifierType::Email => { + // unit + let mut s = serializer.serialize_struct("IdentifierType", 1)?; + s.serialize_field(".tag", "email")?; + s.end() + } + IdentifierType::FacebookProfileName => { + // unit + let mut s = serializer.serialize_struct("IdentifierType", 1)?; + s.serialize_field(".tag", "facebook_profile_name")?; + s.end() + } + IdentifierType::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) + } + } +} + +/// Connected integration for member. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct FolderOverviewItemPinnedType { - pub description: String, +pub struct IntegrationConnectedDetails { + /// Name of the third-party integration. + pub integration_name: String, } -impl FolderOverviewItemPinnedType { - pub fn new(description: String) -> Self { - FolderOverviewItemPinnedType { - description, +impl IntegrationConnectedDetails { + pub fn new(integration_name: String) -> Self { + IntegrationConnectedDetails { + integration_name, } } } -const FOLDER_OVERVIEW_ITEM_PINNED_TYPE_FIELDS: &[&str] = &["description"]; -impl FolderOverviewItemPinnedType { +const INTEGRATION_CONNECTED_DETAILS_FIELDS: &[&str] = &["integration_name"]; +impl IntegrationConnectedDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_description = None; + ) -> Result, V::Error> { + let mut field_integration_name = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "description" => { - if field_description.is_some() { - return Err(::serde::de::Error::duplicate_field("description")); + "integration_name" => { + if field_integration_name.is_some() { + return Err(::serde::de::Error::duplicate_field("integration_name")); } - field_description = Some(map.next_value()?); + field_integration_name = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -47215,8 +68956,8 @@ impl FolderOverviewItemPinnedType { if optional && nothing { return Ok(None); } - let result = FolderOverviewItemPinnedType { - description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + let result = IntegrationConnectedDetails { + integration_name: field_integration_name.ok_or_else(|| ::serde::de::Error::missing_field("integration_name"))?, }; Ok(Some(result)) } @@ -47226,88 +68967,75 @@ impl FolderOverviewItemPinnedType { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("description", &self.description)?; + s.serialize_field("integration_name", &self.integration_name)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for FolderOverviewItemPinnedType { +impl<'de> ::serde::de::Deserialize<'de> for IntegrationConnectedDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = FolderOverviewItemPinnedType; + type Value = IntegrationConnectedDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a FolderOverviewItemPinnedType struct") + f.write_str("a IntegrationConnectedDetails struct") } fn visit_map>(self, map: V) -> Result { - FolderOverviewItemPinnedType::internal_deserialize(map) + IntegrationConnectedDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("FolderOverviewItemPinnedType", FOLDER_OVERVIEW_ITEM_PINNED_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("IntegrationConnectedDetails", INTEGRATION_CONNECTED_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for FolderOverviewItemPinnedType { +impl ::serde::ser::Serialize for IntegrationConnectedDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("FolderOverviewItemPinnedType", 1)?; + let mut s = serializer.serialize_struct("IntegrationConnectedDetails", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Unpinned item from folder overview. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct FolderOverviewItemUnpinnedDetails { - /// Folder Overview location position in the Assets list. - pub folder_overview_location_asset: u64, - /// Pinned items positions in the Assets list. - pub pinned_items_asset_indices: Vec, +pub struct IntegrationConnectedType { + pub description: String, } -impl FolderOverviewItemUnpinnedDetails { - pub fn new(folder_overview_location_asset: u64, pinned_items_asset_indices: Vec) -> Self { - FolderOverviewItemUnpinnedDetails { - folder_overview_location_asset, - pinned_items_asset_indices, +impl IntegrationConnectedType { + pub fn new(description: String) -> Self { + IntegrationConnectedType { + description, } } } -const FOLDER_OVERVIEW_ITEM_UNPINNED_DETAILS_FIELDS: &[&str] = &["folder_overview_location_asset", - "pinned_items_asset_indices"]; -impl FolderOverviewItemUnpinnedDetails { +const INTEGRATION_CONNECTED_TYPE_FIELDS: &[&str] = &["description"]; +impl IntegrationConnectedType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_folder_overview_location_asset = None; - let mut field_pinned_items_asset_indices = None; + ) -> Result, V::Error> { + let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "folder_overview_location_asset" => { - if field_folder_overview_location_asset.is_some() { - return Err(::serde::de::Error::duplicate_field("folder_overview_location_asset")); - } - field_folder_overview_location_asset = Some(map.next_value()?); - } - "pinned_items_asset_indices" => { - if field_pinned_items_asset_indices.is_some() { - return Err(::serde::de::Error::duplicate_field("pinned_items_asset_indices")); + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); } - field_pinned_items_asset_indices = Some(map.next_value()?); + field_description = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -47318,9 +69046,8 @@ impl FolderOverviewItemUnpinnedDetails { if optional && nothing { return Ok(None); } - let result = FolderOverviewItemUnpinnedDetails { - folder_overview_location_asset: field_folder_overview_location_asset.ok_or_else(|| ::serde::de::Error::missing_field("folder_overview_location_asset"))?, - pinned_items_asset_indices: field_pinned_items_asset_indices.ok_or_else(|| ::serde::de::Error::missing_field("pinned_items_asset_indices"))?, + let result = IntegrationConnectedType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) } @@ -47330,76 +69057,77 @@ impl FolderOverviewItemUnpinnedDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("folder_overview_location_asset", &self.folder_overview_location_asset)?; - s.serialize_field("pinned_items_asset_indices", &self.pinned_items_asset_indices)?; + s.serialize_field("description", &self.description)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for FolderOverviewItemUnpinnedDetails { +impl<'de> ::serde::de::Deserialize<'de> for IntegrationConnectedType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = FolderOverviewItemUnpinnedDetails; + type Value = IntegrationConnectedType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a FolderOverviewItemUnpinnedDetails struct") + f.write_str("a IntegrationConnectedType struct") } fn visit_map>(self, map: V) -> Result { - FolderOverviewItemUnpinnedDetails::internal_deserialize(map) + IntegrationConnectedType::internal_deserialize(map) } } - deserializer.deserialize_struct("FolderOverviewItemUnpinnedDetails", FOLDER_OVERVIEW_ITEM_UNPINNED_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("IntegrationConnectedType", INTEGRATION_CONNECTED_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for FolderOverviewItemUnpinnedDetails { +impl ::serde::ser::Serialize for IntegrationConnectedType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("FolderOverviewItemUnpinnedDetails", 2)?; + let mut s = serializer.serialize_struct("IntegrationConnectedType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } +/// Disconnected integration for member. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct FolderOverviewItemUnpinnedType { - pub description: String, +pub struct IntegrationDisconnectedDetails { + /// Name of the third-party integration. + pub integration_name: String, } -impl FolderOverviewItemUnpinnedType { - pub fn new(description: String) -> Self { - FolderOverviewItemUnpinnedType { - description, +impl IntegrationDisconnectedDetails { + pub fn new(integration_name: String) -> Self { + IntegrationDisconnectedDetails { + integration_name, } } } -const FOLDER_OVERVIEW_ITEM_UNPINNED_TYPE_FIELDS: &[&str] = &["description"]; -impl FolderOverviewItemUnpinnedType { +const INTEGRATION_DISCONNECTED_DETAILS_FIELDS: &[&str] = &["integration_name"]; +impl IntegrationDisconnectedDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_description = None; + ) -> Result, V::Error> { + let mut field_integration_name = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "description" => { - if field_description.is_some() { - return Err(::serde::de::Error::duplicate_field("description")); + "integration_name" => { + if field_integration_name.is_some() { + return Err(::serde::de::Error::duplicate_field("integration_name")); } - field_description = Some(map.next_value()?); + field_integration_name = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -47410,8 +69138,8 @@ impl FolderOverviewItemUnpinnedType { if optional && nothing { return Ok(None); } - let result = FolderOverviewItemUnpinnedType { - description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + let result = IntegrationDisconnectedDetails { + integration_name: field_integration_name.ok_or_else(|| ::serde::de::Error::missing_field("integration_name"))?, }; Ok(Some(result)) } @@ -47421,125 +69149,75 @@ impl FolderOverviewItemUnpinnedType { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("description", &self.description)?; + s.serialize_field("integration_name", &self.integration_name)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for FolderOverviewItemUnpinnedType { +impl<'de> ::serde::de::Deserialize<'de> for IntegrationDisconnectedDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = FolderOverviewItemUnpinnedType; + type Value = IntegrationDisconnectedDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a FolderOverviewItemUnpinnedType struct") + f.write_str("a IntegrationDisconnectedDetails struct") } fn visit_map>(self, map: V) -> Result { - FolderOverviewItemUnpinnedType::internal_deserialize(map) + IntegrationDisconnectedDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("FolderOverviewItemUnpinnedType", FOLDER_OVERVIEW_ITEM_UNPINNED_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("IntegrationDisconnectedDetails", INTEGRATION_DISCONNECTED_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for FolderOverviewItemUnpinnedType { +impl ::serde::ser::Serialize for IntegrationDisconnectedDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("FolderOverviewItemUnpinnedType", 1)?; + let mut s = serializer.serialize_struct("IntegrationDisconnectedDetails", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Geographic location details. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct GeoLocationLogInfo { - /// IP address. - pub ip_address: IpAddress, - /// City name. - pub city: Option, - /// Region name. - pub region: Option, - /// Country code. - pub country: Option, +pub struct IntegrationDisconnectedType { + pub description: String, } -impl GeoLocationLogInfo { - pub fn new(ip_address: IpAddress) -> Self { - GeoLocationLogInfo { - ip_address, - city: None, - region: None, - country: None, +impl IntegrationDisconnectedType { + pub fn new(description: String) -> Self { + IntegrationDisconnectedType { + description, } } - - pub fn with_city(mut self, value: String) -> Self { - self.city = Some(value); - self - } - - pub fn with_region(mut self, value: String) -> Self { - self.region = Some(value); - self - } - - pub fn with_country(mut self, value: String) -> Self { - self.country = Some(value); - self - } } -const GEO_LOCATION_LOG_INFO_FIELDS: &[&str] = &["ip_address", - "city", - "region", - "country"]; -impl GeoLocationLogInfo { +const INTEGRATION_DISCONNECTED_TYPE_FIELDS: &[&str] = &["description"]; +impl IntegrationDisconnectedType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_ip_address = None; - let mut field_city = None; - let mut field_region = None; - let mut field_country = None; + ) -> Result, V::Error> { + let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "ip_address" => { - if field_ip_address.is_some() { - return Err(::serde::de::Error::duplicate_field("ip_address")); - } - field_ip_address = Some(map.next_value()?); - } - "city" => { - if field_city.is_some() { - return Err(::serde::de::Error::duplicate_field("city")); - } - field_city = Some(map.next_value()?); - } - "region" => { - if field_region.is_some() { - return Err(::serde::de::Error::duplicate_field("region")); - } - field_region = Some(map.next_value()?); - } - "country" => { - if field_country.is_some() { - return Err(::serde::de::Error::duplicate_field("country")); + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); } - field_country = Some(map.next_value()?); + field_description = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -47550,11 +69228,8 @@ impl GeoLocationLogInfo { if optional && nothing { return Ok(None); } - let result = GeoLocationLogInfo { - ip_address: field_ip_address.ok_or_else(|| ::serde::de::Error::missing_field("ip_address"))?, - city: field_city.and_then(Option::flatten), - region: field_region.and_then(Option::flatten), - country: field_country.and_then(Option::flatten), + let result = IntegrationDisconnectedType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) } @@ -47564,154 +69239,167 @@ impl GeoLocationLogInfo { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("ip_address", &self.ip_address)?; - if let Some(val) = &self.city { - s.serialize_field("city", val)?; - } - if let Some(val) = &self.region { - s.serialize_field("region", val)?; - } - if let Some(val) = &self.country { - s.serialize_field("country", val)?; - } + s.serialize_field("description", &self.description)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for GeoLocationLogInfo { +impl<'de> ::serde::de::Deserialize<'de> for IntegrationDisconnectedType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = GeoLocationLogInfo; + type Value = IntegrationDisconnectedType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a GeoLocationLogInfo struct") + f.write_str("a IntegrationDisconnectedType struct") } fn visit_map>(self, map: V) -> Result { - GeoLocationLogInfo::internal_deserialize(map) + IntegrationDisconnectedType::internal_deserialize(map) } } - deserializer.deserialize_struct("GeoLocationLogInfo", GEO_LOCATION_LOG_INFO_FIELDS, StructVisitor) + deserializer.deserialize_struct("IntegrationDisconnectedType", INTEGRATION_DISCONNECTED_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for GeoLocationLogInfo { +impl ::serde::ser::Serialize for IntegrationDisconnectedType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("GeoLocationLogInfo", 4)?; + let mut s = serializer.serialize_struct("IntegrationDisconnectedType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } +/// Policy for controlling whether a service integration is enabled for the team. #[derive(Debug, Clone, PartialEq, Eq)] -#[non_exhaustive] // structs may have more fields added in the future. -pub struct GetTeamEventsArg { - /// The maximal number of results to return per call. Note that some calls may not return - /// `limit` number of events, and may even return no events, even with `has_more` set to true. - /// In this case, callers should fetch again using - /// [`get_events_continue()`](crate::team_log::get_events_continue). - pub limit: u32, - /// Filter the events by account ID. Return only events with this account_id as either Actor, - /// Context, or Participants. - pub account_id: Option, - /// Filter by time range. - pub time: Option, - /// Filter the returned events to a single category. Note that category shouldn't be provided - /// together with event_type. - pub category: Option, - /// Filter the returned events to a single event type. Note that event_type shouldn't be - /// provided together with category. - pub event_type: Option, +#[non_exhaustive] // variants may be added in the future +pub enum IntegrationPolicy { + Disabled, + Enabled, + /// Catch-all used for unrecognized values returned from the server. Encountering this value + /// typically indicates that this SDK version is out of date. + Other, } -impl Default for GetTeamEventsArg { - fn default() -> Self { - GetTeamEventsArg { - limit: 1000, - account_id: None, - time: None, - category: None, - event_type: None, +impl<'de> ::serde::de::Deserialize<'de> for IntegrationPolicy { + fn deserialize>(deserializer: D) -> Result { + // union deserializer + use serde::de::{self, MapAccess, Visitor}; + struct EnumVisitor; + impl<'de> Visitor<'de> for EnumVisitor { + type Value = IntegrationPolicy; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a IntegrationPolicy structure") + } + fn visit_map>(self, mut map: V) -> Result { + let tag: &str = match map.next_key()? { + Some(".tag") => map.next_value()?, + _ => return Err(de::Error::missing_field(".tag")) + }; + let value = match tag { + "disabled" => IntegrationPolicy::Disabled, + "enabled" => IntegrationPolicy::Enabled, + _ => IntegrationPolicy::Other, + }; + crate::eat_json_fields(&mut map)?; + Ok(value) + } } + const VARIANTS: &[&str] = &["disabled", + "enabled", + "other"]; + deserializer.deserialize_struct("IntegrationPolicy", VARIANTS, EnumVisitor) } } -impl GetTeamEventsArg { - pub fn with_limit(mut self, value: u32) -> Self { - self.limit = value; - self - } - - pub fn with_account_id(mut self, value: crate::types::users_common::AccountId) -> Self { - self.account_id = Some(value); - self - } - - pub fn with_time(mut self, value: crate::types::team_common::TimeRange) -> Self { - self.time = Some(value); - self +impl ::serde::ser::Serialize for IntegrationPolicy { + fn serialize(&self, serializer: S) -> Result { + // union serializer + use serde::ser::SerializeStruct; + match self { + IntegrationPolicy::Disabled => { + // unit + let mut s = serializer.serialize_struct("IntegrationPolicy", 1)?; + s.serialize_field(".tag", "disabled")?; + s.end() + } + IntegrationPolicy::Enabled => { + // unit + let mut s = serializer.serialize_struct("IntegrationPolicy", 1)?; + s.serialize_field(".tag", "enabled")?; + s.end() + } + IntegrationPolicy::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) + } } +} - pub fn with_category(mut self, value: EventCategory) -> Self { - self.category = Some(value); - self - } +/// Changed integration policy for team. +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct IntegrationPolicyChangedDetails { + /// Name of the third-party integration. + pub integration_name: String, + /// New integration policy. + pub new_value: IntegrationPolicy, + /// Previous integration policy. + pub previous_value: IntegrationPolicy, +} - pub fn with_event_type(mut self, value: EventTypeArg) -> Self { - self.event_type = Some(value); - self +impl IntegrationPolicyChangedDetails { + pub fn new( + integration_name: String, + new_value: IntegrationPolicy, + previous_value: IntegrationPolicy, + ) -> Self { + IntegrationPolicyChangedDetails { + integration_name, + new_value, + previous_value, + } } } -const GET_TEAM_EVENTS_ARG_FIELDS: &[&str] = &["limit", - "account_id", - "time", - "category", - "event_type"]; -impl GetTeamEventsArg { - // no _opt deserializer +const INTEGRATION_POLICY_CHANGED_DETAILS_FIELDS: &[&str] = &["integration_name", + "new_value", + "previous_value"]; +impl IntegrationPolicyChangedDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - ) -> Result { - let mut field_limit = None; - let mut field_account_id = None; - let mut field_time = None; - let mut field_category = None; - let mut field_event_type = None; + optional: bool, + ) -> Result, V::Error> { + let mut field_integration_name = None; + let mut field_new_value = None; + let mut field_previous_value = None; + let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { + nothing = false; match key { - "limit" => { - if field_limit.is_some() { - return Err(::serde::de::Error::duplicate_field("limit")); - } - field_limit = Some(map.next_value()?); - } - "account_id" => { - if field_account_id.is_some() { - return Err(::serde::de::Error::duplicate_field("account_id")); - } - field_account_id = Some(map.next_value()?); - } - "time" => { - if field_time.is_some() { - return Err(::serde::de::Error::duplicate_field("time")); + "integration_name" => { + if field_integration_name.is_some() { + return Err(::serde::de::Error::duplicate_field("integration_name")); } - field_time = Some(map.next_value()?); + field_integration_name = Some(map.next_value()?); } - "category" => { - if field_category.is_some() { - return Err(::serde::de::Error::duplicate_field("category")); + "new_value" => { + if field_new_value.is_some() { + return Err(::serde::de::Error::duplicate_field("new_value")); } - field_category = Some(map.next_value()?); + field_new_value = Some(map.next_value()?); } - "event_type" => { - if field_event_type.is_some() { - return Err(::serde::de::Error::duplicate_field("event_type")); + "previous_value" => { + if field_previous_value.is_some() { + return Err(::serde::de::Error::duplicate_field("previous_value")); } - field_event_type = Some(map.next_value()?); + field_previous_value = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -47719,14 +69407,15 @@ impl GetTeamEventsArg { } } } - let result = GetTeamEventsArg { - limit: field_limit.unwrap_or(1000), - account_id: field_account_id.and_then(Option::flatten), - time: field_time.and_then(Option::flatten), - category: field_category.and_then(Option::flatten), - event_type: field_event_type.and_then(Option::flatten), + if optional && nothing { + return Ok(None); + } + let result = IntegrationPolicyChangedDetails { + integration_name: field_integration_name.ok_or_else(|| ::serde::de::Error::missing_field("integration_name"))?, + new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, + previous_value: field_previous_value.ok_or_else(|| ::serde::de::Error::missing_field("previous_value"))?, }; - Ok(result) + Ok(Some(result)) } pub(crate) fn internal_serialize( @@ -47734,48 +69423,36 @@ impl GetTeamEventsArg { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - if self.limit != 1000 { - s.serialize_field("limit", &self.limit)?; - } - if let Some(val) = &self.account_id { - s.serialize_field("account_id", val)?; - } - if let Some(val) = &self.time { - s.serialize_field("time", val)?; - } - if let Some(val) = &self.category { - s.serialize_field("category", val)?; - } - if let Some(val) = &self.event_type { - s.serialize_field("event_type", val)?; - } + s.serialize_field("integration_name", &self.integration_name)?; + s.serialize_field("new_value", &self.new_value)?; + s.serialize_field("previous_value", &self.previous_value)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for GetTeamEventsArg { +impl<'de> ::serde::de::Deserialize<'de> for IntegrationPolicyChangedDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = GetTeamEventsArg; + type Value = IntegrationPolicyChangedDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a GetTeamEventsArg struct") + f.write_str("a IntegrationPolicyChangedDetails struct") } fn visit_map>(self, map: V) -> Result { - GetTeamEventsArg::internal_deserialize(map) + IntegrationPolicyChangedDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("GetTeamEventsArg", GET_TEAM_EVENTS_ARG_FIELDS, StructVisitor) + deserializer.deserialize_struct("IntegrationPolicyChangedDetails", INTEGRATION_POLICY_CHANGED_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for GetTeamEventsArg { +impl ::serde::ser::Serialize for IntegrationPolicyChangedDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("GetTeamEventsArg", 5)?; + let mut s = serializer.serialize_struct("IntegrationPolicyChangedDetails", 3)?; self.internal_serialize::(&mut s)?; s.end() } @@ -47783,41 +69460,40 @@ impl ::serde::ser::Serialize for GetTeamEventsArg { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct GetTeamEventsContinueArg { - /// Indicates from what point to get the next set of events. - pub cursor: String, +pub struct IntegrationPolicyChangedType { + pub description: String, } -impl GetTeamEventsContinueArg { - pub fn new(cursor: String) -> Self { - GetTeamEventsContinueArg { - cursor, +impl IntegrationPolicyChangedType { + pub fn new(description: String) -> Self { + IntegrationPolicyChangedType { + description, } } } -const GET_TEAM_EVENTS_CONTINUE_ARG_FIELDS: &[&str] = &["cursor"]; -impl GetTeamEventsContinueArg { +const INTEGRATION_POLICY_CHANGED_TYPE_FIELDS: &[&str] = &["description"]; +impl IntegrationPolicyChangedType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_cursor = None; + ) -> Result, V::Error> { + let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "cursor" => { - if field_cursor.is_some() { - return Err(::serde::de::Error::duplicate_field("cursor")); + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); } - field_cursor = Some(map.next_value()?); + field_description = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -47828,8 +69504,8 @@ impl GetTeamEventsContinueArg { if optional && nothing { return Ok(None); } - let result = GetTeamEventsContinueArg { - cursor: field_cursor.ok_or_else(|| ::serde::de::Error::missing_field("cursor"))?, + let result = IntegrationPolicyChangedType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) } @@ -47839,155 +69515,60 @@ impl GetTeamEventsContinueArg { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("cursor", &self.cursor)?; + s.serialize_field("description", &self.description)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for GetTeamEventsContinueArg { +impl<'de> ::serde::de::Deserialize<'de> for IntegrationPolicyChangedType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = GetTeamEventsContinueArg; + type Value = IntegrationPolicyChangedType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a GetTeamEventsContinueArg struct") + f.write_str("a IntegrationPolicyChangedType struct") } fn visit_map>(self, map: V) -> Result { - GetTeamEventsContinueArg::internal_deserialize(map) + IntegrationPolicyChangedType::internal_deserialize(map) } } - deserializer.deserialize_struct("GetTeamEventsContinueArg", GET_TEAM_EVENTS_CONTINUE_ARG_FIELDS, StructVisitor) + deserializer.deserialize_struct("IntegrationPolicyChangedType", INTEGRATION_POLICY_CHANGED_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for GetTeamEventsContinueArg { +impl ::serde::ser::Serialize for IntegrationPolicyChangedType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("GetTeamEventsContinueArg", 1)?; + let mut s = serializer.serialize_struct("IntegrationPolicyChangedType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Errors that can be raised when calling -/// [`get_events_continue()`](crate::team_log::get_events_continue). -#[derive(Debug, Clone, PartialEq, Eq)] -#[non_exhaustive] // variants may be added in the future -pub enum GetTeamEventsContinueError { - /// Bad cursor. - BadCursor, - /// Cursors are intended to be used quickly. Individual cursor values are normally valid for - /// days, but in rare cases may be reset sooner. Cursor reset errors should be handled by - /// fetching a new cursor from [`get_events()`](crate::team_log::get_events). The associated - /// value is the approximate timestamp of the most recent event returned by the cursor. This - /// should be used as a resumption point when calling - /// [`get_events()`](crate::team_log::get_events) to obtain a new cursor. - Reset(crate::types::common::DropboxTimestamp), - /// Catch-all used for unrecognized values returned from the server. Encountering this value - /// typically indicates that this SDK version is out of date. - Other, -} - -impl<'de> ::serde::de::Deserialize<'de> for GetTeamEventsContinueError { - fn deserialize>(deserializer: D) -> Result { - // union deserializer - use serde::de::{self, MapAccess, Visitor}; - struct EnumVisitor; - impl<'de> Visitor<'de> for EnumVisitor { - type Value = GetTeamEventsContinueError; - fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a GetTeamEventsContinueError structure") - } - fn visit_map>(self, mut map: V) -> Result { - let tag: &str = match map.next_key()? { - Some(".tag") => map.next_value()?, - _ => return Err(de::Error::missing_field(".tag")) - }; - let value = match tag { - "bad_cursor" => GetTeamEventsContinueError::BadCursor, - "reset" => { - match map.next_key()? { - Some("reset") => GetTeamEventsContinueError::Reset(map.next_value()?), - None => return Err(de::Error::missing_field("reset")), - _ => return Err(de::Error::unknown_field(tag, VARIANTS)) - } - } - _ => GetTeamEventsContinueError::Other, - }; - crate::eat_json_fields(&mut map)?; - Ok(value) - } - } - const VARIANTS: &[&str] = &["bad_cursor", - "reset", - "other"]; - deserializer.deserialize_struct("GetTeamEventsContinueError", VARIANTS, EnumVisitor) - } -} - -impl ::serde::ser::Serialize for GetTeamEventsContinueError { - fn serialize(&self, serializer: S) -> Result { - // union serializer - use serde::ser::SerializeStruct; - match self { - GetTeamEventsContinueError::BadCursor => { - // unit - let mut s = serializer.serialize_struct("GetTeamEventsContinueError", 1)?; - s.serialize_field(".tag", "bad_cursor")?; - s.end() - } - GetTeamEventsContinueError::Reset(x) => { - // primitive - let mut s = serializer.serialize_struct("GetTeamEventsContinueError", 2)?; - s.serialize_field(".tag", "reset")?; - s.serialize_field("reset", x)?; - s.end() - } - GetTeamEventsContinueError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) - } - } -} - -impl ::std::error::Error for GetTeamEventsContinueError { -} - -impl ::std::fmt::Display for GetTeamEventsContinueError { - fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - match self { - GetTeamEventsContinueError::BadCursor => f.write_str("Bad cursor."), - GetTeamEventsContinueError::Reset(inner) => write!(f, "Cursors are intended to be used quickly. Individual cursor values are normally valid for days, but in rare cases may be reset sooner: {:?}", inner), - _ => write!(f, "{:?}", *self), - } - } -} - -/// Errors that can be raised when calling [`get_events()`](crate::team_log::get_events). +/// Policy for deciding whether team admins receive email when an invitation to join the team is +/// accepted #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // variants may be added in the future -pub enum GetTeamEventsError { - /// No user found matching the provided account_id. - AccountIdNotFound, - /// Invalid time range. - InvalidTimeRange, - /// Invalid filters. Do not specify both event_type and category parameters for the same call. - InvalidFilters, +pub enum InviteAcceptanceEmailPolicy { + Disabled, + Enabled, /// Catch-all used for unrecognized values returned from the server. Encountering this value /// typically indicates that this SDK version is out of date. Other, } -impl<'de> ::serde::de::Deserialize<'de> for GetTeamEventsError { +impl<'de> ::serde::de::Deserialize<'de> for InviteAcceptanceEmailPolicy { fn deserialize>(deserializer: D) -> Result { // union deserializer use serde::de::{self, MapAccess, Visitor}; struct EnumVisitor; impl<'de> Visitor<'de> for EnumVisitor { - type Value = GetTeamEventsError; + type Value = InviteAcceptanceEmailPolicy; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a GetTeamEventsError structure") + f.write_str("a InviteAcceptanceEmailPolicy structure") } fn visit_map>(self, mut map: V) -> Result { let tag: &str = match map.next_key()? { @@ -47995,132 +69576,95 @@ impl<'de> ::serde::de::Deserialize<'de> for GetTeamEventsError { _ => return Err(de::Error::missing_field(".tag")) }; let value = match tag { - "account_id_not_found" => GetTeamEventsError::AccountIdNotFound, - "invalid_time_range" => GetTeamEventsError::InvalidTimeRange, - "invalid_filters" => GetTeamEventsError::InvalidFilters, - _ => GetTeamEventsError::Other, + "disabled" => InviteAcceptanceEmailPolicy::Disabled, + "enabled" => InviteAcceptanceEmailPolicy::Enabled, + _ => InviteAcceptanceEmailPolicy::Other, }; crate::eat_json_fields(&mut map)?; Ok(value) } } - const VARIANTS: &[&str] = &["account_id_not_found", - "invalid_time_range", - "invalid_filters", + const VARIANTS: &[&str] = &["disabled", + "enabled", "other"]; - deserializer.deserialize_struct("GetTeamEventsError", VARIANTS, EnumVisitor) + deserializer.deserialize_struct("InviteAcceptanceEmailPolicy", VARIANTS, EnumVisitor) } } -impl ::serde::ser::Serialize for GetTeamEventsError { +impl ::serde::ser::Serialize for InviteAcceptanceEmailPolicy { fn serialize(&self, serializer: S) -> Result { // union serializer use serde::ser::SerializeStruct; match self { - GetTeamEventsError::AccountIdNotFound => { - // unit - let mut s = serializer.serialize_struct("GetTeamEventsError", 1)?; - s.serialize_field(".tag", "account_id_not_found")?; - s.end() - } - GetTeamEventsError::InvalidTimeRange => { + InviteAcceptanceEmailPolicy::Disabled => { // unit - let mut s = serializer.serialize_struct("GetTeamEventsError", 1)?; - s.serialize_field(".tag", "invalid_time_range")?; + let mut s = serializer.serialize_struct("InviteAcceptanceEmailPolicy", 1)?; + s.serialize_field(".tag", "disabled")?; s.end() } - GetTeamEventsError::InvalidFilters => { + InviteAcceptanceEmailPolicy::Enabled => { // unit - let mut s = serializer.serialize_struct("GetTeamEventsError", 1)?; - s.serialize_field(".tag", "invalid_filters")?; + let mut s = serializer.serialize_struct("InviteAcceptanceEmailPolicy", 1)?; + s.serialize_field(".tag", "enabled")?; s.end() } - GetTeamEventsError::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) - } - } -} - -impl ::std::error::Error for GetTeamEventsError { -} - -impl ::std::fmt::Display for GetTeamEventsError { - fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - match self { - GetTeamEventsError::AccountIdNotFound => f.write_str("No user found matching the provided account_id."), - GetTeamEventsError::InvalidTimeRange => f.write_str("Invalid time range."), - GetTeamEventsError::InvalidFilters => f.write_str("Invalid filters. Do not specify both event_type and category parameters for the same call."), - _ => write!(f, "{:?}", *self), + InviteAcceptanceEmailPolicy::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) } } } +/// Changed invite accept email policy for team. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct GetTeamEventsResult { - /// List of events. Note that events are not guaranteed to be sorted by their timestamp value. - pub events: Vec, - /// Pass the cursor into [`get_events_continue()`](crate::team_log::get_events_continue) to - /// obtain additional events. The value of `cursor` may change for each response from - /// [`get_events_continue()`](crate::team_log::get_events_continue), regardless of the value of - /// `has_more`; older cursor strings may expire. Thus, callers should ensure that they update - /// their cursor based on the latest value of `cursor` after each call, and poll regularly if - /// they wish to poll for new events. Callers should handle reset exceptions for expired - /// cursors. - pub cursor: String, - /// Is true if there may be additional events that have not been returned yet. An additional - /// call to [`get_events_continue()`](crate::team_log::get_events_continue) can retrieve them. - /// Note that `has_more` may be `true`, even if `events` is empty. - pub has_more: bool, +pub struct InviteAcceptanceEmailPolicyChangedDetails { + /// To. + pub new_value: InviteAcceptanceEmailPolicy, + /// From. + pub previous_value: InviteAcceptanceEmailPolicy, } -impl GetTeamEventsResult { - pub fn new(events: Vec, cursor: String, has_more: bool) -> Self { - GetTeamEventsResult { - events, - cursor, - has_more, +impl InviteAcceptanceEmailPolicyChangedDetails { + pub fn new( + new_value: InviteAcceptanceEmailPolicy, + previous_value: InviteAcceptanceEmailPolicy, + ) -> Self { + InviteAcceptanceEmailPolicyChangedDetails { + new_value, + previous_value, } } } -const GET_TEAM_EVENTS_RESULT_FIELDS: &[&str] = &["events", - "cursor", - "has_more"]; -impl GetTeamEventsResult { +const INVITE_ACCEPTANCE_EMAIL_POLICY_CHANGED_DETAILS_FIELDS: &[&str] = &["new_value", + "previous_value"]; +impl InviteAcceptanceEmailPolicyChangedDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_events = None; - let mut field_cursor = None; - let mut field_has_more = None; + ) -> Result, V::Error> { + let mut field_new_value = None; + let mut field_previous_value = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "events" => { - if field_events.is_some() { - return Err(::serde::de::Error::duplicate_field("events")); - } - field_events = Some(map.next_value()?); - } - "cursor" => { - if field_cursor.is_some() { - return Err(::serde::de::Error::duplicate_field("cursor")); + "new_value" => { + if field_new_value.is_some() { + return Err(::serde::de::Error::duplicate_field("new_value")); } - field_cursor = Some(map.next_value()?); + field_new_value = Some(map.next_value()?); } - "has_more" => { - if field_has_more.is_some() { - return Err(::serde::de::Error::duplicate_field("has_more")); + "previous_value" => { + if field_previous_value.is_some() { + return Err(::serde::de::Error::duplicate_field("previous_value")); } - field_has_more = Some(map.next_value()?); + field_previous_value = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -48131,10 +69675,9 @@ impl GetTeamEventsResult { if optional && nothing { return Ok(None); } - let result = GetTeamEventsResult { - events: field_events.ok_or_else(|| ::serde::de::Error::missing_field("events"))?, - cursor: field_cursor.ok_or_else(|| ::serde::de::Error::missing_field("cursor"))?, - has_more: field_has_more.ok_or_else(|| ::serde::de::Error::missing_field("has_more"))?, + let result = InviteAcceptanceEmailPolicyChangedDetails { + new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, + previous_value: field_previous_value.ok_or_else(|| ::serde::de::Error::missing_field("previous_value"))?, }; Ok(Some(result)) } @@ -48144,95 +69687,76 @@ impl GetTeamEventsResult { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("events", &self.events)?; - s.serialize_field("cursor", &self.cursor)?; - s.serialize_field("has_more", &self.has_more)?; + s.serialize_field("new_value", &self.new_value)?; + s.serialize_field("previous_value", &self.previous_value)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for GetTeamEventsResult { +impl<'de> ::serde::de::Deserialize<'de> for InviteAcceptanceEmailPolicyChangedDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = GetTeamEventsResult; + type Value = InviteAcceptanceEmailPolicyChangedDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a GetTeamEventsResult struct") + f.write_str("a InviteAcceptanceEmailPolicyChangedDetails struct") } fn visit_map>(self, map: V) -> Result { - GetTeamEventsResult::internal_deserialize(map) + InviteAcceptanceEmailPolicyChangedDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("GetTeamEventsResult", GET_TEAM_EVENTS_RESULT_FIELDS, StructVisitor) + deserializer.deserialize_struct("InviteAcceptanceEmailPolicyChangedDetails", INVITE_ACCEPTANCE_EMAIL_POLICY_CHANGED_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for GetTeamEventsResult { +impl ::serde::ser::Serialize for InviteAcceptanceEmailPolicyChangedDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("GetTeamEventsResult", 3)?; + let mut s = serializer.serialize_struct("InviteAcceptanceEmailPolicyChangedDetails", 2)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Enabled/disabled Google single sign-on for team. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct GoogleSsoChangePolicyDetails { - /// New Google single sign-on policy. - pub new_value: GoogleSsoPolicy, - /// Previous Google single sign-on policy. Might be missing due to historical data gap. - pub previous_value: Option, +pub struct InviteAcceptanceEmailPolicyChangedType { + pub description: String, } -impl GoogleSsoChangePolicyDetails { - pub fn new(new_value: GoogleSsoPolicy) -> Self { - GoogleSsoChangePolicyDetails { - new_value, - previous_value: None, +impl InviteAcceptanceEmailPolicyChangedType { + pub fn new(description: String) -> Self { + InviteAcceptanceEmailPolicyChangedType { + description, } } - - pub fn with_previous_value(mut self, value: GoogleSsoPolicy) -> Self { - self.previous_value = Some(value); - self - } } -const GOOGLE_SSO_CHANGE_POLICY_DETAILS_FIELDS: &[&str] = &["new_value", - "previous_value"]; -impl GoogleSsoChangePolicyDetails { +const INVITE_ACCEPTANCE_EMAIL_POLICY_CHANGED_TYPE_FIELDS: &[&str] = &["description"]; +impl InviteAcceptanceEmailPolicyChangedType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_new_value = None; - let mut field_previous_value = None; + ) -> Result, V::Error> { + let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "new_value" => { - if field_new_value.is_some() { - return Err(::serde::de::Error::duplicate_field("new_value")); - } - field_new_value = Some(map.next_value()?); - } - "previous_value" => { - if field_previous_value.is_some() { - return Err(::serde::de::Error::duplicate_field("previous_value")); + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); } - field_previous_value = Some(map.next_value()?); + field_description = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -48243,9 +69767,8 @@ impl GoogleSsoChangePolicyDetails { if optional && nothing { return Ok(None); } - let result = GoogleSsoChangePolicyDetails { - new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, - previous_value: field_previous_value.and_then(Option::flatten), + let result = InviteAcceptanceEmailPolicyChangedType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) } @@ -48255,78 +69778,284 @@ impl GoogleSsoChangePolicyDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("new_value", &self.new_value)?; - if let Some(val) = &self.previous_value { - s.serialize_field("previous_value", val)?; - } + s.serialize_field("description", &self.description)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for GoogleSsoChangePolicyDetails { +impl<'de> ::serde::de::Deserialize<'de> for InviteAcceptanceEmailPolicyChangedType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = GoogleSsoChangePolicyDetails; + type Value = InviteAcceptanceEmailPolicyChangedType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a GoogleSsoChangePolicyDetails struct") + f.write_str("a InviteAcceptanceEmailPolicyChangedType struct") } fn visit_map>(self, map: V) -> Result { - GoogleSsoChangePolicyDetails::internal_deserialize(map) + InviteAcceptanceEmailPolicyChangedType::internal_deserialize(map) } } - deserializer.deserialize_struct("GoogleSsoChangePolicyDetails", GOOGLE_SSO_CHANGE_POLICY_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("InviteAcceptanceEmailPolicyChangedType", INVITE_ACCEPTANCE_EMAIL_POLICY_CHANGED_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for GoogleSsoChangePolicyDetails { +impl ::serde::ser::Serialize for InviteAcceptanceEmailPolicyChangedType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("GoogleSsoChangePolicyDetails", 2)?; + let mut s = serializer.serialize_struct("InviteAcceptanceEmailPolicyChangedType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // variants may be added in the future +pub enum InviteMethod { + AutoApprove, + InviteLink, + MemberInvite, + MovedFromAnotherTeam, + /// Catch-all used for unrecognized values returned from the server. Encountering this value + /// typically indicates that this SDK version is out of date. + Other, +} + +impl<'de> ::serde::de::Deserialize<'de> for InviteMethod { + fn deserialize>(deserializer: D) -> Result { + // union deserializer + use serde::de::{self, MapAccess, Visitor}; + struct EnumVisitor; + impl<'de> Visitor<'de> for EnumVisitor { + type Value = InviteMethod; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a InviteMethod structure") + } + fn visit_map>(self, mut map: V) -> Result { + let tag: &str = match map.next_key()? { + Some(".tag") => map.next_value()?, + _ => return Err(de::Error::missing_field(".tag")) + }; + let value = match tag { + "auto_approve" => InviteMethod::AutoApprove, + "invite_link" => InviteMethod::InviteLink, + "member_invite" => InviteMethod::MemberInvite, + "moved_from_another_team" => InviteMethod::MovedFromAnotherTeam, + _ => InviteMethod::Other, + }; + crate::eat_json_fields(&mut map)?; + Ok(value) + } + } + const VARIANTS: &[&str] = &["auto_approve", + "invite_link", + "member_invite", + "moved_from_another_team", + "other"]; + deserializer.deserialize_struct("InviteMethod", VARIANTS, EnumVisitor) + } +} + +impl ::serde::ser::Serialize for InviteMethod { + fn serialize(&self, serializer: S) -> Result { + // union serializer + use serde::ser::SerializeStruct; + match self { + InviteMethod::AutoApprove => { + // unit + let mut s = serializer.serialize_struct("InviteMethod", 1)?; + s.serialize_field(".tag", "auto_approve")?; + s.end() + } + InviteMethod::InviteLink => { + // unit + let mut s = serializer.serialize_struct("InviteMethod", 1)?; + s.serialize_field(".tag", "invite_link")?; + s.end() + } + InviteMethod::MemberInvite => { + // unit + let mut s = serializer.serialize_struct("InviteMethod", 1)?; + s.serialize_field(".tag", "member_invite")?; + s.end() + } + InviteMethod::MovedFromAnotherTeam => { + // unit + let mut s = serializer.serialize_struct("InviteMethod", 1)?; + s.serialize_field(".tag", "moved_from_another_team")?; + s.end() + } + InviteMethod::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) + } + } +} + +/// Additional information relevant when a new member joins the team. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct GoogleSsoChangePolicyType { - pub description: String, +pub struct JoinTeamDetails { + /// Linked applications. (Deprecated) Please use has_linked_apps boolean field instead. + pub linked_apps: Vec, + /// Linked devices. (Deprecated) Please use has_linked_devices boolean field instead. + pub linked_devices: Vec, + /// Linked shared folders. (Deprecated) Please use has_linked_shared_folders boolean field + /// instead. + pub linked_shared_folders: Vec, + /// (Deprecated) True if the linked_apps list was truncated to the maximum supported length + /// (50). + pub was_linked_apps_truncated: Option, + /// (Deprecated) True if the linked_devices list was truncated to the maximum supported length + /// (50). + pub was_linked_devices_truncated: Option, + /// (Deprecated) True if the linked_shared_folders list was truncated to the maximum supported + /// length (50). + pub was_linked_shared_folders_truncated: Option, + /// True if the user had linked apps at event time. + pub has_linked_apps: Option, + /// True if the user had linked apps at event time. + pub has_linked_devices: Option, + /// True if the user had linked shared folders at event time. + pub has_linked_shared_folders: Option, } -impl GoogleSsoChangePolicyType { - pub fn new(description: String) -> Self { - GoogleSsoChangePolicyType { - description, +impl JoinTeamDetails { + pub fn new( + linked_apps: Vec, + linked_devices: Vec, + linked_shared_folders: Vec, + ) -> Self { + JoinTeamDetails { + linked_apps, + linked_devices, + linked_shared_folders, + was_linked_apps_truncated: None, + was_linked_devices_truncated: None, + was_linked_shared_folders_truncated: None, + has_linked_apps: None, + has_linked_devices: None, + has_linked_shared_folders: None, } } + + pub fn with_was_linked_apps_truncated(mut self, value: bool) -> Self { + self.was_linked_apps_truncated = Some(value); + self + } + + pub fn with_was_linked_devices_truncated(mut self, value: bool) -> Self { + self.was_linked_devices_truncated = Some(value); + self + } + + pub fn with_was_linked_shared_folders_truncated(mut self, value: bool) -> Self { + self.was_linked_shared_folders_truncated = Some(value); + self + } + + pub fn with_has_linked_apps(mut self, value: bool) -> Self { + self.has_linked_apps = Some(value); + self + } + + pub fn with_has_linked_devices(mut self, value: bool) -> Self { + self.has_linked_devices = Some(value); + self + } + + pub fn with_has_linked_shared_folders(mut self, value: bool) -> Self { + self.has_linked_shared_folders = Some(value); + self + } } -const GOOGLE_SSO_CHANGE_POLICY_TYPE_FIELDS: &[&str] = &["description"]; -impl GoogleSsoChangePolicyType { +const JOIN_TEAM_DETAILS_FIELDS: &[&str] = &["linked_apps", + "linked_devices", + "linked_shared_folders", + "was_linked_apps_truncated", + "was_linked_devices_truncated", + "was_linked_shared_folders_truncated", + "has_linked_apps", + "has_linked_devices", + "has_linked_shared_folders"]; +impl JoinTeamDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_description = None; + ) -> Result, V::Error> { + let mut field_linked_apps = None; + let mut field_linked_devices = None; + let mut field_linked_shared_folders = None; + let mut field_was_linked_apps_truncated = None; + let mut field_was_linked_devices_truncated = None; + let mut field_was_linked_shared_folders_truncated = None; + let mut field_has_linked_apps = None; + let mut field_has_linked_devices = None; + let mut field_has_linked_shared_folders = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "description" => { - if field_description.is_some() { - return Err(::serde::de::Error::duplicate_field("description")); + "linked_apps" => { + if field_linked_apps.is_some() { + return Err(::serde::de::Error::duplicate_field("linked_apps")); } - field_description = Some(map.next_value()?); + field_linked_apps = Some(map.next_value()?); + } + "linked_devices" => { + if field_linked_devices.is_some() { + return Err(::serde::de::Error::duplicate_field("linked_devices")); + } + field_linked_devices = Some(map.next_value()?); + } + "linked_shared_folders" => { + if field_linked_shared_folders.is_some() { + return Err(::serde::de::Error::duplicate_field("linked_shared_folders")); + } + field_linked_shared_folders = Some(map.next_value()?); + } + "was_linked_apps_truncated" => { + if field_was_linked_apps_truncated.is_some() { + return Err(::serde::de::Error::duplicate_field("was_linked_apps_truncated")); + } + field_was_linked_apps_truncated = Some(map.next_value()?); + } + "was_linked_devices_truncated" => { + if field_was_linked_devices_truncated.is_some() { + return Err(::serde::de::Error::duplicate_field("was_linked_devices_truncated")); + } + field_was_linked_devices_truncated = Some(map.next_value()?); + } + "was_linked_shared_folders_truncated" => { + if field_was_linked_shared_folders_truncated.is_some() { + return Err(::serde::de::Error::duplicate_field("was_linked_shared_folders_truncated")); + } + field_was_linked_shared_folders_truncated = Some(map.next_value()?); + } + "has_linked_apps" => { + if field_has_linked_apps.is_some() { + return Err(::serde::de::Error::duplicate_field("has_linked_apps")); + } + field_has_linked_apps = Some(map.next_value()?); + } + "has_linked_devices" => { + if field_has_linked_devices.is_some() { + return Err(::serde::de::Error::duplicate_field("has_linked_devices")); + } + field_has_linked_devices = Some(map.next_value()?); + } + "has_linked_shared_folders" => { + if field_has_linked_shared_folders.is_some() { + return Err(::serde::de::Error::duplicate_field("has_linked_shared_folders")); + } + field_has_linked_shared_folders = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -48337,8 +70066,16 @@ impl GoogleSsoChangePolicyType { if optional && nothing { return Ok(None); } - let result = GoogleSsoChangePolicyType { - description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + let result = JoinTeamDetails { + linked_apps: field_linked_apps.ok_or_else(|| ::serde::de::Error::missing_field("linked_apps"))?, + linked_devices: field_linked_devices.ok_or_else(|| ::serde::de::Error::missing_field("linked_devices"))?, + linked_shared_folders: field_linked_shared_folders.ok_or_else(|| ::serde::de::Error::missing_field("linked_shared_folders"))?, + was_linked_apps_truncated: field_was_linked_apps_truncated.and_then(Option::flatten), + was_linked_devices_truncated: field_was_linked_devices_truncated.and_then(Option::flatten), + was_linked_shared_folders_truncated: field_was_linked_shared_folders_truncated.and_then(Option::flatten), + has_linked_apps: field_has_linked_apps.and_then(Option::flatten), + has_linked_devices: field_has_linked_devices.and_then(Option::flatten), + has_linked_shared_folders: field_has_linked_shared_folders.and_then(Option::flatten), }; Ok(Some(result)) } @@ -48348,59 +70085,80 @@ impl GoogleSsoChangePolicyType { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("description", &self.description)?; + s.serialize_field("linked_apps", &self.linked_apps)?; + s.serialize_field("linked_devices", &self.linked_devices)?; + s.serialize_field("linked_shared_folders", &self.linked_shared_folders)?; + if let Some(val) = &self.was_linked_apps_truncated { + s.serialize_field("was_linked_apps_truncated", val)?; + } + if let Some(val) = &self.was_linked_devices_truncated { + s.serialize_field("was_linked_devices_truncated", val)?; + } + if let Some(val) = &self.was_linked_shared_folders_truncated { + s.serialize_field("was_linked_shared_folders_truncated", val)?; + } + if let Some(val) = &self.has_linked_apps { + s.serialize_field("has_linked_apps", val)?; + } + if let Some(val) = &self.has_linked_devices { + s.serialize_field("has_linked_devices", val)?; + } + if let Some(val) = &self.has_linked_shared_folders { + s.serialize_field("has_linked_shared_folders", val)?; + } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for GoogleSsoChangePolicyType { +impl<'de> ::serde::de::Deserialize<'de> for JoinTeamDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = GoogleSsoChangePolicyType; + type Value = JoinTeamDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a GoogleSsoChangePolicyType struct") + f.write_str("a JoinTeamDetails struct") } fn visit_map>(self, map: V) -> Result { - GoogleSsoChangePolicyType::internal_deserialize(map) + JoinTeamDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("GoogleSsoChangePolicyType", GOOGLE_SSO_CHANGE_POLICY_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("JoinTeamDetails", JOIN_TEAM_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for GoogleSsoChangePolicyType { +impl ::serde::ser::Serialize for JoinTeamDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("GoogleSsoChangePolicyType", 1)?; + let mut s = serializer.serialize_struct("JoinTeamDetails", 9)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Google SSO policy +/// Label type #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // variants may be added in the future -pub enum GoogleSsoPolicy { - Disabled, - Enabled, +pub enum LabelType { + PersonalInformation, + TestOnly, + UserDefinedTag, /// Catch-all used for unrecognized values returned from the server. Encountering this value /// typically indicates that this SDK version is out of date. Other, } -impl<'de> ::serde::de::Deserialize<'de> for GoogleSsoPolicy { +impl<'de> ::serde::de::Deserialize<'de> for LabelType { fn deserialize>(deserializer: D) -> Result { // union deserializer use serde::de::{self, MapAccess, Visitor}; struct EnumVisitor; impl<'de> Visitor<'de> for EnumVisitor { - type Value = GoogleSsoPolicy; + type Value = LabelType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a GoogleSsoPolicy structure") + f.write_str("a LabelType structure") } fn visit_map>(self, mut map: V) -> Result { let tag: &str = match map.next_key()? { @@ -48408,135 +70166,247 @@ impl<'de> ::serde::de::Deserialize<'de> for GoogleSsoPolicy { _ => return Err(de::Error::missing_field(".tag")) }; let value = match tag { - "disabled" => GoogleSsoPolicy::Disabled, - "enabled" => GoogleSsoPolicy::Enabled, - _ => GoogleSsoPolicy::Other, + "personal_information" => LabelType::PersonalInformation, + "test_only" => LabelType::TestOnly, + "user_defined_tag" => LabelType::UserDefinedTag, + _ => LabelType::Other, }; crate::eat_json_fields(&mut map)?; Ok(value) } } - const VARIANTS: &[&str] = &["disabled", - "enabled", + const VARIANTS: &[&str] = &["personal_information", + "test_only", + "user_defined_tag", "other"]; - deserializer.deserialize_struct("GoogleSsoPolicy", VARIANTS, EnumVisitor) + deserializer.deserialize_struct("LabelType", VARIANTS, EnumVisitor) } } -impl ::serde::ser::Serialize for GoogleSsoPolicy { +impl ::serde::ser::Serialize for LabelType { fn serialize(&self, serializer: S) -> Result { // union serializer use serde::ser::SerializeStruct; match self { - GoogleSsoPolicy::Disabled => { + LabelType::PersonalInformation => { // unit - let mut s = serializer.serialize_struct("GoogleSsoPolicy", 1)?; - s.serialize_field(".tag", "disabled")?; + let mut s = serializer.serialize_struct("LabelType", 1)?; + s.serialize_field(".tag", "personal_information")?; s.end() } - GoogleSsoPolicy::Enabled => { + LabelType::TestOnly => { // unit - let mut s = serializer.serialize_struct("GoogleSsoPolicy", 1)?; - s.serialize_field(".tag", "enabled")?; + let mut s = serializer.serialize_struct("LabelType", 1)?; + s.serialize_field(".tag", "test_only")?; s.end() } - GoogleSsoPolicy::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) + LabelType::UserDefinedTag => { + // unit + let mut s = serializer.serialize_struct("LabelType", 1)?; + s.serialize_field(".tag", "user_defined_tag")?; + s.end() + } + LabelType::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) } } } -/// Couldn't add a folder to a policy. -#[derive(Debug, Clone, PartialEq, Eq)] +/// Information on sessions, in legacy format +#[derive(Debug, Clone, PartialEq, Eq, Default)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct GovernancePolicyAddFolderFailedDetails { - /// Policy ID. - pub governance_policy_id: String, - /// Policy name. - pub name: String, - /// Folder. - pub folder: String, - /// Policy type. - pub policy_type: Option, - /// Reason. - pub reason: Option, +pub struct LegacyDeviceSessionLogInfo { + /// The IP address of the last activity from this session. + pub ip_address: Option, + /// The time this session was created. + pub created: Option, + /// The time of the last activity from this session. + pub updated: Option, + /// Session unique id. + pub session_info: Option, + /// The device name. Might be missing due to historical data gap. + pub display_name: Option, + /// Is device managed by emm. Might be missing due to historical data gap. + pub is_emm_managed: Option, + /// Information on the hosting platform. Might be missing due to historical data gap. + pub platform: Option, + /// The mac address of the last activity from this session. Might be missing due to historical + /// data gap. + pub mac_address: Option, + /// The hosting OS version. Might be missing due to historical data gap. + pub os_version: Option, + /// Information on the hosting device type. Might be missing due to historical data gap. + pub device_type: Option, + /// The Dropbox client version. Might be missing due to historical data gap. + pub client_version: Option, + /// Alternative unique device session id, instead of session id field. Might be missing due to + /// historical data gap. + pub legacy_uniq_id: Option, } -impl GovernancePolicyAddFolderFailedDetails { - pub fn new(governance_policy_id: String, name: String, folder: String) -> Self { - GovernancePolicyAddFolderFailedDetails { - governance_policy_id, - name, - folder, - policy_type: None, - reason: None, - } +impl LegacyDeviceSessionLogInfo { + pub fn with_ip_address(mut self, value: IpAddress) -> Self { + self.ip_address = Some(value); + self } - pub fn with_policy_type(mut self, value: PolicyType) -> Self { - self.policy_type = Some(value); + pub fn with_created(mut self, value: crate::types::common::DropboxTimestamp) -> Self { + self.created = Some(value); self } - pub fn with_reason(mut self, value: String) -> Self { - self.reason = Some(value); + pub fn with_updated(mut self, value: crate::types::common::DropboxTimestamp) -> Self { + self.updated = Some(value); self } -} -const GOVERNANCE_POLICY_ADD_FOLDER_FAILED_DETAILS_FIELDS: &[&str] = &["governance_policy_id", - "name", - "folder", - "policy_type", - "reason"]; -impl GovernancePolicyAddFolderFailedDetails { - pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( - map: V, - ) -> Result { - Self::internal_deserialize_opt(map, false).map(Option::unwrap) + pub fn with_session_info(mut self, value: SessionLogInfo) -> Self { + self.session_info = Some(value); + self } - pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + pub fn with_display_name(mut self, value: String) -> Self { + self.display_name = Some(value); + self + } + + pub fn with_is_emm_managed(mut self, value: bool) -> Self { + self.is_emm_managed = Some(value); + self + } + + pub fn with_platform(mut self, value: String) -> Self { + self.platform = Some(value); + self + } + + pub fn with_mac_address(mut self, value: IpAddress) -> Self { + self.mac_address = Some(value); + self + } + + pub fn with_os_version(mut self, value: String) -> Self { + self.os_version = Some(value); + self + } + + pub fn with_device_type(mut self, value: String) -> Self { + self.device_type = Some(value); + self + } + + pub fn with_client_version(mut self, value: String) -> Self { + self.client_version = Some(value); + self + } + + pub fn with_legacy_uniq_id(mut self, value: String) -> Self { + self.legacy_uniq_id = Some(value); + self + } +} + +const LEGACY_DEVICE_SESSION_LOG_INFO_FIELDS: &[&str] = &["ip_address", + "created", + "updated", + "session_info", + "display_name", + "is_emm_managed", + "platform", + "mac_address", + "os_version", + "device_type", + "client_version", + "legacy_uniq_id"]; +impl LegacyDeviceSessionLogInfo { + // no _opt deserializer + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - optional: bool, - ) -> Result, V::Error> { - let mut field_governance_policy_id = None; - let mut field_name = None; - let mut field_folder = None; - let mut field_policy_type = None; - let mut field_reason = None; - let mut nothing = true; + ) -> Result { + let mut field_ip_address = None; + let mut field_created = None; + let mut field_updated = None; + let mut field_session_info = None; + let mut field_display_name = None; + let mut field_is_emm_managed = None; + let mut field_platform = None; + let mut field_mac_address = None; + let mut field_os_version = None; + let mut field_device_type = None; + let mut field_client_version = None; + let mut field_legacy_uniq_id = None; while let Some(key) = map.next_key::<&str>()? { - nothing = false; match key { - "governance_policy_id" => { - if field_governance_policy_id.is_some() { - return Err(::serde::de::Error::duplicate_field("governance_policy_id")); + "ip_address" => { + if field_ip_address.is_some() { + return Err(::serde::de::Error::duplicate_field("ip_address")); } - field_governance_policy_id = Some(map.next_value()?); + field_ip_address = Some(map.next_value()?); } - "name" => { - if field_name.is_some() { - return Err(::serde::de::Error::duplicate_field("name")); + "created" => { + if field_created.is_some() { + return Err(::serde::de::Error::duplicate_field("created")); } - field_name = Some(map.next_value()?); + field_created = Some(map.next_value()?); } - "folder" => { - if field_folder.is_some() { - return Err(::serde::de::Error::duplicate_field("folder")); + "updated" => { + if field_updated.is_some() { + return Err(::serde::de::Error::duplicate_field("updated")); } - field_folder = Some(map.next_value()?); + field_updated = Some(map.next_value()?); } - "policy_type" => { - if field_policy_type.is_some() { - return Err(::serde::de::Error::duplicate_field("policy_type")); + "session_info" => { + if field_session_info.is_some() { + return Err(::serde::de::Error::duplicate_field("session_info")); } - field_policy_type = Some(map.next_value()?); + field_session_info = Some(map.next_value()?); } - "reason" => { - if field_reason.is_some() { - return Err(::serde::de::Error::duplicate_field("reason")); + "display_name" => { + if field_display_name.is_some() { + return Err(::serde::de::Error::duplicate_field("display_name")); } - field_reason = Some(map.next_value()?); + field_display_name = Some(map.next_value()?); + } + "is_emm_managed" => { + if field_is_emm_managed.is_some() { + return Err(::serde::de::Error::duplicate_field("is_emm_managed")); + } + field_is_emm_managed = Some(map.next_value()?); + } + "platform" => { + if field_platform.is_some() { + return Err(::serde::de::Error::duplicate_field("platform")); + } + field_platform = Some(map.next_value()?); + } + "mac_address" => { + if field_mac_address.is_some() { + return Err(::serde::de::Error::duplicate_field("mac_address")); + } + field_mac_address = Some(map.next_value()?); + } + "os_version" => { + if field_os_version.is_some() { + return Err(::serde::de::Error::duplicate_field("os_version")); + } + field_os_version = Some(map.next_value()?); + } + "device_type" => { + if field_device_type.is_some() { + return Err(::serde::de::Error::duplicate_field("device_type")); + } + field_device_type = Some(map.next_value()?); + } + "client_version" => { + if field_client_version.is_some() { + return Err(::serde::de::Error::duplicate_field("client_version")); + } + field_client_version = Some(map.next_value()?); + } + "legacy_uniq_id" => { + if field_legacy_uniq_id.is_some() { + return Err(::serde::de::Error::duplicate_field("legacy_uniq_id")); + } + field_legacy_uniq_id = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -48544,17 +70414,21 @@ impl GovernancePolicyAddFolderFailedDetails { } } } - if optional && nothing { - return Ok(None); - } - let result = GovernancePolicyAddFolderFailedDetails { - governance_policy_id: field_governance_policy_id.ok_or_else(|| ::serde::de::Error::missing_field("governance_policy_id"))?, - name: field_name.ok_or_else(|| ::serde::de::Error::missing_field("name"))?, - folder: field_folder.ok_or_else(|| ::serde::de::Error::missing_field("folder"))?, - policy_type: field_policy_type.and_then(Option::flatten), - reason: field_reason.and_then(Option::flatten), + let result = LegacyDeviceSessionLogInfo { + ip_address: field_ip_address.and_then(Option::flatten), + created: field_created.and_then(Option::flatten), + updated: field_updated.and_then(Option::flatten), + session_info: field_session_info.and_then(Option::flatten), + display_name: field_display_name.and_then(Option::flatten), + is_emm_managed: field_is_emm_managed.and_then(Option::flatten), + platform: field_platform.and_then(Option::flatten), + mac_address: field_mac_address.and_then(Option::flatten), + os_version: field_os_version.and_then(Option::flatten), + device_type: field_device_type.and_then(Option::flatten), + client_version: field_client_version.and_then(Option::flatten), + legacy_uniq_id: field_legacy_uniq_id.and_then(Option::flatten), }; - Ok(Some(result)) + Ok(result) } pub(crate) fn internal_serialize( @@ -48562,200 +70436,142 @@ impl GovernancePolicyAddFolderFailedDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("governance_policy_id", &self.governance_policy_id)?; - s.serialize_field("name", &self.name)?; - s.serialize_field("folder", &self.folder)?; - if let Some(val) = &self.policy_type { - s.serialize_field("policy_type", val)?; + if let Some(val) = &self.ip_address { + s.serialize_field("ip_address", val)?; } - if let Some(val) = &self.reason { - s.serialize_field("reason", val)?; + if let Some(val) = &self.created { + s.serialize_field("created", val)?; } - Ok(()) - } -} - -impl<'de> ::serde::de::Deserialize<'de> for GovernancePolicyAddFolderFailedDetails { - fn deserialize>(deserializer: D) -> Result { - // struct deserializer - use serde::de::{MapAccess, Visitor}; - struct StructVisitor; - impl<'de> Visitor<'de> for StructVisitor { - type Value = GovernancePolicyAddFolderFailedDetails; - fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a GovernancePolicyAddFolderFailedDetails struct") - } - fn visit_map>(self, map: V) -> Result { - GovernancePolicyAddFolderFailedDetails::internal_deserialize(map) - } + if let Some(val) = &self.updated { + s.serialize_field("updated", val)?; } - deserializer.deserialize_struct("GovernancePolicyAddFolderFailedDetails", GOVERNANCE_POLICY_ADD_FOLDER_FAILED_DETAILS_FIELDS, StructVisitor) - } -} - -impl ::serde::ser::Serialize for GovernancePolicyAddFolderFailedDetails { - fn serialize(&self, serializer: S) -> Result { - // struct serializer - use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("GovernancePolicyAddFolderFailedDetails", 5)?; - self.internal_serialize::(&mut s)?; - s.end() - } -} - -#[derive(Debug, Clone, PartialEq, Eq)] -#[non_exhaustive] // structs may have more fields added in the future. -pub struct GovernancePolicyAddFolderFailedType { - pub description: String, -} - -impl GovernancePolicyAddFolderFailedType { - pub fn new(description: String) -> Self { - GovernancePolicyAddFolderFailedType { - description, + if let Some(val) = &self.session_info { + s.serialize_field("session_info", val)?; } - } -} - -const GOVERNANCE_POLICY_ADD_FOLDER_FAILED_TYPE_FIELDS: &[&str] = &["description"]; -impl GovernancePolicyAddFolderFailedType { - pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( - map: V, - ) -> Result { - Self::internal_deserialize_opt(map, false).map(Option::unwrap) - } - - pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( - mut map: V, - optional: bool, - ) -> Result, V::Error> { - let mut field_description = None; - let mut nothing = true; - while let Some(key) = map.next_key::<&str>()? { - nothing = false; - match key { - "description" => { - if field_description.is_some() { - return Err(::serde::de::Error::duplicate_field("description")); - } - field_description = Some(map.next_value()?); - } - _ => { - // unknown field allowed and ignored - map.next_value::<::serde_json::Value>()?; - } - } + if let Some(val) = &self.display_name { + s.serialize_field("display_name", val)?; } - if optional && nothing { - return Ok(None); + if let Some(val) = &self.is_emm_managed { + s.serialize_field("is_emm_managed", val)?; + } + if let Some(val) = &self.platform { + s.serialize_field("platform", val)?; + } + if let Some(val) = &self.mac_address { + s.serialize_field("mac_address", val)?; + } + if let Some(val) = &self.os_version { + s.serialize_field("os_version", val)?; + } + if let Some(val) = &self.device_type { + s.serialize_field("device_type", val)?; + } + if let Some(val) = &self.client_version { + s.serialize_field("client_version", val)?; + } + if let Some(val) = &self.legacy_uniq_id { + s.serialize_field("legacy_uniq_id", val)?; } - let result = GovernancePolicyAddFolderFailedType { - description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, - }; - Ok(Some(result)) - } - - pub(crate) fn internal_serialize( - &self, - s: &mut S::SerializeStruct, - ) -> Result<(), S::Error> { - use serde::ser::SerializeStruct; - s.serialize_field("description", &self.description)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for GovernancePolicyAddFolderFailedType { +impl<'de> ::serde::de::Deserialize<'de> for LegacyDeviceSessionLogInfo { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = GovernancePolicyAddFolderFailedType; + type Value = LegacyDeviceSessionLogInfo; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a GovernancePolicyAddFolderFailedType struct") + f.write_str("a LegacyDeviceSessionLogInfo struct") } fn visit_map>(self, map: V) -> Result { - GovernancePolicyAddFolderFailedType::internal_deserialize(map) + LegacyDeviceSessionLogInfo::internal_deserialize(map) } } - deserializer.deserialize_struct("GovernancePolicyAddFolderFailedType", GOVERNANCE_POLICY_ADD_FOLDER_FAILED_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("LegacyDeviceSessionLogInfo", LEGACY_DEVICE_SESSION_LOG_INFO_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for GovernancePolicyAddFolderFailedType { +impl ::serde::ser::Serialize for LegacyDeviceSessionLogInfo { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("GovernancePolicyAddFolderFailedType", 1)?; + let mut s = serializer.serialize_struct("LegacyDeviceSessionLogInfo", 12)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Added folders to policy. +// struct extends polymorphic struct DeviceSessionLogInfo +impl From for DeviceSessionLogInfo { + fn from(subtype: LegacyDeviceSessionLogInfo) -> Self { + DeviceSessionLogInfo::LegacyDeviceSession(subtype) + } +} +/// Activated a hold. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct GovernancePolicyAddFoldersDetails { - /// Policy ID. - pub governance_policy_id: String, - /// Policy name. +pub struct LegalHoldsActivateAHoldDetails { + /// Hold ID. + pub legal_hold_id: String, + /// Hold name. pub name: String, - /// Policy type. - pub policy_type: Option, - /// Folders. - pub folders: Option>, + /// Hold start date. + pub start_date: crate::types::common::DropboxTimestamp, + /// Hold end date. + pub end_date: Option, } -impl GovernancePolicyAddFoldersDetails { - pub fn new(governance_policy_id: String, name: String) -> Self { - GovernancePolicyAddFoldersDetails { - governance_policy_id, +impl LegalHoldsActivateAHoldDetails { + pub fn new( + legal_hold_id: String, + name: String, + start_date: crate::types::common::DropboxTimestamp, + ) -> Self { + LegalHoldsActivateAHoldDetails { + legal_hold_id, name, - policy_type: None, - folders: None, + start_date, + end_date: None, } } - pub fn with_policy_type(mut self, value: PolicyType) -> Self { - self.policy_type = Some(value); - self - } - - pub fn with_folders(mut self, value: Vec) -> Self { - self.folders = Some(value); - self - } -} - -const GOVERNANCE_POLICY_ADD_FOLDERS_DETAILS_FIELDS: &[&str] = &["governance_policy_id", - "name", - "policy_type", - "folders"]; -impl GovernancePolicyAddFoldersDetails { + pub fn with_end_date(mut self, value: crate::types::common::DropboxTimestamp) -> Self { + self.end_date = Some(value); + self + } +} + +const LEGAL_HOLDS_ACTIVATE_A_HOLD_DETAILS_FIELDS: &[&str] = &["legal_hold_id", + "name", + "start_date", + "end_date"]; +impl LegalHoldsActivateAHoldDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_governance_policy_id = None; + ) -> Result, V::Error> { + let mut field_legal_hold_id = None; let mut field_name = None; - let mut field_policy_type = None; - let mut field_folders = None; + let mut field_start_date = None; + let mut field_end_date = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "governance_policy_id" => { - if field_governance_policy_id.is_some() { - return Err(::serde::de::Error::duplicate_field("governance_policy_id")); + "legal_hold_id" => { + if field_legal_hold_id.is_some() { + return Err(::serde::de::Error::duplicate_field("legal_hold_id")); } - field_governance_policy_id = Some(map.next_value()?); + field_legal_hold_id = Some(map.next_value()?); } "name" => { if field_name.is_some() { @@ -48763,17 +70579,17 @@ impl GovernancePolicyAddFoldersDetails { } field_name = Some(map.next_value()?); } - "policy_type" => { - if field_policy_type.is_some() { - return Err(::serde::de::Error::duplicate_field("policy_type")); + "start_date" => { + if field_start_date.is_some() { + return Err(::serde::de::Error::duplicate_field("start_date")); } - field_policy_type = Some(map.next_value()?); + field_start_date = Some(map.next_value()?); } - "folders" => { - if field_folders.is_some() { - return Err(::serde::de::Error::duplicate_field("folders")); + "end_date" => { + if field_end_date.is_some() { + return Err(::serde::de::Error::duplicate_field("end_date")); } - field_folders = Some(map.next_value()?); + field_end_date = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -48784,11 +70600,11 @@ impl GovernancePolicyAddFoldersDetails { if optional && nothing { return Ok(None); } - let result = GovernancePolicyAddFoldersDetails { - governance_policy_id: field_governance_policy_id.ok_or_else(|| ::serde::de::Error::missing_field("governance_policy_id"))?, + let result = LegalHoldsActivateAHoldDetails { + legal_hold_id: field_legal_hold_id.ok_or_else(|| ::serde::de::Error::missing_field("legal_hold_id"))?, name: field_name.ok_or_else(|| ::serde::de::Error::missing_field("name"))?, - policy_type: field_policy_type.and_then(Option::flatten), - folders: field_folders.and_then(Option::flatten), + start_date: field_start_date.ok_or_else(|| ::serde::de::Error::missing_field("start_date"))?, + end_date: field_end_date.and_then(Option::flatten), }; Ok(Some(result)) } @@ -48798,41 +70614,39 @@ impl GovernancePolicyAddFoldersDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("governance_policy_id", &self.governance_policy_id)?; + s.serialize_field("legal_hold_id", &self.legal_hold_id)?; s.serialize_field("name", &self.name)?; - if let Some(val) = &self.policy_type { - s.serialize_field("policy_type", val)?; - } - if let Some(val) = &self.folders { - s.serialize_field("folders", val)?; + s.serialize_field("start_date", &self.start_date)?; + if let Some(val) = &self.end_date { + s.serialize_field("end_date", val)?; } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for GovernancePolicyAddFoldersDetails { +impl<'de> ::serde::de::Deserialize<'de> for LegalHoldsActivateAHoldDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = GovernancePolicyAddFoldersDetails; + type Value = LegalHoldsActivateAHoldDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a GovernancePolicyAddFoldersDetails struct") + f.write_str("a LegalHoldsActivateAHoldDetails struct") } fn visit_map>(self, map: V) -> Result { - GovernancePolicyAddFoldersDetails::internal_deserialize(map) + LegalHoldsActivateAHoldDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("GovernancePolicyAddFoldersDetails", GOVERNANCE_POLICY_ADD_FOLDERS_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("LegalHoldsActivateAHoldDetails", LEGAL_HOLDS_ACTIVATE_A_HOLD_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for GovernancePolicyAddFoldersDetails { +impl ::serde::ser::Serialize for LegalHoldsActivateAHoldDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("GovernancePolicyAddFoldersDetails", 4)?; + let mut s = serializer.serialize_struct("LegalHoldsActivateAHoldDetails", 4)?; self.internal_serialize::(&mut s)?; s.end() } @@ -48840,30 +70654,30 @@ impl ::serde::ser::Serialize for GovernancePolicyAddFoldersDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct GovernancePolicyAddFoldersType { +pub struct LegalHoldsActivateAHoldType { pub description: String, } -impl GovernancePolicyAddFoldersType { +impl LegalHoldsActivateAHoldType { pub fn new(description: String) -> Self { - GovernancePolicyAddFoldersType { + LegalHoldsActivateAHoldType { description, } } } -const GOVERNANCE_POLICY_ADD_FOLDERS_TYPE_FIELDS: &[&str] = &["description"]; -impl GovernancePolicyAddFoldersType { +const LEGAL_HOLDS_ACTIVATE_A_HOLD_TYPE_FIELDS: &[&str] = &["description"]; +impl LegalHoldsActivateAHoldType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -48884,7 +70698,7 @@ impl GovernancePolicyAddFoldersType { if optional && nothing { return Ok(None); } - let result = GovernancePolicyAddFoldersType { + let result = LegalHoldsActivateAHoldType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -48900,96 +70714,77 @@ impl GovernancePolicyAddFoldersType { } } -impl<'de> ::serde::de::Deserialize<'de> for GovernancePolicyAddFoldersType { +impl<'de> ::serde::de::Deserialize<'de> for LegalHoldsActivateAHoldType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = GovernancePolicyAddFoldersType; + type Value = LegalHoldsActivateAHoldType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a GovernancePolicyAddFoldersType struct") + f.write_str("a LegalHoldsActivateAHoldType struct") } fn visit_map>(self, map: V) -> Result { - GovernancePolicyAddFoldersType::internal_deserialize(map) + LegalHoldsActivateAHoldType::internal_deserialize(map) } } - deserializer.deserialize_struct("GovernancePolicyAddFoldersType", GOVERNANCE_POLICY_ADD_FOLDERS_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("LegalHoldsActivateAHoldType", LEGAL_HOLDS_ACTIVATE_A_HOLD_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for GovernancePolicyAddFoldersType { +impl ::serde::ser::Serialize for LegalHoldsActivateAHoldType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("GovernancePolicyAddFoldersType", 1)?; + let mut s = serializer.serialize_struct("LegalHoldsActivateAHoldType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Content disposed. +/// Added members to a hold. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct GovernancePolicyContentDisposedDetails { - /// Policy ID. - pub governance_policy_id: String, - /// Policy name. +pub struct LegalHoldsAddMembersDetails { + /// Hold ID. + pub legal_hold_id: String, + /// Hold name. pub name: String, - /// Disposition type. - pub disposition_type: DispositionActionType, - /// Policy type. - pub policy_type: Option, } -impl GovernancePolicyContentDisposedDetails { - pub fn new( - governance_policy_id: String, - name: String, - disposition_type: DispositionActionType, - ) -> Self { - GovernancePolicyContentDisposedDetails { - governance_policy_id, +impl LegalHoldsAddMembersDetails { + pub fn new(legal_hold_id: String, name: String) -> Self { + LegalHoldsAddMembersDetails { + legal_hold_id, name, - disposition_type, - policy_type: None, } } - - pub fn with_policy_type(mut self, value: PolicyType) -> Self { - self.policy_type = Some(value); - self - } } -const GOVERNANCE_POLICY_CONTENT_DISPOSED_DETAILS_FIELDS: &[&str] = &["governance_policy_id", - "name", - "disposition_type", - "policy_type"]; -impl GovernancePolicyContentDisposedDetails { +const LEGAL_HOLDS_ADD_MEMBERS_DETAILS_FIELDS: &[&str] = &["legal_hold_id", + "name"]; +impl LegalHoldsAddMembersDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_governance_policy_id = None; + ) -> Result, V::Error> { + let mut field_legal_hold_id = None; let mut field_name = None; - let mut field_disposition_type = None; - let mut field_policy_type = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "governance_policy_id" => { - if field_governance_policy_id.is_some() { - return Err(::serde::de::Error::duplicate_field("governance_policy_id")); + "legal_hold_id" => { + if field_legal_hold_id.is_some() { + return Err(::serde::de::Error::duplicate_field("legal_hold_id")); } - field_governance_policy_id = Some(map.next_value()?); + field_legal_hold_id = Some(map.next_value()?); } "name" => { if field_name.is_some() { @@ -48997,18 +70792,6 @@ impl GovernancePolicyContentDisposedDetails { } field_name = Some(map.next_value()?); } - "disposition_type" => { - if field_disposition_type.is_some() { - return Err(::serde::de::Error::duplicate_field("disposition_type")); - } - field_disposition_type = Some(map.next_value()?); - } - "policy_type" => { - if field_policy_type.is_some() { - return Err(::serde::de::Error::duplicate_field("policy_type")); - } - field_policy_type = Some(map.next_value()?); - } _ => { // unknown field allowed and ignored map.next_value::<::serde_json::Value>()?; @@ -49018,11 +70801,9 @@ impl GovernancePolicyContentDisposedDetails { if optional && nothing { return Ok(None); } - let result = GovernancePolicyContentDisposedDetails { - governance_policy_id: field_governance_policy_id.ok_or_else(|| ::serde::de::Error::missing_field("governance_policy_id"))?, + let result = LegalHoldsAddMembersDetails { + legal_hold_id: field_legal_hold_id.ok_or_else(|| ::serde::de::Error::missing_field("legal_hold_id"))?, name: field_name.ok_or_else(|| ::serde::de::Error::missing_field("name"))?, - disposition_type: field_disposition_type.ok_or_else(|| ::serde::de::Error::missing_field("disposition_type"))?, - policy_type: field_policy_type.and_then(Option::flatten), }; Ok(Some(result)) } @@ -49032,39 +70813,35 @@ impl GovernancePolicyContentDisposedDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("governance_policy_id", &self.governance_policy_id)?; + s.serialize_field("legal_hold_id", &self.legal_hold_id)?; s.serialize_field("name", &self.name)?; - s.serialize_field("disposition_type", &self.disposition_type)?; - if let Some(val) = &self.policy_type { - s.serialize_field("policy_type", val)?; - } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for GovernancePolicyContentDisposedDetails { +impl<'de> ::serde::de::Deserialize<'de> for LegalHoldsAddMembersDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = GovernancePolicyContentDisposedDetails; + type Value = LegalHoldsAddMembersDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a GovernancePolicyContentDisposedDetails struct") + f.write_str("a LegalHoldsAddMembersDetails struct") } fn visit_map>(self, map: V) -> Result { - GovernancePolicyContentDisposedDetails::internal_deserialize(map) + LegalHoldsAddMembersDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("GovernancePolicyContentDisposedDetails", GOVERNANCE_POLICY_CONTENT_DISPOSED_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("LegalHoldsAddMembersDetails", LEGAL_HOLDS_ADD_MEMBERS_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for GovernancePolicyContentDisposedDetails { +impl ::serde::ser::Serialize for LegalHoldsAddMembersDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("GovernancePolicyContentDisposedDetails", 4)?; + let mut s = serializer.serialize_struct("LegalHoldsAddMembersDetails", 2)?; self.internal_serialize::(&mut s)?; s.end() } @@ -49072,30 +70849,30 @@ impl ::serde::ser::Serialize for GovernancePolicyContentDisposedDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct GovernancePolicyContentDisposedType { +pub struct LegalHoldsAddMembersType { pub description: String, } -impl GovernancePolicyContentDisposedType { +impl LegalHoldsAddMembersType { pub fn new(description: String) -> Self { - GovernancePolicyContentDisposedType { + LegalHoldsAddMembersType { description, } } } -const GOVERNANCE_POLICY_CONTENT_DISPOSED_TYPE_FIELDS: &[&str] = &["description"]; -impl GovernancePolicyContentDisposedType { +const LEGAL_HOLDS_ADD_MEMBERS_TYPE_FIELDS: &[&str] = &["description"]; +impl LegalHoldsAddMembersType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -49116,7 +70893,7 @@ impl GovernancePolicyContentDisposedType { if optional && nothing { return Ok(None); } - let result = GovernancePolicyContentDisposedType { + let result = LegalHoldsAddMembersType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -49132,102 +70909,92 @@ impl GovernancePolicyContentDisposedType { } } -impl<'de> ::serde::de::Deserialize<'de> for GovernancePolicyContentDisposedType { +impl<'de> ::serde::de::Deserialize<'de> for LegalHoldsAddMembersType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = GovernancePolicyContentDisposedType; + type Value = LegalHoldsAddMembersType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a GovernancePolicyContentDisposedType struct") + f.write_str("a LegalHoldsAddMembersType struct") } fn visit_map>(self, map: V) -> Result { - GovernancePolicyContentDisposedType::internal_deserialize(map) + LegalHoldsAddMembersType::internal_deserialize(map) } } - deserializer.deserialize_struct("GovernancePolicyContentDisposedType", GOVERNANCE_POLICY_CONTENT_DISPOSED_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("LegalHoldsAddMembersType", LEGAL_HOLDS_ADD_MEMBERS_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for GovernancePolicyContentDisposedType { +impl ::serde::ser::Serialize for LegalHoldsAddMembersType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("GovernancePolicyContentDisposedType", 1)?; + let mut s = serializer.serialize_struct("LegalHoldsAddMembersType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Activated a new policy. +/// Edited details for a hold. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct GovernancePolicyCreateDetails { - /// Policy ID. - pub governance_policy_id: String, - /// Policy name. +pub struct LegalHoldsChangeHoldDetailsDetails { + /// Hold ID. + pub legal_hold_id: String, + /// Hold name. pub name: String, - /// Duration in days. - pub duration: DurationLogInfo, - /// Policy type. - pub policy_type: Option, - /// Folders. - pub folders: Option>, + /// Previous details. + pub previous_value: String, + /// New details. + pub new_value: String, } -impl GovernancePolicyCreateDetails { - pub fn new(governance_policy_id: String, name: String, duration: DurationLogInfo) -> Self { - GovernancePolicyCreateDetails { - governance_policy_id, +impl LegalHoldsChangeHoldDetailsDetails { + pub fn new( + legal_hold_id: String, + name: String, + previous_value: String, + new_value: String, + ) -> Self { + LegalHoldsChangeHoldDetailsDetails { + legal_hold_id, name, - duration, - policy_type: None, - folders: None, + previous_value, + new_value, } } - - pub fn with_policy_type(mut self, value: PolicyType) -> Self { - self.policy_type = Some(value); - self - } - - pub fn with_folders(mut self, value: Vec) -> Self { - self.folders = Some(value); - self - } } -const GOVERNANCE_POLICY_CREATE_DETAILS_FIELDS: &[&str] = &["governance_policy_id", - "name", - "duration", - "policy_type", - "folders"]; -impl GovernancePolicyCreateDetails { +const LEGAL_HOLDS_CHANGE_HOLD_DETAILS_DETAILS_FIELDS: &[&str] = &["legal_hold_id", + "name", + "previous_value", + "new_value"]; +impl LegalHoldsChangeHoldDetailsDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_governance_policy_id = None; + ) -> Result, V::Error> { + let mut field_legal_hold_id = None; let mut field_name = None; - let mut field_duration = None; - let mut field_policy_type = None; - let mut field_folders = None; + let mut field_previous_value = None; + let mut field_new_value = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "governance_policy_id" => { - if field_governance_policy_id.is_some() { - return Err(::serde::de::Error::duplicate_field("governance_policy_id")); + "legal_hold_id" => { + if field_legal_hold_id.is_some() { + return Err(::serde::de::Error::duplicate_field("legal_hold_id")); } - field_governance_policy_id = Some(map.next_value()?); + field_legal_hold_id = Some(map.next_value()?); } "name" => { if field_name.is_some() { @@ -49235,23 +71002,17 @@ impl GovernancePolicyCreateDetails { } field_name = Some(map.next_value()?); } - "duration" => { - if field_duration.is_some() { - return Err(::serde::de::Error::duplicate_field("duration")); - } - field_duration = Some(map.next_value()?); - } - "policy_type" => { - if field_policy_type.is_some() { - return Err(::serde::de::Error::duplicate_field("policy_type")); + "previous_value" => { + if field_previous_value.is_some() { + return Err(::serde::de::Error::duplicate_field("previous_value")); } - field_policy_type = Some(map.next_value()?); + field_previous_value = Some(map.next_value()?); } - "folders" => { - if field_folders.is_some() { - return Err(::serde::de::Error::duplicate_field("folders")); + "new_value" => { + if field_new_value.is_some() { + return Err(::serde::de::Error::duplicate_field("new_value")); } - field_folders = Some(map.next_value()?); + field_new_value = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -49262,12 +71023,11 @@ impl GovernancePolicyCreateDetails { if optional && nothing { return Ok(None); } - let result = GovernancePolicyCreateDetails { - governance_policy_id: field_governance_policy_id.ok_or_else(|| ::serde::de::Error::missing_field("governance_policy_id"))?, + let result = LegalHoldsChangeHoldDetailsDetails { + legal_hold_id: field_legal_hold_id.ok_or_else(|| ::serde::de::Error::missing_field("legal_hold_id"))?, name: field_name.ok_or_else(|| ::serde::de::Error::missing_field("name"))?, - duration: field_duration.ok_or_else(|| ::serde::de::Error::missing_field("duration"))?, - policy_type: field_policy_type.and_then(Option::flatten), - folders: field_folders.and_then(Option::flatten), + previous_value: field_previous_value.ok_or_else(|| ::serde::de::Error::missing_field("previous_value"))?, + new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, }; Ok(Some(result)) } @@ -49277,42 +71037,37 @@ impl GovernancePolicyCreateDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("governance_policy_id", &self.governance_policy_id)?; + s.serialize_field("legal_hold_id", &self.legal_hold_id)?; s.serialize_field("name", &self.name)?; - s.serialize_field("duration", &self.duration)?; - if let Some(val) = &self.policy_type { - s.serialize_field("policy_type", val)?; - } - if let Some(val) = &self.folders { - s.serialize_field("folders", val)?; - } + s.serialize_field("previous_value", &self.previous_value)?; + s.serialize_field("new_value", &self.new_value)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for GovernancePolicyCreateDetails { +impl<'de> ::serde::de::Deserialize<'de> for LegalHoldsChangeHoldDetailsDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = GovernancePolicyCreateDetails; + type Value = LegalHoldsChangeHoldDetailsDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a GovernancePolicyCreateDetails struct") + f.write_str("a LegalHoldsChangeHoldDetailsDetails struct") } fn visit_map>(self, map: V) -> Result { - GovernancePolicyCreateDetails::internal_deserialize(map) + LegalHoldsChangeHoldDetailsDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("GovernancePolicyCreateDetails", GOVERNANCE_POLICY_CREATE_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("LegalHoldsChangeHoldDetailsDetails", LEGAL_HOLDS_CHANGE_HOLD_DETAILS_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for GovernancePolicyCreateDetails { +impl ::serde::ser::Serialize for LegalHoldsChangeHoldDetailsDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("GovernancePolicyCreateDetails", 5)?; + let mut s = serializer.serialize_struct("LegalHoldsChangeHoldDetailsDetails", 4)?; self.internal_serialize::(&mut s)?; s.end() } @@ -49320,30 +71075,30 @@ impl ::serde::ser::Serialize for GovernancePolicyCreateDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct GovernancePolicyCreateType { +pub struct LegalHoldsChangeHoldDetailsType { pub description: String, } -impl GovernancePolicyCreateType { +impl LegalHoldsChangeHoldDetailsType { pub fn new(description: String) -> Self { - GovernancePolicyCreateType { + LegalHoldsChangeHoldDetailsType { description, } } } -const GOVERNANCE_POLICY_CREATE_TYPE_FIELDS: &[&str] = &["description"]; -impl GovernancePolicyCreateType { +const LEGAL_HOLDS_CHANGE_HOLD_DETAILS_TYPE_FIELDS: &[&str] = &["description"]; +impl LegalHoldsChangeHoldDetailsType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -49364,7 +71119,7 @@ impl GovernancePolicyCreateType { if optional && nothing { return Ok(None); } - let result = GovernancePolicyCreateType { + let result = LegalHoldsChangeHoldDetailsType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -49380,99 +71135,94 @@ impl GovernancePolicyCreateType { } } -impl<'de> ::serde::de::Deserialize<'de> for GovernancePolicyCreateType { +impl<'de> ::serde::de::Deserialize<'de> for LegalHoldsChangeHoldDetailsType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = GovernancePolicyCreateType; + type Value = LegalHoldsChangeHoldDetailsType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a GovernancePolicyCreateType struct") + f.write_str("a LegalHoldsChangeHoldDetailsType struct") } fn visit_map>(self, map: V) -> Result { - GovernancePolicyCreateType::internal_deserialize(map) + LegalHoldsChangeHoldDetailsType::internal_deserialize(map) } } - deserializer.deserialize_struct("GovernancePolicyCreateType", GOVERNANCE_POLICY_CREATE_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("LegalHoldsChangeHoldDetailsType", LEGAL_HOLDS_CHANGE_HOLD_DETAILS_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for GovernancePolicyCreateType { +impl ::serde::ser::Serialize for LegalHoldsChangeHoldDetailsType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("GovernancePolicyCreateType", 1)?; + let mut s = serializer.serialize_struct("LegalHoldsChangeHoldDetailsType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Deleted a policy. +/// Renamed a hold. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct GovernancePolicyDeleteDetails { - /// Policy ID. - pub governance_policy_id: String, - /// Policy name. - pub name: String, - /// Policy type. - pub policy_type: Option, +pub struct LegalHoldsChangeHoldNameDetails { + /// Hold ID. + pub legal_hold_id: String, + /// Previous Name. + pub previous_value: String, + /// New Name. + pub new_value: String, } -impl GovernancePolicyDeleteDetails { - pub fn new(governance_policy_id: String, name: String) -> Self { - GovernancePolicyDeleteDetails { - governance_policy_id, - name, - policy_type: None, +impl LegalHoldsChangeHoldNameDetails { + pub fn new(legal_hold_id: String, previous_value: String, new_value: String) -> Self { + LegalHoldsChangeHoldNameDetails { + legal_hold_id, + previous_value, + new_value, } } - - pub fn with_policy_type(mut self, value: PolicyType) -> Self { - self.policy_type = Some(value); - self - } } -const GOVERNANCE_POLICY_DELETE_DETAILS_FIELDS: &[&str] = &["governance_policy_id", - "name", - "policy_type"]; -impl GovernancePolicyDeleteDetails { +const LEGAL_HOLDS_CHANGE_HOLD_NAME_DETAILS_FIELDS: &[&str] = &["legal_hold_id", + "previous_value", + "new_value"]; +impl LegalHoldsChangeHoldNameDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_governance_policy_id = None; - let mut field_name = None; - let mut field_policy_type = None; + ) -> Result, V::Error> { + let mut field_legal_hold_id = None; + let mut field_previous_value = None; + let mut field_new_value = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "governance_policy_id" => { - if field_governance_policy_id.is_some() { - return Err(::serde::de::Error::duplicate_field("governance_policy_id")); + "legal_hold_id" => { + if field_legal_hold_id.is_some() { + return Err(::serde::de::Error::duplicate_field("legal_hold_id")); } - field_governance_policy_id = Some(map.next_value()?); + field_legal_hold_id = Some(map.next_value()?); } - "name" => { - if field_name.is_some() { - return Err(::serde::de::Error::duplicate_field("name")); + "previous_value" => { + if field_previous_value.is_some() { + return Err(::serde::de::Error::duplicate_field("previous_value")); } - field_name = Some(map.next_value()?); + field_previous_value = Some(map.next_value()?); } - "policy_type" => { - if field_policy_type.is_some() { - return Err(::serde::de::Error::duplicate_field("policy_type")); + "new_value" => { + if field_new_value.is_some() { + return Err(::serde::de::Error::duplicate_field("new_value")); } - field_policy_type = Some(map.next_value()?); + field_new_value = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -49483,10 +71233,10 @@ impl GovernancePolicyDeleteDetails { if optional && nothing { return Ok(None); } - let result = GovernancePolicyDeleteDetails { - governance_policy_id: field_governance_policy_id.ok_or_else(|| ::serde::de::Error::missing_field("governance_policy_id"))?, - name: field_name.ok_or_else(|| ::serde::de::Error::missing_field("name"))?, - policy_type: field_policy_type.and_then(Option::flatten), + let result = LegalHoldsChangeHoldNameDetails { + legal_hold_id: field_legal_hold_id.ok_or_else(|| ::serde::de::Error::missing_field("legal_hold_id"))?, + previous_value: field_previous_value.ok_or_else(|| ::serde::de::Error::missing_field("previous_value"))?, + new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, }; Ok(Some(result)) } @@ -49496,38 +71246,36 @@ impl GovernancePolicyDeleteDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("governance_policy_id", &self.governance_policy_id)?; - s.serialize_field("name", &self.name)?; - if let Some(val) = &self.policy_type { - s.serialize_field("policy_type", val)?; - } + s.serialize_field("legal_hold_id", &self.legal_hold_id)?; + s.serialize_field("previous_value", &self.previous_value)?; + s.serialize_field("new_value", &self.new_value)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for GovernancePolicyDeleteDetails { +impl<'de> ::serde::de::Deserialize<'de> for LegalHoldsChangeHoldNameDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = GovernancePolicyDeleteDetails; + type Value = LegalHoldsChangeHoldNameDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a GovernancePolicyDeleteDetails struct") + f.write_str("a LegalHoldsChangeHoldNameDetails struct") } fn visit_map>(self, map: V) -> Result { - GovernancePolicyDeleteDetails::internal_deserialize(map) + LegalHoldsChangeHoldNameDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("GovernancePolicyDeleteDetails", GOVERNANCE_POLICY_DELETE_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("LegalHoldsChangeHoldNameDetails", LEGAL_HOLDS_CHANGE_HOLD_NAME_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for GovernancePolicyDeleteDetails { +impl ::serde::ser::Serialize for LegalHoldsChangeHoldNameDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("GovernancePolicyDeleteDetails", 3)?; + let mut s = serializer.serialize_struct("LegalHoldsChangeHoldNameDetails", 3)?; self.internal_serialize::(&mut s)?; s.end() } @@ -49535,30 +71283,30 @@ impl ::serde::ser::Serialize for GovernancePolicyDeleteDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct GovernancePolicyDeleteType { +pub struct LegalHoldsChangeHoldNameType { pub description: String, } -impl GovernancePolicyDeleteType { +impl LegalHoldsChangeHoldNameType { pub fn new(description: String) -> Self { - GovernancePolicyDeleteType { + LegalHoldsChangeHoldNameType { description, } } } -const GOVERNANCE_POLICY_DELETE_TYPE_FIELDS: &[&str] = &["description"]; -impl GovernancePolicyDeleteType { +const LEGAL_HOLDS_CHANGE_HOLD_NAME_TYPE_FIELDS: &[&str] = &["description"]; +impl LegalHoldsChangeHoldNameType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -49579,7 +71327,7 @@ impl GovernancePolicyDeleteType { if optional && nothing { return Ok(None); } - let result = GovernancePolicyDeleteType { + let result = LegalHoldsChangeHoldNameType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -49595,108 +71343,87 @@ impl GovernancePolicyDeleteType { } } -impl<'de> ::serde::de::Deserialize<'de> for GovernancePolicyDeleteType { +impl<'de> ::serde::de::Deserialize<'de> for LegalHoldsChangeHoldNameType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = GovernancePolicyDeleteType; + type Value = LegalHoldsChangeHoldNameType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a GovernancePolicyDeleteType struct") + f.write_str("a LegalHoldsChangeHoldNameType struct") } fn visit_map>(self, map: V) -> Result { - GovernancePolicyDeleteType::internal_deserialize(map) + LegalHoldsChangeHoldNameType::internal_deserialize(map) } } - deserializer.deserialize_struct("GovernancePolicyDeleteType", GOVERNANCE_POLICY_DELETE_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("LegalHoldsChangeHoldNameType", LEGAL_HOLDS_CHANGE_HOLD_NAME_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for GovernancePolicyDeleteType { +impl ::serde::ser::Serialize for LegalHoldsChangeHoldNameType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("GovernancePolicyDeleteType", 1)?; + let mut s = serializer.serialize_struct("LegalHoldsChangeHoldNameType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Edited policy. +/// Exported hold. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct GovernancePolicyEditDetailsDetails { - /// Policy ID. - pub governance_policy_id: String, - /// Policy name. +pub struct LegalHoldsExportAHoldDetails { + /// Hold ID. + pub legal_hold_id: String, + /// Hold name. pub name: String, - /// Attribute. - pub attribute: String, - /// From. - pub previous_value: String, - /// To. - pub new_value: String, - /// Policy type. - pub policy_type: Option, + /// Export name. + pub export_name: Option, } -impl GovernancePolicyEditDetailsDetails { - pub fn new( - governance_policy_id: String, - name: String, - attribute: String, - previous_value: String, - new_value: String, - ) -> Self { - GovernancePolicyEditDetailsDetails { - governance_policy_id, +impl LegalHoldsExportAHoldDetails { + pub fn new(legal_hold_id: String, name: String) -> Self { + LegalHoldsExportAHoldDetails { + legal_hold_id, name, - attribute, - previous_value, - new_value, - policy_type: None, + export_name: None, } } - pub fn with_policy_type(mut self, value: PolicyType) -> Self { - self.policy_type = Some(value); + pub fn with_export_name(mut self, value: String) -> Self { + self.export_name = Some(value); self } } -const GOVERNANCE_POLICY_EDIT_DETAILS_DETAILS_FIELDS: &[&str] = &["governance_policy_id", - "name", - "attribute", - "previous_value", - "new_value", - "policy_type"]; -impl GovernancePolicyEditDetailsDetails { +const LEGAL_HOLDS_EXPORT_A_HOLD_DETAILS_FIELDS: &[&str] = &["legal_hold_id", + "name", + "export_name"]; +impl LegalHoldsExportAHoldDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_governance_policy_id = None; + ) -> Result, V::Error> { + let mut field_legal_hold_id = None; let mut field_name = None; - let mut field_attribute = None; - let mut field_previous_value = None; - let mut field_new_value = None; - let mut field_policy_type = None; + let mut field_export_name = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "governance_policy_id" => { - if field_governance_policy_id.is_some() { - return Err(::serde::de::Error::duplicate_field("governance_policy_id")); + "legal_hold_id" => { + if field_legal_hold_id.is_some() { + return Err(::serde::de::Error::duplicate_field("legal_hold_id")); } - field_governance_policy_id = Some(map.next_value()?); + field_legal_hold_id = Some(map.next_value()?); } "name" => { if field_name.is_some() { @@ -49704,29 +71431,11 @@ impl GovernancePolicyEditDetailsDetails { } field_name = Some(map.next_value()?); } - "attribute" => { - if field_attribute.is_some() { - return Err(::serde::de::Error::duplicate_field("attribute")); - } - field_attribute = Some(map.next_value()?); - } - "previous_value" => { - if field_previous_value.is_some() { - return Err(::serde::de::Error::duplicate_field("previous_value")); - } - field_previous_value = Some(map.next_value()?); - } - "new_value" => { - if field_new_value.is_some() { - return Err(::serde::de::Error::duplicate_field("new_value")); - } - field_new_value = Some(map.next_value()?); - } - "policy_type" => { - if field_policy_type.is_some() { - return Err(::serde::de::Error::duplicate_field("policy_type")); + "export_name" => { + if field_export_name.is_some() { + return Err(::serde::de::Error::duplicate_field("export_name")); } - field_policy_type = Some(map.next_value()?); + field_export_name = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -49737,13 +71446,10 @@ impl GovernancePolicyEditDetailsDetails { if optional && nothing { return Ok(None); } - let result = GovernancePolicyEditDetailsDetails { - governance_policy_id: field_governance_policy_id.ok_or_else(|| ::serde::de::Error::missing_field("governance_policy_id"))?, + let result = LegalHoldsExportAHoldDetails { + legal_hold_id: field_legal_hold_id.ok_or_else(|| ::serde::de::Error::missing_field("legal_hold_id"))?, name: field_name.ok_or_else(|| ::serde::de::Error::missing_field("name"))?, - attribute: field_attribute.ok_or_else(|| ::serde::de::Error::missing_field("attribute"))?, - previous_value: field_previous_value.ok_or_else(|| ::serde::de::Error::missing_field("previous_value"))?, - new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, - policy_type: field_policy_type.and_then(Option::flatten), + export_name: field_export_name.and_then(Option::flatten), }; Ok(Some(result)) } @@ -49753,41 +71459,38 @@ impl GovernancePolicyEditDetailsDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("governance_policy_id", &self.governance_policy_id)?; + s.serialize_field("legal_hold_id", &self.legal_hold_id)?; s.serialize_field("name", &self.name)?; - s.serialize_field("attribute", &self.attribute)?; - s.serialize_field("previous_value", &self.previous_value)?; - s.serialize_field("new_value", &self.new_value)?; - if let Some(val) = &self.policy_type { - s.serialize_field("policy_type", val)?; + if let Some(val) = &self.export_name { + s.serialize_field("export_name", val)?; } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for GovernancePolicyEditDetailsDetails { +impl<'de> ::serde::de::Deserialize<'de> for LegalHoldsExportAHoldDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = GovernancePolicyEditDetailsDetails; + type Value = LegalHoldsExportAHoldDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a GovernancePolicyEditDetailsDetails struct") + f.write_str("a LegalHoldsExportAHoldDetails struct") } fn visit_map>(self, map: V) -> Result { - GovernancePolicyEditDetailsDetails::internal_deserialize(map) + LegalHoldsExportAHoldDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("GovernancePolicyEditDetailsDetails", GOVERNANCE_POLICY_EDIT_DETAILS_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("LegalHoldsExportAHoldDetails", LEGAL_HOLDS_EXPORT_A_HOLD_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for GovernancePolicyEditDetailsDetails { +impl ::serde::ser::Serialize for LegalHoldsExportAHoldDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("GovernancePolicyEditDetailsDetails", 6)?; + let mut s = serializer.serialize_struct("LegalHoldsExportAHoldDetails", 3)?; self.internal_serialize::(&mut s)?; s.end() } @@ -49795,30 +71498,30 @@ impl ::serde::ser::Serialize for GovernancePolicyEditDetailsDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct GovernancePolicyEditDetailsType { +pub struct LegalHoldsExportAHoldType { pub description: String, } -impl GovernancePolicyEditDetailsType { +impl LegalHoldsExportAHoldType { pub fn new(description: String) -> Self { - GovernancePolicyEditDetailsType { + LegalHoldsExportAHoldType { description, } } } -const GOVERNANCE_POLICY_EDIT_DETAILS_TYPE_FIELDS: &[&str] = &["description"]; -impl GovernancePolicyEditDetailsType { +const LEGAL_HOLDS_EXPORT_A_HOLD_TYPE_FIELDS: &[&str] = &["description"]; +impl LegalHoldsExportAHoldType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -49839,7 +71542,7 @@ impl GovernancePolicyEditDetailsType { if optional && nothing { return Ok(None); } - let result = GovernancePolicyEditDetailsType { + let result = LegalHoldsExportAHoldType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -49855,102 +71558,82 @@ impl GovernancePolicyEditDetailsType { } } -impl<'de> ::serde::de::Deserialize<'de> for GovernancePolicyEditDetailsType { +impl<'de> ::serde::de::Deserialize<'de> for LegalHoldsExportAHoldType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = GovernancePolicyEditDetailsType; + type Value = LegalHoldsExportAHoldType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a GovernancePolicyEditDetailsType struct") + f.write_str("a LegalHoldsExportAHoldType struct") } fn visit_map>(self, map: V) -> Result { - GovernancePolicyEditDetailsType::internal_deserialize(map) + LegalHoldsExportAHoldType::internal_deserialize(map) } } - deserializer.deserialize_struct("GovernancePolicyEditDetailsType", GOVERNANCE_POLICY_EDIT_DETAILS_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("LegalHoldsExportAHoldType", LEGAL_HOLDS_EXPORT_A_HOLD_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for GovernancePolicyEditDetailsType { +impl ::serde::ser::Serialize for LegalHoldsExportAHoldType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("GovernancePolicyEditDetailsType", 1)?; + let mut s = serializer.serialize_struct("LegalHoldsExportAHoldType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Changed policy duration. +/// Canceled export for a hold. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct GovernancePolicyEditDurationDetails { - /// Policy ID. - pub governance_policy_id: String, - /// Policy name. +pub struct LegalHoldsExportCancelledDetails { + /// Hold ID. + pub legal_hold_id: String, + /// Hold name. pub name: String, - /// From. - pub previous_value: DurationLogInfo, - /// To. - pub new_value: DurationLogInfo, - /// Policy type. - pub policy_type: Option, + /// Export name. + pub export_name: String, } -impl GovernancePolicyEditDurationDetails { - pub fn new( - governance_policy_id: String, - name: String, - previous_value: DurationLogInfo, - new_value: DurationLogInfo, - ) -> Self { - GovernancePolicyEditDurationDetails { - governance_policy_id, +impl LegalHoldsExportCancelledDetails { + pub fn new(legal_hold_id: String, name: String, export_name: String) -> Self { + LegalHoldsExportCancelledDetails { + legal_hold_id, name, - previous_value, - new_value, - policy_type: None, + export_name, } } - - pub fn with_policy_type(mut self, value: PolicyType) -> Self { - self.policy_type = Some(value); - self - } } -const GOVERNANCE_POLICY_EDIT_DURATION_DETAILS_FIELDS: &[&str] = &["governance_policy_id", - "name", - "previous_value", - "new_value", - "policy_type"]; -impl GovernancePolicyEditDurationDetails { +const LEGAL_HOLDS_EXPORT_CANCELLED_DETAILS_FIELDS: &[&str] = &["legal_hold_id", + "name", + "export_name"]; +impl LegalHoldsExportCancelledDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_governance_policy_id = None; + ) -> Result, V::Error> { + let mut field_legal_hold_id = None; let mut field_name = None; - let mut field_previous_value = None; - let mut field_new_value = None; - let mut field_policy_type = None; + let mut field_export_name = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "governance_policy_id" => { - if field_governance_policy_id.is_some() { - return Err(::serde::de::Error::duplicate_field("governance_policy_id")); + "legal_hold_id" => { + if field_legal_hold_id.is_some() { + return Err(::serde::de::Error::duplicate_field("legal_hold_id")); } - field_governance_policy_id = Some(map.next_value()?); + field_legal_hold_id = Some(map.next_value()?); } "name" => { if field_name.is_some() { @@ -49958,23 +71641,11 @@ impl GovernancePolicyEditDurationDetails { } field_name = Some(map.next_value()?); } - "previous_value" => { - if field_previous_value.is_some() { - return Err(::serde::de::Error::duplicate_field("previous_value")); - } - field_previous_value = Some(map.next_value()?); - } - "new_value" => { - if field_new_value.is_some() { - return Err(::serde::de::Error::duplicate_field("new_value")); - } - field_new_value = Some(map.next_value()?); - } - "policy_type" => { - if field_policy_type.is_some() { - return Err(::serde::de::Error::duplicate_field("policy_type")); + "export_name" => { + if field_export_name.is_some() { + return Err(::serde::de::Error::duplicate_field("export_name")); } - field_policy_type = Some(map.next_value()?); + field_export_name = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -49985,12 +71656,10 @@ impl GovernancePolicyEditDurationDetails { if optional && nothing { return Ok(None); } - let result = GovernancePolicyEditDurationDetails { - governance_policy_id: field_governance_policy_id.ok_or_else(|| ::serde::de::Error::missing_field("governance_policy_id"))?, + let result = LegalHoldsExportCancelledDetails { + legal_hold_id: field_legal_hold_id.ok_or_else(|| ::serde::de::Error::missing_field("legal_hold_id"))?, name: field_name.ok_or_else(|| ::serde::de::Error::missing_field("name"))?, - previous_value: field_previous_value.ok_or_else(|| ::serde::de::Error::missing_field("previous_value"))?, - new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, - policy_type: field_policy_type.and_then(Option::flatten), + export_name: field_export_name.ok_or_else(|| ::serde::de::Error::missing_field("export_name"))?, }; Ok(Some(result)) } @@ -50000,40 +71669,36 @@ impl GovernancePolicyEditDurationDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("governance_policy_id", &self.governance_policy_id)?; + s.serialize_field("legal_hold_id", &self.legal_hold_id)?; s.serialize_field("name", &self.name)?; - s.serialize_field("previous_value", &self.previous_value)?; - s.serialize_field("new_value", &self.new_value)?; - if let Some(val) = &self.policy_type { - s.serialize_field("policy_type", val)?; - } + s.serialize_field("export_name", &self.export_name)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for GovernancePolicyEditDurationDetails { +impl<'de> ::serde::de::Deserialize<'de> for LegalHoldsExportCancelledDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = GovernancePolicyEditDurationDetails; + type Value = LegalHoldsExportCancelledDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a GovernancePolicyEditDurationDetails struct") + f.write_str("a LegalHoldsExportCancelledDetails struct") } fn visit_map>(self, map: V) -> Result { - GovernancePolicyEditDurationDetails::internal_deserialize(map) + LegalHoldsExportCancelledDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("GovernancePolicyEditDurationDetails", GOVERNANCE_POLICY_EDIT_DURATION_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("LegalHoldsExportCancelledDetails", LEGAL_HOLDS_EXPORT_CANCELLED_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for GovernancePolicyEditDurationDetails { +impl ::serde::ser::Serialize for LegalHoldsExportCancelledDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("GovernancePolicyEditDurationDetails", 5)?; + let mut s = serializer.serialize_struct("LegalHoldsExportCancelledDetails", 3)?; self.internal_serialize::(&mut s)?; s.end() } @@ -50041,30 +71706,30 @@ impl ::serde::ser::Serialize for GovernancePolicyEditDurationDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct GovernancePolicyEditDurationType { +pub struct LegalHoldsExportCancelledType { pub description: String, } -impl GovernancePolicyEditDurationType { +impl LegalHoldsExportCancelledType { pub fn new(description: String) -> Self { - GovernancePolicyEditDurationType { + LegalHoldsExportCancelledType { description, } } } -const GOVERNANCE_POLICY_EDIT_DURATION_TYPE_FIELDS: &[&str] = &["description"]; -impl GovernancePolicyEditDurationType { +const LEGAL_HOLDS_EXPORT_CANCELLED_TYPE_FIELDS: &[&str] = &["description"]; +impl LegalHoldsExportCancelledType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -50085,7 +71750,7 @@ impl GovernancePolicyEditDurationType { if optional && nothing { return Ok(None); } - let result = GovernancePolicyEditDurationType { + let result = LegalHoldsExportCancelledType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -50101,92 +71766,102 @@ impl GovernancePolicyEditDurationType { } } -impl<'de> ::serde::de::Deserialize<'de> for GovernancePolicyEditDurationType { +impl<'de> ::serde::de::Deserialize<'de> for LegalHoldsExportCancelledType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = GovernancePolicyEditDurationType; + type Value = LegalHoldsExportCancelledType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a GovernancePolicyEditDurationType struct") + f.write_str("a LegalHoldsExportCancelledType struct") } fn visit_map>(self, map: V) -> Result { - GovernancePolicyEditDurationType::internal_deserialize(map) + LegalHoldsExportCancelledType::internal_deserialize(map) } } - deserializer.deserialize_struct("GovernancePolicyEditDurationType", GOVERNANCE_POLICY_EDIT_DURATION_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("LegalHoldsExportCancelledType", LEGAL_HOLDS_EXPORT_CANCELLED_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for GovernancePolicyEditDurationType { +impl ::serde::ser::Serialize for LegalHoldsExportCancelledType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("GovernancePolicyEditDurationType", 1)?; + let mut s = serializer.serialize_struct("LegalHoldsExportCancelledType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Created a policy download. +/// Downloaded export for a hold. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct GovernancePolicyExportCreatedDetails { - /// Policy ID. - pub governance_policy_id: String, - /// Policy name. +pub struct LegalHoldsExportDownloadedDetails { + /// Hold ID. + pub legal_hold_id: String, + /// Hold name. pub name: String, /// Export name. pub export_name: String, - /// Policy type. - pub policy_type: Option, + /// Part. + pub part: Option, + /// Filename. + pub file_name: Option, } -impl GovernancePolicyExportCreatedDetails { - pub fn new(governance_policy_id: String, name: String, export_name: String) -> Self { - GovernancePolicyExportCreatedDetails { - governance_policy_id, +impl LegalHoldsExportDownloadedDetails { + pub fn new(legal_hold_id: String, name: String, export_name: String) -> Self { + LegalHoldsExportDownloadedDetails { + legal_hold_id, name, export_name, - policy_type: None, + part: None, + file_name: None, } } - pub fn with_policy_type(mut self, value: PolicyType) -> Self { - self.policy_type = Some(value); + pub fn with_part(mut self, value: String) -> Self { + self.part = Some(value); + self + } + + pub fn with_file_name(mut self, value: String) -> Self { + self.file_name = Some(value); self } } -const GOVERNANCE_POLICY_EXPORT_CREATED_DETAILS_FIELDS: &[&str] = &["governance_policy_id", - "name", - "export_name", - "policy_type"]; -impl GovernancePolicyExportCreatedDetails { +const LEGAL_HOLDS_EXPORT_DOWNLOADED_DETAILS_FIELDS: &[&str] = &["legal_hold_id", + "name", + "export_name", + "part", + "file_name"]; +impl LegalHoldsExportDownloadedDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_governance_policy_id = None; + ) -> Result, V::Error> { + let mut field_legal_hold_id = None; let mut field_name = None; let mut field_export_name = None; - let mut field_policy_type = None; + let mut field_part = None; + let mut field_file_name = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "governance_policy_id" => { - if field_governance_policy_id.is_some() { - return Err(::serde::de::Error::duplicate_field("governance_policy_id")); + "legal_hold_id" => { + if field_legal_hold_id.is_some() { + return Err(::serde::de::Error::duplicate_field("legal_hold_id")); } - field_governance_policy_id = Some(map.next_value()?); + field_legal_hold_id = Some(map.next_value()?); } "name" => { if field_name.is_some() { @@ -50200,11 +71875,17 @@ impl GovernancePolicyExportCreatedDetails { } field_export_name = Some(map.next_value()?); } - "policy_type" => { - if field_policy_type.is_some() { - return Err(::serde::de::Error::duplicate_field("policy_type")); + "part" => { + if field_part.is_some() { + return Err(::serde::de::Error::duplicate_field("part")); } - field_policy_type = Some(map.next_value()?); + field_part = Some(map.next_value()?); + } + "file_name" => { + if field_file_name.is_some() { + return Err(::serde::de::Error::duplicate_field("file_name")); + } + field_file_name = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -50215,11 +71896,12 @@ impl GovernancePolicyExportCreatedDetails { if optional && nothing { return Ok(None); } - let result = GovernancePolicyExportCreatedDetails { - governance_policy_id: field_governance_policy_id.ok_or_else(|| ::serde::de::Error::missing_field("governance_policy_id"))?, + let result = LegalHoldsExportDownloadedDetails { + legal_hold_id: field_legal_hold_id.ok_or_else(|| ::serde::de::Error::missing_field("legal_hold_id"))?, name: field_name.ok_or_else(|| ::serde::de::Error::missing_field("name"))?, export_name: field_export_name.ok_or_else(|| ::serde::de::Error::missing_field("export_name"))?, - policy_type: field_policy_type.and_then(Option::flatten), + part: field_part.and_then(Option::flatten), + file_name: field_file_name.and_then(Option::flatten), }; Ok(Some(result)) } @@ -50229,39 +71911,42 @@ impl GovernancePolicyExportCreatedDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("governance_policy_id", &self.governance_policy_id)?; + s.serialize_field("legal_hold_id", &self.legal_hold_id)?; s.serialize_field("name", &self.name)?; s.serialize_field("export_name", &self.export_name)?; - if let Some(val) = &self.policy_type { - s.serialize_field("policy_type", val)?; + if let Some(val) = &self.part { + s.serialize_field("part", val)?; + } + if let Some(val) = &self.file_name { + s.serialize_field("file_name", val)?; } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for GovernancePolicyExportCreatedDetails { +impl<'de> ::serde::de::Deserialize<'de> for LegalHoldsExportDownloadedDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = GovernancePolicyExportCreatedDetails; + type Value = LegalHoldsExportDownloadedDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a GovernancePolicyExportCreatedDetails struct") + f.write_str("a LegalHoldsExportDownloadedDetails struct") } fn visit_map>(self, map: V) -> Result { - GovernancePolicyExportCreatedDetails::internal_deserialize(map) + LegalHoldsExportDownloadedDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("GovernancePolicyExportCreatedDetails", GOVERNANCE_POLICY_EXPORT_CREATED_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("LegalHoldsExportDownloadedDetails", LEGAL_HOLDS_EXPORT_DOWNLOADED_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for GovernancePolicyExportCreatedDetails { +impl ::serde::ser::Serialize for LegalHoldsExportDownloadedDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("GovernancePolicyExportCreatedDetails", 4)?; + let mut s = serializer.serialize_struct("LegalHoldsExportDownloadedDetails", 5)?; self.internal_serialize::(&mut s)?; s.end() } @@ -50269,30 +71954,30 @@ impl ::serde::ser::Serialize for GovernancePolicyExportCreatedDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct GovernancePolicyExportCreatedType { +pub struct LegalHoldsExportDownloadedType { pub description: String, } -impl GovernancePolicyExportCreatedType { +impl LegalHoldsExportDownloadedType { pub fn new(description: String) -> Self { - GovernancePolicyExportCreatedType { + LegalHoldsExportDownloadedType { description, } } } -const GOVERNANCE_POLICY_EXPORT_CREATED_TYPE_FIELDS: &[&str] = &["description"]; -impl GovernancePolicyExportCreatedType { +const LEGAL_HOLDS_EXPORT_DOWNLOADED_TYPE_FIELDS: &[&str] = &["description"]; +impl LegalHoldsExportDownloadedType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -50313,7 +71998,7 @@ impl GovernancePolicyExportCreatedType { if optional && nothing { return Ok(None); } - let result = GovernancePolicyExportCreatedType { + let result = LegalHoldsExportDownloadedType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -50329,92 +72014,82 @@ impl GovernancePolicyExportCreatedType { } } -impl<'de> ::serde::de::Deserialize<'de> for GovernancePolicyExportCreatedType { +impl<'de> ::serde::de::Deserialize<'de> for LegalHoldsExportDownloadedType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = GovernancePolicyExportCreatedType; + type Value = LegalHoldsExportDownloadedType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a GovernancePolicyExportCreatedType struct") + f.write_str("a LegalHoldsExportDownloadedType struct") } fn visit_map>(self, map: V) -> Result { - GovernancePolicyExportCreatedType::internal_deserialize(map) + LegalHoldsExportDownloadedType::internal_deserialize(map) } } - deserializer.deserialize_struct("GovernancePolicyExportCreatedType", GOVERNANCE_POLICY_EXPORT_CREATED_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("LegalHoldsExportDownloadedType", LEGAL_HOLDS_EXPORT_DOWNLOADED_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for GovernancePolicyExportCreatedType { +impl ::serde::ser::Serialize for LegalHoldsExportDownloadedType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("GovernancePolicyExportCreatedType", 1)?; + let mut s = serializer.serialize_struct("LegalHoldsExportDownloadedType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Removed a policy download. +/// Removed export for a hold. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct GovernancePolicyExportRemovedDetails { - /// Policy ID. - pub governance_policy_id: String, - /// Policy name. +pub struct LegalHoldsExportRemovedDetails { + /// Hold ID. + pub legal_hold_id: String, + /// Hold name. pub name: String, /// Export name. pub export_name: String, - /// Policy type. - pub policy_type: Option, } -impl GovernancePolicyExportRemovedDetails { - pub fn new(governance_policy_id: String, name: String, export_name: String) -> Self { - GovernancePolicyExportRemovedDetails { - governance_policy_id, +impl LegalHoldsExportRemovedDetails { + pub fn new(legal_hold_id: String, name: String, export_name: String) -> Self { + LegalHoldsExportRemovedDetails { + legal_hold_id, name, export_name, - policy_type: None, } } - - pub fn with_policy_type(mut self, value: PolicyType) -> Self { - self.policy_type = Some(value); - self - } } -const GOVERNANCE_POLICY_EXPORT_REMOVED_DETAILS_FIELDS: &[&str] = &["governance_policy_id", - "name", - "export_name", - "policy_type"]; -impl GovernancePolicyExportRemovedDetails { +const LEGAL_HOLDS_EXPORT_REMOVED_DETAILS_FIELDS: &[&str] = &["legal_hold_id", + "name", + "export_name"]; +impl LegalHoldsExportRemovedDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_governance_policy_id = None; + ) -> Result, V::Error> { + let mut field_legal_hold_id = None; let mut field_name = None; let mut field_export_name = None; - let mut field_policy_type = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "governance_policy_id" => { - if field_governance_policy_id.is_some() { - return Err(::serde::de::Error::duplicate_field("governance_policy_id")); + "legal_hold_id" => { + if field_legal_hold_id.is_some() { + return Err(::serde::de::Error::duplicate_field("legal_hold_id")); } - field_governance_policy_id = Some(map.next_value()?); + field_legal_hold_id = Some(map.next_value()?); } "name" => { if field_name.is_some() { @@ -50428,12 +72103,6 @@ impl GovernancePolicyExportRemovedDetails { } field_export_name = Some(map.next_value()?); } - "policy_type" => { - if field_policy_type.is_some() { - return Err(::serde::de::Error::duplicate_field("policy_type")); - } - field_policy_type = Some(map.next_value()?); - } _ => { // unknown field allowed and ignored map.next_value::<::serde_json::Value>()?; @@ -50443,11 +72112,10 @@ impl GovernancePolicyExportRemovedDetails { if optional && nothing { return Ok(None); } - let result = GovernancePolicyExportRemovedDetails { - governance_policy_id: field_governance_policy_id.ok_or_else(|| ::serde::de::Error::missing_field("governance_policy_id"))?, + let result = LegalHoldsExportRemovedDetails { + legal_hold_id: field_legal_hold_id.ok_or_else(|| ::serde::de::Error::missing_field("legal_hold_id"))?, name: field_name.ok_or_else(|| ::serde::de::Error::missing_field("name"))?, export_name: field_export_name.ok_or_else(|| ::serde::de::Error::missing_field("export_name"))?, - policy_type: field_policy_type.and_then(Option::flatten), }; Ok(Some(result)) } @@ -50457,39 +72125,36 @@ impl GovernancePolicyExportRemovedDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("governance_policy_id", &self.governance_policy_id)?; + s.serialize_field("legal_hold_id", &self.legal_hold_id)?; s.serialize_field("name", &self.name)?; s.serialize_field("export_name", &self.export_name)?; - if let Some(val) = &self.policy_type { - s.serialize_field("policy_type", val)?; - } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for GovernancePolicyExportRemovedDetails { +impl<'de> ::serde::de::Deserialize<'de> for LegalHoldsExportRemovedDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = GovernancePolicyExportRemovedDetails; + type Value = LegalHoldsExportRemovedDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a GovernancePolicyExportRemovedDetails struct") + f.write_str("a LegalHoldsExportRemovedDetails struct") } fn visit_map>(self, map: V) -> Result { - GovernancePolicyExportRemovedDetails::internal_deserialize(map) + LegalHoldsExportRemovedDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("GovernancePolicyExportRemovedDetails", GOVERNANCE_POLICY_EXPORT_REMOVED_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("LegalHoldsExportRemovedDetails", LEGAL_HOLDS_EXPORT_REMOVED_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for GovernancePolicyExportRemovedDetails { +impl ::serde::ser::Serialize for LegalHoldsExportRemovedDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("GovernancePolicyExportRemovedDetails", 4)?; + let mut s = serializer.serialize_struct("LegalHoldsExportRemovedDetails", 3)?; self.internal_serialize::(&mut s)?; s.end() } @@ -50497,30 +72162,30 @@ impl ::serde::ser::Serialize for GovernancePolicyExportRemovedDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct GovernancePolicyExportRemovedType { +pub struct LegalHoldsExportRemovedType { pub description: String, } -impl GovernancePolicyExportRemovedType { +impl LegalHoldsExportRemovedType { pub fn new(description: String) -> Self { - GovernancePolicyExportRemovedType { + LegalHoldsExportRemovedType { description, } } } -const GOVERNANCE_POLICY_EXPORT_REMOVED_TYPE_FIELDS: &[&str] = &["description"]; -impl GovernancePolicyExportRemovedType { +const LEGAL_HOLDS_EXPORT_REMOVED_TYPE_FIELDS: &[&str] = &["description"]; +impl LegalHoldsExportRemovedType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -50541,7 +72206,7 @@ impl GovernancePolicyExportRemovedType { if optional && nothing { return Ok(None); } - let result = GovernancePolicyExportRemovedType { + let result = LegalHoldsExportRemovedType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -50557,107 +72222,77 @@ impl GovernancePolicyExportRemovedType { } } -impl<'de> ::serde::de::Deserialize<'de> for GovernancePolicyExportRemovedType { +impl<'de> ::serde::de::Deserialize<'de> for LegalHoldsExportRemovedType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = GovernancePolicyExportRemovedType; + type Value = LegalHoldsExportRemovedType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a GovernancePolicyExportRemovedType struct") + f.write_str("a LegalHoldsExportRemovedType struct") } fn visit_map>(self, map: V) -> Result { - GovernancePolicyExportRemovedType::internal_deserialize(map) + LegalHoldsExportRemovedType::internal_deserialize(map) } } - deserializer.deserialize_struct("GovernancePolicyExportRemovedType", GOVERNANCE_POLICY_EXPORT_REMOVED_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("LegalHoldsExportRemovedType", LEGAL_HOLDS_EXPORT_REMOVED_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for GovernancePolicyExportRemovedType { +impl ::serde::ser::Serialize for LegalHoldsExportRemovedType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("GovernancePolicyExportRemovedType", 1)?; + let mut s = serializer.serialize_struct("LegalHoldsExportRemovedType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Removed folders from policy. +/// Released a hold. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct GovernancePolicyRemoveFoldersDetails { - /// Policy ID. - pub governance_policy_id: String, - /// Policy name. +pub struct LegalHoldsReleaseAHoldDetails { + /// Hold ID. + pub legal_hold_id: String, + /// Hold name. pub name: String, - /// Policy type. - pub policy_type: Option, - /// Folders. - pub folders: Option>, - /// Reason. - pub reason: Option, } -impl GovernancePolicyRemoveFoldersDetails { - pub fn new(governance_policy_id: String, name: String) -> Self { - GovernancePolicyRemoveFoldersDetails { - governance_policy_id, +impl LegalHoldsReleaseAHoldDetails { + pub fn new(legal_hold_id: String, name: String) -> Self { + LegalHoldsReleaseAHoldDetails { + legal_hold_id, name, - policy_type: None, - folders: None, - reason: None, } } - - pub fn with_policy_type(mut self, value: PolicyType) -> Self { - self.policy_type = Some(value); - self - } - - pub fn with_folders(mut self, value: Vec) -> Self { - self.folders = Some(value); - self - } - - pub fn with_reason(mut self, value: String) -> Self { - self.reason = Some(value); - self - } } -const GOVERNANCE_POLICY_REMOVE_FOLDERS_DETAILS_FIELDS: &[&str] = &["governance_policy_id", - "name", - "policy_type", - "folders", - "reason"]; -impl GovernancePolicyRemoveFoldersDetails { +const LEGAL_HOLDS_RELEASE_A_HOLD_DETAILS_FIELDS: &[&str] = &["legal_hold_id", + "name"]; +impl LegalHoldsReleaseAHoldDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_governance_policy_id = None; + ) -> Result, V::Error> { + let mut field_legal_hold_id = None; let mut field_name = None; - let mut field_policy_type = None; - let mut field_folders = None; - let mut field_reason = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "governance_policy_id" => { - if field_governance_policy_id.is_some() { - return Err(::serde::de::Error::duplicate_field("governance_policy_id")); + "legal_hold_id" => { + if field_legal_hold_id.is_some() { + return Err(::serde::de::Error::duplicate_field("legal_hold_id")); } - field_governance_policy_id = Some(map.next_value()?); + field_legal_hold_id = Some(map.next_value()?); } "name" => { if field_name.is_some() { @@ -50665,24 +72300,6 @@ impl GovernancePolicyRemoveFoldersDetails { } field_name = Some(map.next_value()?); } - "policy_type" => { - if field_policy_type.is_some() { - return Err(::serde::de::Error::duplicate_field("policy_type")); - } - field_policy_type = Some(map.next_value()?); - } - "folders" => { - if field_folders.is_some() { - return Err(::serde::de::Error::duplicate_field("folders")); - } - field_folders = Some(map.next_value()?); - } - "reason" => { - if field_reason.is_some() { - return Err(::serde::de::Error::duplicate_field("reason")); - } - field_reason = Some(map.next_value()?); - } _ => { // unknown field allowed and ignored map.next_value::<::serde_json::Value>()?; @@ -50692,12 +72309,9 @@ impl GovernancePolicyRemoveFoldersDetails { if optional && nothing { return Ok(None); } - let result = GovernancePolicyRemoveFoldersDetails { - governance_policy_id: field_governance_policy_id.ok_or_else(|| ::serde::de::Error::missing_field("governance_policy_id"))?, + let result = LegalHoldsReleaseAHoldDetails { + legal_hold_id: field_legal_hold_id.ok_or_else(|| ::serde::de::Error::missing_field("legal_hold_id"))?, name: field_name.ok_or_else(|| ::serde::de::Error::missing_field("name"))?, - policy_type: field_policy_type.and_then(Option::flatten), - folders: field_folders.and_then(Option::flatten), - reason: field_reason.and_then(Option::flatten), }; Ok(Some(result)) } @@ -50707,44 +72321,35 @@ impl GovernancePolicyRemoveFoldersDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("governance_policy_id", &self.governance_policy_id)?; + s.serialize_field("legal_hold_id", &self.legal_hold_id)?; s.serialize_field("name", &self.name)?; - if let Some(val) = &self.policy_type { - s.serialize_field("policy_type", val)?; - } - if let Some(val) = &self.folders { - s.serialize_field("folders", val)?; - } - if let Some(val) = &self.reason { - s.serialize_field("reason", val)?; - } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for GovernancePolicyRemoveFoldersDetails { +impl<'de> ::serde::de::Deserialize<'de> for LegalHoldsReleaseAHoldDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = GovernancePolicyRemoveFoldersDetails; + type Value = LegalHoldsReleaseAHoldDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a GovernancePolicyRemoveFoldersDetails struct") + f.write_str("a LegalHoldsReleaseAHoldDetails struct") } fn visit_map>(self, map: V) -> Result { - GovernancePolicyRemoveFoldersDetails::internal_deserialize(map) + LegalHoldsReleaseAHoldDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("GovernancePolicyRemoveFoldersDetails", GOVERNANCE_POLICY_REMOVE_FOLDERS_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("LegalHoldsReleaseAHoldDetails", LEGAL_HOLDS_RELEASE_A_HOLD_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for GovernancePolicyRemoveFoldersDetails { +impl ::serde::ser::Serialize for LegalHoldsReleaseAHoldDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("GovernancePolicyRemoveFoldersDetails", 5)?; + let mut s = serializer.serialize_struct("LegalHoldsReleaseAHoldDetails", 2)?; self.internal_serialize::(&mut s)?; s.end() } @@ -50752,30 +72357,30 @@ impl ::serde::ser::Serialize for GovernancePolicyRemoveFoldersDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct GovernancePolicyRemoveFoldersType { +pub struct LegalHoldsReleaseAHoldType { pub description: String, } -impl GovernancePolicyRemoveFoldersType { +impl LegalHoldsReleaseAHoldType { pub fn new(description: String) -> Self { - GovernancePolicyRemoveFoldersType { + LegalHoldsReleaseAHoldType { description, } } } -const GOVERNANCE_POLICY_REMOVE_FOLDERS_TYPE_FIELDS: &[&str] = &["description"]; -impl GovernancePolicyRemoveFoldersType { +const LEGAL_HOLDS_RELEASE_A_HOLD_TYPE_FIELDS: &[&str] = &["description"]; +impl LegalHoldsReleaseAHoldType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -50796,7 +72401,7 @@ impl GovernancePolicyRemoveFoldersType { if optional && nothing { return Ok(None); } - let result = GovernancePolicyRemoveFoldersType { + let result = LegalHoldsReleaseAHoldType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -50812,87 +72417,77 @@ impl GovernancePolicyRemoveFoldersType { } } -impl<'de> ::serde::de::Deserialize<'de> for GovernancePolicyRemoveFoldersType { +impl<'de> ::serde::de::Deserialize<'de> for LegalHoldsReleaseAHoldType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = GovernancePolicyRemoveFoldersType; + type Value = LegalHoldsReleaseAHoldType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a GovernancePolicyRemoveFoldersType struct") + f.write_str("a LegalHoldsReleaseAHoldType struct") } fn visit_map>(self, map: V) -> Result { - GovernancePolicyRemoveFoldersType::internal_deserialize(map) + LegalHoldsReleaseAHoldType::internal_deserialize(map) } } - deserializer.deserialize_struct("GovernancePolicyRemoveFoldersType", GOVERNANCE_POLICY_REMOVE_FOLDERS_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("LegalHoldsReleaseAHoldType", LEGAL_HOLDS_RELEASE_A_HOLD_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for GovernancePolicyRemoveFoldersType { +impl ::serde::ser::Serialize for LegalHoldsReleaseAHoldType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("GovernancePolicyRemoveFoldersType", 1)?; + let mut s = serializer.serialize_struct("LegalHoldsReleaseAHoldType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Created a summary report for a policy. +/// Removed members from a hold. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct GovernancePolicyReportCreatedDetails { - /// Policy ID. - pub governance_policy_id: String, - /// Policy name. +pub struct LegalHoldsRemoveMembersDetails { + /// Hold ID. + pub legal_hold_id: String, + /// Hold name. pub name: String, - /// Policy type. - pub policy_type: Option, } -impl GovernancePolicyReportCreatedDetails { - pub fn new(governance_policy_id: String, name: String) -> Self { - GovernancePolicyReportCreatedDetails { - governance_policy_id, +impl LegalHoldsRemoveMembersDetails { + pub fn new(legal_hold_id: String, name: String) -> Self { + LegalHoldsRemoveMembersDetails { + legal_hold_id, name, - policy_type: None, } } - - pub fn with_policy_type(mut self, value: PolicyType) -> Self { - self.policy_type = Some(value); - self - } } -const GOVERNANCE_POLICY_REPORT_CREATED_DETAILS_FIELDS: &[&str] = &["governance_policy_id", - "name", - "policy_type"]; -impl GovernancePolicyReportCreatedDetails { +const LEGAL_HOLDS_REMOVE_MEMBERS_DETAILS_FIELDS: &[&str] = &["legal_hold_id", + "name"]; +impl LegalHoldsRemoveMembersDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_governance_policy_id = None; + ) -> Result, V::Error> { + let mut field_legal_hold_id = None; let mut field_name = None; - let mut field_policy_type = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "governance_policy_id" => { - if field_governance_policy_id.is_some() { - return Err(::serde::de::Error::duplicate_field("governance_policy_id")); + "legal_hold_id" => { + if field_legal_hold_id.is_some() { + return Err(::serde::de::Error::duplicate_field("legal_hold_id")); } - field_governance_policy_id = Some(map.next_value()?); + field_legal_hold_id = Some(map.next_value()?); } "name" => { if field_name.is_some() { @@ -50900,12 +72495,6 @@ impl GovernancePolicyReportCreatedDetails { } field_name = Some(map.next_value()?); } - "policy_type" => { - if field_policy_type.is_some() { - return Err(::serde::de::Error::duplicate_field("policy_type")); - } - field_policy_type = Some(map.next_value()?); - } _ => { // unknown field allowed and ignored map.next_value::<::serde_json::Value>()?; @@ -50915,10 +72504,9 @@ impl GovernancePolicyReportCreatedDetails { if optional && nothing { return Ok(None); } - let result = GovernancePolicyReportCreatedDetails { - governance_policy_id: field_governance_policy_id.ok_or_else(|| ::serde::de::Error::missing_field("governance_policy_id"))?, + let result = LegalHoldsRemoveMembersDetails { + legal_hold_id: field_legal_hold_id.ok_or_else(|| ::serde::de::Error::missing_field("legal_hold_id"))?, name: field_name.ok_or_else(|| ::serde::de::Error::missing_field("name"))?, - policy_type: field_policy_type.and_then(Option::flatten), }; Ok(Some(result)) } @@ -50928,38 +72516,35 @@ impl GovernancePolicyReportCreatedDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("governance_policy_id", &self.governance_policy_id)?; + s.serialize_field("legal_hold_id", &self.legal_hold_id)?; s.serialize_field("name", &self.name)?; - if let Some(val) = &self.policy_type { - s.serialize_field("policy_type", val)?; - } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for GovernancePolicyReportCreatedDetails { +impl<'de> ::serde::de::Deserialize<'de> for LegalHoldsRemoveMembersDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = GovernancePolicyReportCreatedDetails; + type Value = LegalHoldsRemoveMembersDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a GovernancePolicyReportCreatedDetails struct") + f.write_str("a LegalHoldsRemoveMembersDetails struct") } fn visit_map>(self, map: V) -> Result { - GovernancePolicyReportCreatedDetails::internal_deserialize(map) + LegalHoldsRemoveMembersDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("GovernancePolicyReportCreatedDetails", GOVERNANCE_POLICY_REPORT_CREATED_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("LegalHoldsRemoveMembersDetails", LEGAL_HOLDS_REMOVE_MEMBERS_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for GovernancePolicyReportCreatedDetails { +impl ::serde::ser::Serialize for LegalHoldsRemoveMembersDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("GovernancePolicyReportCreatedDetails", 3)?; + let mut s = serializer.serialize_struct("LegalHoldsRemoveMembersDetails", 2)?; self.internal_serialize::(&mut s)?; s.end() } @@ -50967,30 +72552,30 @@ impl ::serde::ser::Serialize for GovernancePolicyReportCreatedDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct GovernancePolicyReportCreatedType { +pub struct LegalHoldsRemoveMembersType { pub description: String, } -impl GovernancePolicyReportCreatedType { +impl LegalHoldsRemoveMembersType { pub fn new(description: String) -> Self { - GovernancePolicyReportCreatedType { + LegalHoldsRemoveMembersType { description, } } } -const GOVERNANCE_POLICY_REPORT_CREATED_TYPE_FIELDS: &[&str] = &["description"]; -impl GovernancePolicyReportCreatedType { +const LEGAL_HOLDS_REMOVE_MEMBERS_TYPE_FIELDS: &[&str] = &["description"]; +impl LegalHoldsRemoveMembersType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -51011,7 +72596,7 @@ impl GovernancePolicyReportCreatedType { if optional && nothing { return Ok(None); } - let result = GovernancePolicyReportCreatedType { + let result = LegalHoldsRemoveMembersType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -51027,102 +72612,77 @@ impl GovernancePolicyReportCreatedType { } } -impl<'de> ::serde::de::Deserialize<'de> for GovernancePolicyReportCreatedType { +impl<'de> ::serde::de::Deserialize<'de> for LegalHoldsRemoveMembersType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = GovernancePolicyReportCreatedType; + type Value = LegalHoldsRemoveMembersType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a GovernancePolicyReportCreatedType struct") + f.write_str("a LegalHoldsRemoveMembersType struct") } fn visit_map>(self, map: V) -> Result { - GovernancePolicyReportCreatedType::internal_deserialize(map) + LegalHoldsRemoveMembersType::internal_deserialize(map) } } - deserializer.deserialize_struct("GovernancePolicyReportCreatedType", GOVERNANCE_POLICY_REPORT_CREATED_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("LegalHoldsRemoveMembersType", LEGAL_HOLDS_REMOVE_MEMBERS_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for GovernancePolicyReportCreatedType { +impl ::serde::ser::Serialize for LegalHoldsRemoveMembersType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("GovernancePolicyReportCreatedType", 1)?; + let mut s = serializer.serialize_struct("LegalHoldsRemoveMembersType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Downloaded content from a policy. +/// Created a summary report for a hold. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct GovernancePolicyZipPartDownloadedDetails { - /// Policy ID. - pub governance_policy_id: String, - /// Policy name. +pub struct LegalHoldsReportAHoldDetails { + /// Hold ID. + pub legal_hold_id: String, + /// Hold name. pub name: String, - /// Export name. - pub export_name: String, - /// Policy type. - pub policy_type: Option, - /// Part. - pub part: Option, } -impl GovernancePolicyZipPartDownloadedDetails { - pub fn new(governance_policy_id: String, name: String, export_name: String) -> Self { - GovernancePolicyZipPartDownloadedDetails { - governance_policy_id, +impl LegalHoldsReportAHoldDetails { + pub fn new(legal_hold_id: String, name: String) -> Self { + LegalHoldsReportAHoldDetails { + legal_hold_id, name, - export_name, - policy_type: None, - part: None, } } - - pub fn with_policy_type(mut self, value: PolicyType) -> Self { - self.policy_type = Some(value); - self - } - - pub fn with_part(mut self, value: String) -> Self { - self.part = Some(value); - self - } } -const GOVERNANCE_POLICY_ZIP_PART_DOWNLOADED_DETAILS_FIELDS: &[&str] = &["governance_policy_id", - "name", - "export_name", - "policy_type", - "part"]; -impl GovernancePolicyZipPartDownloadedDetails { +const LEGAL_HOLDS_REPORT_A_HOLD_DETAILS_FIELDS: &[&str] = &["legal_hold_id", + "name"]; +impl LegalHoldsReportAHoldDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_governance_policy_id = None; + ) -> Result, V::Error> { + let mut field_legal_hold_id = None; let mut field_name = None; - let mut field_export_name = None; - let mut field_policy_type = None; - let mut field_part = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "governance_policy_id" => { - if field_governance_policy_id.is_some() { - return Err(::serde::de::Error::duplicate_field("governance_policy_id")); + "legal_hold_id" => { + if field_legal_hold_id.is_some() { + return Err(::serde::de::Error::duplicate_field("legal_hold_id")); } - field_governance_policy_id = Some(map.next_value()?); + field_legal_hold_id = Some(map.next_value()?); } "name" => { if field_name.is_some() { @@ -51130,24 +72690,6 @@ impl GovernancePolicyZipPartDownloadedDetails { } field_name = Some(map.next_value()?); } - "export_name" => { - if field_export_name.is_some() { - return Err(::serde::de::Error::duplicate_field("export_name")); - } - field_export_name = Some(map.next_value()?); - } - "policy_type" => { - if field_policy_type.is_some() { - return Err(::serde::de::Error::duplicate_field("policy_type")); - } - field_policy_type = Some(map.next_value()?); - } - "part" => { - if field_part.is_some() { - return Err(::serde::de::Error::duplicate_field("part")); - } - field_part = Some(map.next_value()?); - } _ => { // unknown field allowed and ignored map.next_value::<::serde_json::Value>()?; @@ -51157,12 +72699,9 @@ impl GovernancePolicyZipPartDownloadedDetails { if optional && nothing { return Ok(None); } - let result = GovernancePolicyZipPartDownloadedDetails { - governance_policy_id: field_governance_policy_id.ok_or_else(|| ::serde::de::Error::missing_field("governance_policy_id"))?, + let result = LegalHoldsReportAHoldDetails { + legal_hold_id: field_legal_hold_id.ok_or_else(|| ::serde::de::Error::missing_field("legal_hold_id"))?, name: field_name.ok_or_else(|| ::serde::de::Error::missing_field("name"))?, - export_name: field_export_name.ok_or_else(|| ::serde::de::Error::missing_field("export_name"))?, - policy_type: field_policy_type.and_then(Option::flatten), - part: field_part.and_then(Option::flatten), }; Ok(Some(result)) } @@ -51172,83 +72711,234 @@ impl GovernancePolicyZipPartDownloadedDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("governance_policy_id", &self.governance_policy_id)?; + s.serialize_field("legal_hold_id", &self.legal_hold_id)?; s.serialize_field("name", &self.name)?; - s.serialize_field("export_name", &self.export_name)?; - if let Some(val) = &self.policy_type { - s.serialize_field("policy_type", val)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for LegalHoldsReportAHoldDetails { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = LegalHoldsReportAHoldDetails; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a LegalHoldsReportAHoldDetails struct") + } + fn visit_map>(self, map: V) -> Result { + LegalHoldsReportAHoldDetails::internal_deserialize(map) + } } - if let Some(val) = &self.part { - s.serialize_field("part", val)?; + deserializer.deserialize_struct("LegalHoldsReportAHoldDetails", LEGAL_HOLDS_REPORT_A_HOLD_DETAILS_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for LegalHoldsReportAHoldDetails { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("LegalHoldsReportAHoldDetails", 2)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct LegalHoldsReportAHoldType { + pub description: String, +} + +impl LegalHoldsReportAHoldType { + pub fn new(description: String) -> Self { + LegalHoldsReportAHoldType { + description, + } + } +} + +const LEGAL_HOLDS_REPORT_A_HOLD_TYPE_FIELDS: &[&str] = &["description"]; +impl LegalHoldsReportAHoldType { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_description = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); + } + field_description = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } + } + } + if optional && nothing { + return Ok(None); } + let result = LegalHoldsReportAHoldType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("description", &self.description)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for GovernancePolicyZipPartDownloadedDetails { +impl<'de> ::serde::de::Deserialize<'de> for LegalHoldsReportAHoldType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = GovernancePolicyZipPartDownloadedDetails; + type Value = LegalHoldsReportAHoldType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a GovernancePolicyZipPartDownloadedDetails struct") + f.write_str("a LegalHoldsReportAHoldType struct") } fn visit_map>(self, map: V) -> Result { - GovernancePolicyZipPartDownloadedDetails::internal_deserialize(map) + LegalHoldsReportAHoldType::internal_deserialize(map) } } - deserializer.deserialize_struct("GovernancePolicyZipPartDownloadedDetails", GOVERNANCE_POLICY_ZIP_PART_DOWNLOADED_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("LegalHoldsReportAHoldType", LEGAL_HOLDS_REPORT_A_HOLD_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for GovernancePolicyZipPartDownloadedDetails { +impl ::serde::ser::Serialize for LegalHoldsReportAHoldType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("GovernancePolicyZipPartDownloadedDetails", 5)?; + let mut s = serializer.serialize_struct("LegalHoldsReportAHoldType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } +/// Link Settings #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct GovernancePolicyZipPartDownloadedType { - pub description: String, -} - -impl GovernancePolicyZipPartDownloadedType { - pub fn new(description: String) -> Self { - GovernancePolicyZipPartDownloadedType { - description, +pub struct LinkSettingsLogInfo { + /// Link Name. + pub name: String, + /// Email Required. + pub require_email: bool, + /// Downloadable. + pub downloadable: bool, + /// Password required. + pub password_required: bool, + /// Link URL. + pub url: String, + /// Expires at. + pub expire_at: Option, +} + +impl LinkSettingsLogInfo { + pub fn new( + name: String, + require_email: bool, + downloadable: bool, + password_required: bool, + url: String, + ) -> Self { + LinkSettingsLogInfo { + name, + require_email, + downloadable, + password_required, + url, + expire_at: None, } } + + pub fn with_expire_at(mut self, value: crate::types::common::DropboxTimestamp) -> Self { + self.expire_at = Some(value); + self + } } -const GOVERNANCE_POLICY_ZIP_PART_DOWNLOADED_TYPE_FIELDS: &[&str] = &["description"]; -impl GovernancePolicyZipPartDownloadedType { +const LINK_SETTINGS_LOG_INFO_FIELDS: &[&str] = &["name", + "require_email", + "downloadable", + "password_required", + "url", + "expire_at"]; +impl LinkSettingsLogInfo { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_description = None; + ) -> Result, V::Error> { + let mut field_name = None; + let mut field_require_email = None; + let mut field_downloadable = None; + let mut field_password_required = None; + let mut field_url = None; + let mut field_expire_at = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "description" => { - if field_description.is_some() { - return Err(::serde::de::Error::duplicate_field("description")); + "name" => { + if field_name.is_some() { + return Err(::serde::de::Error::duplicate_field("name")); } - field_description = Some(map.next_value()?); + field_name = Some(map.next_value()?); + } + "require_email" => { + if field_require_email.is_some() { + return Err(::serde::de::Error::duplicate_field("require_email")); + } + field_require_email = Some(map.next_value()?); + } + "downloadable" => { + if field_downloadable.is_some() { + return Err(::serde::de::Error::duplicate_field("downloadable")); + } + field_downloadable = Some(map.next_value()?); + } + "password_required" => { + if field_password_required.is_some() { + return Err(::serde::de::Error::duplicate_field("password_required")); + } + field_password_required = Some(map.next_value()?); + } + "url" => { + if field_url.is_some() { + return Err(::serde::de::Error::duplicate_field("url")); + } + field_url = Some(map.next_value()?); + } + "expire_at" => { + if field_expire_at.is_some() { + return Err(::serde::de::Error::duplicate_field("expire_at")); + } + field_expire_at = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -51259,8 +72949,13 @@ impl GovernancePolicyZipPartDownloadedType { if optional && nothing { return Ok(None); } - let result = GovernancePolicyZipPartDownloadedType { - description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + let result = LinkSettingsLogInfo { + name: field_name.ok_or_else(|| ::serde::de::Error::missing_field("name"))?, + require_email: field_require_email.ok_or_else(|| ::serde::de::Error::missing_field("require_email"))?, + downloadable: field_downloadable.ok_or_else(|| ::serde::de::Error::missing_field("downloadable"))?, + password_required: field_password_required.ok_or_else(|| ::serde::de::Error::missing_field("password_required"))?, + url: field_url.ok_or_else(|| ::serde::de::Error::missing_field("url"))?, + expire_at: field_expire_at.and_then(Option::flatten), }; Ok(Some(result)) } @@ -51270,77 +72965,265 @@ impl GovernancePolicyZipPartDownloadedType { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("description", &self.description)?; + s.serialize_field("name", &self.name)?; + s.serialize_field("require_email", &self.require_email)?; + s.serialize_field("downloadable", &self.downloadable)?; + s.serialize_field("password_required", &self.password_required)?; + s.serialize_field("url", &self.url)?; + if let Some(val) = &self.expire_at { + s.serialize_field("expire_at", val)?; + } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for GovernancePolicyZipPartDownloadedType { +impl<'de> ::serde::de::Deserialize<'de> for LinkSettingsLogInfo { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = GovernancePolicyZipPartDownloadedType; + type Value = LinkSettingsLogInfo; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a GovernancePolicyZipPartDownloadedType struct") + f.write_str("a LinkSettingsLogInfo struct") } fn visit_map>(self, map: V) -> Result { - GovernancePolicyZipPartDownloadedType::internal_deserialize(map) + LinkSettingsLogInfo::internal_deserialize(map) } } - deserializer.deserialize_struct("GovernancePolicyZipPartDownloadedType", GOVERNANCE_POLICY_ZIP_PART_DOWNLOADED_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("LinkSettingsLogInfo", LINK_SETTINGS_LOG_INFO_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for GovernancePolicyZipPartDownloadedType { +impl ::serde::ser::Serialize for LinkSettingsLogInfo { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("GovernancePolicyZipPartDownloadedType", 1)?; + let mut s = serializer.serialize_struct("LinkSettingsLogInfo", 6)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Added external ID for group. +/// The device sessions that user is linked to. +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // variants may be added in the future +pub enum LinkedDeviceLogInfo { + /// desktop device session's details. + DesktopDeviceSession(DesktopDeviceSessionLogInfo), + /// legacy device session's details. + LegacyDeviceSession(LegacyDeviceSessionLogInfo), + /// mobile device session's details. + MobileDeviceSession(MobileDeviceSessionLogInfo), + /// web device session's details. + WebDeviceSession(WebDeviceSessionLogInfo), + /// Catch-all used for unrecognized values returned from the server. Encountering this value + /// typically indicates that this SDK version is out of date. + Other, +} + +impl<'de> ::serde::de::Deserialize<'de> for LinkedDeviceLogInfo { + fn deserialize>(deserializer: D) -> Result { + // union deserializer + use serde::de::{self, MapAccess, Visitor}; + struct EnumVisitor; + impl<'de> Visitor<'de> for EnumVisitor { + type Value = LinkedDeviceLogInfo; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a LinkedDeviceLogInfo structure") + } + fn visit_map>(self, mut map: V) -> Result { + let tag: &str = match map.next_key()? { + Some(".tag") => map.next_value()?, + _ => return Err(de::Error::missing_field(".tag")) + }; + let value = match tag { + "desktop_device_session" => LinkedDeviceLogInfo::DesktopDeviceSession(DesktopDeviceSessionLogInfo::internal_deserialize(&mut map)?), + "legacy_device_session" => LinkedDeviceLogInfo::LegacyDeviceSession(LegacyDeviceSessionLogInfo::internal_deserialize(&mut map)?), + "mobile_device_session" => LinkedDeviceLogInfo::MobileDeviceSession(MobileDeviceSessionLogInfo::internal_deserialize(&mut map)?), + "web_device_session" => LinkedDeviceLogInfo::WebDeviceSession(WebDeviceSessionLogInfo::internal_deserialize(&mut map)?), + _ => LinkedDeviceLogInfo::Other, + }; + crate::eat_json_fields(&mut map)?; + Ok(value) + } + } + const VARIANTS: &[&str] = &["desktop_device_session", + "legacy_device_session", + "mobile_device_session", + "web_device_session", + "other"]; + deserializer.deserialize_struct("LinkedDeviceLogInfo", VARIANTS, EnumVisitor) + } +} + +impl ::serde::ser::Serialize for LinkedDeviceLogInfo { + fn serialize(&self, serializer: S) -> Result { + // union serializer + use serde::ser::SerializeStruct; + match self { + LinkedDeviceLogInfo::DesktopDeviceSession(x) => { + // struct + let mut s = serializer.serialize_struct("LinkedDeviceLogInfo", 10)?; + s.serialize_field(".tag", "desktop_device_session")?; + x.internal_serialize::(&mut s)?; + s.end() + } + LinkedDeviceLogInfo::LegacyDeviceSession(x) => { + // struct + let mut s = serializer.serialize_struct("LinkedDeviceLogInfo", 13)?; + s.serialize_field(".tag", "legacy_device_session")?; + x.internal_serialize::(&mut s)?; + s.end() + } + LinkedDeviceLogInfo::MobileDeviceSession(x) => { + // struct + let mut s = serializer.serialize_struct("LinkedDeviceLogInfo", 10)?; + s.serialize_field(".tag", "mobile_device_session")?; + x.internal_serialize::(&mut s)?; + s.end() + } + LinkedDeviceLogInfo::WebDeviceSession(x) => { + // struct + let mut s = serializer.serialize_struct("LinkedDeviceLogInfo", 8)?; + s.serialize_field(".tag", "web_device_session")?; + x.internal_serialize::(&mut s)?; + s.end() + } + LinkedDeviceLogInfo::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) + } + } +} + +/// File lock status +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // variants may be added in the future +pub enum LockStatus { + Locked, + Unlocked, + /// Catch-all used for unrecognized values returned from the server. Encountering this value + /// typically indicates that this SDK version is out of date. + Other, +} + +impl<'de> ::serde::de::Deserialize<'de> for LockStatus { + fn deserialize>(deserializer: D) -> Result { + // union deserializer + use serde::de::{self, MapAccess, Visitor}; + struct EnumVisitor; + impl<'de> Visitor<'de> for EnumVisitor { + type Value = LockStatus; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a LockStatus structure") + } + fn visit_map>(self, mut map: V) -> Result { + let tag: &str = match map.next_key()? { + Some(".tag") => map.next_value()?, + _ => return Err(de::Error::missing_field(".tag")) + }; + let value = match tag { + "locked" => LockStatus::Locked, + "unlocked" => LockStatus::Unlocked, + _ => LockStatus::Other, + }; + crate::eat_json_fields(&mut map)?; + Ok(value) + } + } + const VARIANTS: &[&str] = &["locked", + "unlocked", + "other"]; + deserializer.deserialize_struct("LockStatus", VARIANTS, EnumVisitor) + } +} + +impl ::serde::ser::Serialize for LockStatus { + fn serialize(&self, serializer: S) -> Result { + // union serializer + use serde::ser::SerializeStruct; + match self { + LockStatus::Locked => { + // unit + let mut s = serializer.serialize_struct("LockStatus", 1)?; + s.serialize_field(".tag", "locked")?; + s.end() + } + LockStatus::Unlocked => { + // unit + let mut s = serializer.serialize_struct("LockStatus", 1)?; + s.serialize_field(".tag", "unlocked")?; + s.end() + } + LockStatus::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) + } + } +} + +/// Failed to sign in. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct GroupAddExternalIdDetails { - /// Current external id. - pub new_value: crate::types::team_common::GroupExternalId, +pub struct LoginFailDetails { + /// Login method. + pub login_method: LoginMethod, + /// Error details. + pub error_details: FailureDetailsLogInfo, + /// Tells if the login device is EMM managed. Might be missing due to historical data gap. + pub is_emm_managed: Option, } -impl GroupAddExternalIdDetails { - pub fn new(new_value: crate::types::team_common::GroupExternalId) -> Self { - GroupAddExternalIdDetails { - new_value, +impl LoginFailDetails { + pub fn new(login_method: LoginMethod, error_details: FailureDetailsLogInfo) -> Self { + LoginFailDetails { + login_method, + error_details, + is_emm_managed: None, } } + + pub fn with_is_emm_managed(mut self, value: bool) -> Self { + self.is_emm_managed = Some(value); + self + } } -const GROUP_ADD_EXTERNAL_ID_DETAILS_FIELDS: &[&str] = &["new_value"]; -impl GroupAddExternalIdDetails { +const LOGIN_FAIL_DETAILS_FIELDS: &[&str] = &["login_method", + "error_details", + "is_emm_managed"]; +impl LoginFailDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_new_value = None; + ) -> Result, V::Error> { + let mut field_login_method = None; + let mut field_error_details = None; + let mut field_is_emm_managed = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "new_value" => { - if field_new_value.is_some() { - return Err(::serde::de::Error::duplicate_field("new_value")); + "login_method" => { + if field_login_method.is_some() { + return Err(::serde::de::Error::duplicate_field("login_method")); } - field_new_value = Some(map.next_value()?); + field_login_method = Some(map.next_value()?); + } + "error_details" => { + if field_error_details.is_some() { + return Err(::serde::de::Error::duplicate_field("error_details")); + } + field_error_details = Some(map.next_value()?); + } + "is_emm_managed" => { + if field_is_emm_managed.is_some() { + return Err(::serde::de::Error::duplicate_field("is_emm_managed")); + } + field_is_emm_managed = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -51351,8 +73234,10 @@ impl GroupAddExternalIdDetails { if optional && nothing { return Ok(None); } - let result = GroupAddExternalIdDetails { - new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, + let result = LoginFailDetails { + login_method: field_login_method.ok_or_else(|| ::serde::de::Error::missing_field("login_method"))?, + error_details: field_error_details.ok_or_else(|| ::serde::de::Error::missing_field("error_details"))?, + is_emm_managed: field_is_emm_managed.and_then(Option::flatten), }; Ok(Some(result)) } @@ -51362,34 +73247,38 @@ impl GroupAddExternalIdDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("new_value", &self.new_value)?; + s.serialize_field("login_method", &self.login_method)?; + s.serialize_field("error_details", &self.error_details)?; + if let Some(val) = &self.is_emm_managed { + s.serialize_field("is_emm_managed", val)?; + } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for GroupAddExternalIdDetails { +impl<'de> ::serde::de::Deserialize<'de> for LoginFailDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = GroupAddExternalIdDetails; + type Value = LoginFailDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a GroupAddExternalIdDetails struct") + f.write_str("a LoginFailDetails struct") } fn visit_map>(self, map: V) -> Result { - GroupAddExternalIdDetails::internal_deserialize(map) + LoginFailDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("GroupAddExternalIdDetails", GROUP_ADD_EXTERNAL_ID_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("LoginFailDetails", LOGIN_FAIL_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for GroupAddExternalIdDetails { +impl ::serde::ser::Serialize for LoginFailDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("GroupAddExternalIdDetails", 1)?; + let mut s = serializer.serialize_struct("LoginFailDetails", 3)?; self.internal_serialize::(&mut s)?; s.end() } @@ -51397,30 +73286,30 @@ impl ::serde::ser::Serialize for GroupAddExternalIdDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct GroupAddExternalIdType { +pub struct LoginFailType { pub description: String, } -impl GroupAddExternalIdType { +impl LoginFailType { pub fn new(description: String) -> Self { - GroupAddExternalIdType { + LoginFailType { description, } } } -const GROUP_ADD_EXTERNAL_ID_TYPE_FIELDS: &[&str] = &["description"]; -impl GroupAddExternalIdType { +const LOGIN_FAIL_TYPE_FIELDS: &[&str] = &["description"]; +impl LoginFailType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -51441,7 +73330,7 @@ impl GroupAddExternalIdType { if optional && nothing { return Ok(None); } - let result = GroupAddExternalIdType { + let result = LoginFailType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -51457,72 +73346,241 @@ impl GroupAddExternalIdType { } } -impl<'de> ::serde::de::Deserialize<'de> for GroupAddExternalIdType { +impl<'de> ::serde::de::Deserialize<'de> for LoginFailType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = GroupAddExternalIdType; + type Value = LoginFailType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a GroupAddExternalIdType struct") + f.write_str("a LoginFailType struct") } fn visit_map>(self, map: V) -> Result { - GroupAddExternalIdType::internal_deserialize(map) + LoginFailType::internal_deserialize(map) } } - deserializer.deserialize_struct("GroupAddExternalIdType", GROUP_ADD_EXTERNAL_ID_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("LoginFailType", LOGIN_FAIL_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for GroupAddExternalIdType { +impl ::serde::ser::Serialize for LoginFailType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("GroupAddExternalIdType", 1)?; + let mut s = serializer.serialize_struct("LoginFailType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Added team members to group. +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // variants may be added in the future +pub enum LoginMethod { + AppleOauth, + FirstPartyTokenExchange, + GoogleOauth, + KakaoOauth, + LenovoOauth, + Passkey, + Password, + QrCode, + Saml, + TwoFactorAuthentication, + WebSession, + MicrosoftOauth, + /// Catch-all used for unrecognized values returned from the server. Encountering this value + /// typically indicates that this SDK version is out of date. + Other, +} + +impl<'de> ::serde::de::Deserialize<'de> for LoginMethod { + fn deserialize>(deserializer: D) -> Result { + // union deserializer + use serde::de::{self, MapAccess, Visitor}; + struct EnumVisitor; + impl<'de> Visitor<'de> for EnumVisitor { + type Value = LoginMethod; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a LoginMethod structure") + } + fn visit_map>(self, mut map: V) -> Result { + let tag: &str = match map.next_key()? { + Some(".tag") => map.next_value()?, + _ => return Err(de::Error::missing_field(".tag")) + }; + let value = match tag { + "apple_oauth" => LoginMethod::AppleOauth, + "first_party_token_exchange" => LoginMethod::FirstPartyTokenExchange, + "google_oauth" => LoginMethod::GoogleOauth, + "kakao_oauth" => LoginMethod::KakaoOauth, + "lenovo_oauth" => LoginMethod::LenovoOauth, + "passkey" => LoginMethod::Passkey, + "password" => LoginMethod::Password, + "qr_code" => LoginMethod::QrCode, + "saml" => LoginMethod::Saml, + "two_factor_authentication" => LoginMethod::TwoFactorAuthentication, + "web_session" => LoginMethod::WebSession, + "microsoft_oauth" => LoginMethod::MicrosoftOauth, + _ => LoginMethod::Other, + }; + crate::eat_json_fields(&mut map)?; + Ok(value) + } + } + const VARIANTS: &[&str] = &["apple_oauth", + "first_party_token_exchange", + "google_oauth", + "kakao_oauth", + "lenovo_oauth", + "passkey", + "password", + "qr_code", + "saml", + "two_factor_authentication", + "web_session", + "microsoft_oauth", + "other"]; + deserializer.deserialize_struct("LoginMethod", VARIANTS, EnumVisitor) + } +} + +impl ::serde::ser::Serialize for LoginMethod { + fn serialize(&self, serializer: S) -> Result { + // union serializer + use serde::ser::SerializeStruct; + match self { + LoginMethod::AppleOauth => { + // unit + let mut s = serializer.serialize_struct("LoginMethod", 1)?; + s.serialize_field(".tag", "apple_oauth")?; + s.end() + } + LoginMethod::FirstPartyTokenExchange => { + // unit + let mut s = serializer.serialize_struct("LoginMethod", 1)?; + s.serialize_field(".tag", "first_party_token_exchange")?; + s.end() + } + LoginMethod::GoogleOauth => { + // unit + let mut s = serializer.serialize_struct("LoginMethod", 1)?; + s.serialize_field(".tag", "google_oauth")?; + s.end() + } + LoginMethod::KakaoOauth => { + // unit + let mut s = serializer.serialize_struct("LoginMethod", 1)?; + s.serialize_field(".tag", "kakao_oauth")?; + s.end() + } + LoginMethod::LenovoOauth => { + // unit + let mut s = serializer.serialize_struct("LoginMethod", 1)?; + s.serialize_field(".tag", "lenovo_oauth")?; + s.end() + } + LoginMethod::Passkey => { + // unit + let mut s = serializer.serialize_struct("LoginMethod", 1)?; + s.serialize_field(".tag", "passkey")?; + s.end() + } + LoginMethod::Password => { + // unit + let mut s = serializer.serialize_struct("LoginMethod", 1)?; + s.serialize_field(".tag", "password")?; + s.end() + } + LoginMethod::QrCode => { + // unit + let mut s = serializer.serialize_struct("LoginMethod", 1)?; + s.serialize_field(".tag", "qr_code")?; + s.end() + } + LoginMethod::Saml => { + // unit + let mut s = serializer.serialize_struct("LoginMethod", 1)?; + s.serialize_field(".tag", "saml")?; + s.end() + } + LoginMethod::TwoFactorAuthentication => { + // unit + let mut s = serializer.serialize_struct("LoginMethod", 1)?; + s.serialize_field(".tag", "two_factor_authentication")?; + s.end() + } + LoginMethod::WebSession => { + // unit + let mut s = serializer.serialize_struct("LoginMethod", 1)?; + s.serialize_field(".tag", "web_session")?; + s.end() + } + LoginMethod::MicrosoftOauth => { + // unit + let mut s = serializer.serialize_struct("LoginMethod", 1)?; + s.serialize_field(".tag", "microsoft_oauth")?; + s.end() + } + LoginMethod::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) + } + } +} + +/// Signed in. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct GroupAddMemberDetails { - /// Is group owner. - pub is_group_owner: bool, +pub struct LoginSuccessDetails { + /// Login method. + pub login_method: LoginMethod, + /// Tells if the login device is EMM managed. Might be missing due to historical data gap. + pub is_emm_managed: Option, } -impl GroupAddMemberDetails { - pub fn new(is_group_owner: bool) -> Self { - GroupAddMemberDetails { - is_group_owner, +impl LoginSuccessDetails { + pub fn new(login_method: LoginMethod) -> Self { + LoginSuccessDetails { + login_method, + is_emm_managed: None, } } + + pub fn with_is_emm_managed(mut self, value: bool) -> Self { + self.is_emm_managed = Some(value); + self + } } -const GROUP_ADD_MEMBER_DETAILS_FIELDS: &[&str] = &["is_group_owner"]; -impl GroupAddMemberDetails { +const LOGIN_SUCCESS_DETAILS_FIELDS: &[&str] = &["login_method", + "is_emm_managed"]; +impl LoginSuccessDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_is_group_owner = None; + ) -> Result, V::Error> { + let mut field_login_method = None; + let mut field_is_emm_managed = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "is_group_owner" => { - if field_is_group_owner.is_some() { - return Err(::serde::de::Error::duplicate_field("is_group_owner")); + "login_method" => { + if field_login_method.is_some() { + return Err(::serde::de::Error::duplicate_field("login_method")); + } + field_login_method = Some(map.next_value()?); + } + "is_emm_managed" => { + if field_is_emm_managed.is_some() { + return Err(::serde::de::Error::duplicate_field("is_emm_managed")); } - field_is_group_owner = Some(map.next_value()?); + field_is_emm_managed = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -51533,8 +73591,9 @@ impl GroupAddMemberDetails { if optional && nothing { return Ok(None); } - let result = GroupAddMemberDetails { - is_group_owner: field_is_group_owner.ok_or_else(|| ::serde::de::Error::missing_field("is_group_owner"))?, + let result = LoginSuccessDetails { + login_method: field_login_method.ok_or_else(|| ::serde::de::Error::missing_field("login_method"))?, + is_emm_managed: field_is_emm_managed.and_then(Option::flatten), }; Ok(Some(result)) } @@ -51544,34 +73603,37 @@ impl GroupAddMemberDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("is_group_owner", &self.is_group_owner)?; + s.serialize_field("login_method", &self.login_method)?; + if let Some(val) = &self.is_emm_managed { + s.serialize_field("is_emm_managed", val)?; + } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for GroupAddMemberDetails { +impl<'de> ::serde::de::Deserialize<'de> for LoginSuccessDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = GroupAddMemberDetails; + type Value = LoginSuccessDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a GroupAddMemberDetails struct") + f.write_str("a LoginSuccessDetails struct") } fn visit_map>(self, map: V) -> Result { - GroupAddMemberDetails::internal_deserialize(map) + LoginSuccessDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("GroupAddMemberDetails", GROUP_ADD_MEMBER_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("LoginSuccessDetails", LOGIN_SUCCESS_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for GroupAddMemberDetails { +impl ::serde::ser::Serialize for LoginSuccessDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("GroupAddMemberDetails", 1)?; + let mut s = serializer.serialize_struct("LoginSuccessDetails", 2)?; self.internal_serialize::(&mut s)?; s.end() } @@ -51579,30 +73641,30 @@ impl ::serde::ser::Serialize for GroupAddMemberDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct GroupAddMemberType { +pub struct LoginSuccessType { pub description: String, } -impl GroupAddMemberType { +impl LoginSuccessType { pub fn new(description: String) -> Self { - GroupAddMemberType { + LoginSuccessType { description, } } } -const GROUP_ADD_MEMBER_TYPE_FIELDS: &[&str] = &["description"]; -impl GroupAddMemberType { +const LOGIN_SUCCESS_TYPE_FIELDS: &[&str] = &["description"]; +impl LoginSuccessType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -51623,7 +73685,7 @@ impl GroupAddMemberType { if optional && nothing { return Ok(None); } - let result = GroupAddMemberType { + let result = LoginSuccessType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -51639,86 +73701,63 @@ impl GroupAddMemberType { } } -impl<'de> ::serde::de::Deserialize<'de> for GroupAddMemberType { +impl<'de> ::serde::de::Deserialize<'de> for LoginSuccessType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = GroupAddMemberType; + type Value = LoginSuccessType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a GroupAddMemberType struct") + f.write_str("a LoginSuccessType struct") } fn visit_map>(self, map: V) -> Result { - GroupAddMemberType::internal_deserialize(map) + LoginSuccessType::internal_deserialize(map) } } - deserializer.deserialize_struct("GroupAddMemberType", GROUP_ADD_MEMBER_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("LoginSuccessType", LOGIN_SUCCESS_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for GroupAddMemberType { +impl ::serde::ser::Serialize for LoginSuccessType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("GroupAddMemberType", 1)?; + let mut s = serializer.serialize_struct("LoginSuccessType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Changed external ID for group. -#[derive(Debug, Clone, PartialEq, Eq)] +/// Signed out. +#[derive(Debug, Clone, PartialEq, Eq, Default)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct GroupChangeExternalIdDetails { - /// Current external id. - pub new_value: crate::types::team_common::GroupExternalId, - /// Old external id. - pub previous_value: crate::types::team_common::GroupExternalId, +pub struct LogoutDetails { + /// Login session id. + pub login_id: Option, } -impl GroupChangeExternalIdDetails { - pub fn new( - new_value: crate::types::team_common::GroupExternalId, - previous_value: crate::types::team_common::GroupExternalId, - ) -> Self { - GroupChangeExternalIdDetails { - new_value, - previous_value, - } +impl LogoutDetails { + pub fn with_login_id(mut self, value: String) -> Self { + self.login_id = Some(value); + self } } -const GROUP_CHANGE_EXTERNAL_ID_DETAILS_FIELDS: &[&str] = &["new_value", - "previous_value"]; -impl GroupChangeExternalIdDetails { +const LOGOUT_DETAILS_FIELDS: &[&str] = &["login_id"]; +impl LogoutDetails { + // no _opt deserializer pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( - map: V, - ) -> Result { - Self::internal_deserialize_opt(map, false).map(Option::unwrap) - } - - pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - optional: bool, - ) -> Result, V::Error> { - let mut field_new_value = None; - let mut field_previous_value = None; - let mut nothing = true; + ) -> Result { + let mut field_login_id = None; while let Some(key) = map.next_key::<&str>()? { - nothing = false; match key { - "new_value" => { - if field_new_value.is_some() { - return Err(::serde::de::Error::duplicate_field("new_value")); - } - field_new_value = Some(map.next_value()?); - } - "previous_value" => { - if field_previous_value.is_some() { - return Err(::serde::de::Error::duplicate_field("previous_value")); + "login_id" => { + if field_login_id.is_some() { + return Err(::serde::de::Error::duplicate_field("login_id")); } - field_previous_value = Some(map.next_value()?); + field_login_id = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -51726,14 +73765,10 @@ impl GroupChangeExternalIdDetails { } } } - if optional && nothing { - return Ok(None); - } - let result = GroupChangeExternalIdDetails { - new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, - previous_value: field_previous_value.ok_or_else(|| ::serde::de::Error::missing_field("previous_value"))?, + let result = LogoutDetails { + login_id: field_login_id.and_then(Option::flatten), }; - Ok(Some(result)) + Ok(result) } pub(crate) fn internal_serialize( @@ -51741,35 +73776,36 @@ impl GroupChangeExternalIdDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("new_value", &self.new_value)?; - s.serialize_field("previous_value", &self.previous_value)?; + if let Some(val) = &self.login_id { + s.serialize_field("login_id", val)?; + } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for GroupChangeExternalIdDetails { +impl<'de> ::serde::de::Deserialize<'de> for LogoutDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = GroupChangeExternalIdDetails; + type Value = LogoutDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a GroupChangeExternalIdDetails struct") + f.write_str("a LogoutDetails struct") } fn visit_map>(self, map: V) -> Result { - GroupChangeExternalIdDetails::internal_deserialize(map) + LogoutDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("GroupChangeExternalIdDetails", GROUP_CHANGE_EXTERNAL_ID_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("LogoutDetails", LOGOUT_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for GroupChangeExternalIdDetails { +impl ::serde::ser::Serialize for LogoutDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("GroupChangeExternalIdDetails", 2)?; + let mut s = serializer.serialize_struct("LogoutDetails", 1)?; self.internal_serialize::(&mut s)?; s.end() } @@ -51777,30 +73813,30 @@ impl ::serde::ser::Serialize for GroupChangeExternalIdDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct GroupChangeExternalIdType { +pub struct LogoutType { pub description: String, } -impl GroupChangeExternalIdType { +impl LogoutType { pub fn new(description: String) -> Self { - GroupChangeExternalIdType { + LogoutType { description, } } } -const GROUP_CHANGE_EXTERNAL_ID_TYPE_FIELDS: &[&str] = &["description"]; -impl GroupChangeExternalIdType { +const LOGOUT_TYPE_FIELDS: &[&str] = &["description"]; +impl LogoutType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -51821,7 +73857,7 @@ impl GroupChangeExternalIdType { if optional && nothing { return Ok(None); } - let result = GroupChangeExternalIdType { + let result = LogoutType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -51837,91 +73873,104 @@ impl GroupChangeExternalIdType { } } -impl<'de> ::serde::de::Deserialize<'de> for GroupChangeExternalIdType { +impl<'de> ::serde::de::Deserialize<'de> for LogoutType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = GroupChangeExternalIdType; + type Value = LogoutType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a GroupChangeExternalIdType struct") + f.write_str("a LogoutType struct") } fn visit_map>(self, map: V) -> Result { - GroupChangeExternalIdType::internal_deserialize(map) + LogoutType::internal_deserialize(map) } } - deserializer.deserialize_struct("GroupChangeExternalIdType", GROUP_CHANGE_EXTERNAL_ID_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("LogoutType", LOGOUT_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for GroupChangeExternalIdType { +impl ::serde::ser::Serialize for LogoutType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("GroupChangeExternalIdType", 1)?; + let mut s = serializer.serialize_struct("LogoutType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Changed group management type. +/// Malware exclusion list state #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct GroupChangeManagementTypeDetails { - /// New group management type. - pub new_value: crate::types::team_common::GroupManagementType, - /// Previous group management type. Might be missing due to historical data gap. - pub previous_value: Option, +pub struct MalwareExclusionState { + /// The number of files that are excluded from the monitoring for malware alerts. + pub excluded_file_hashes_count: i64, + /// The file path of the last exclusion operation. + pub file_path_from_last_exclusion: Option, + /// The file path of the last inclusion operation. + pub file_path_from_last_inclusion: Option, } -impl GroupChangeManagementTypeDetails { - pub fn new(new_value: crate::types::team_common::GroupManagementType) -> Self { - GroupChangeManagementTypeDetails { - new_value, - previous_value: None, +impl MalwareExclusionState { + pub fn new(excluded_file_hashes_count: i64) -> Self { + MalwareExclusionState { + excluded_file_hashes_count, + file_path_from_last_exclusion: None, + file_path_from_last_inclusion: None, } } - pub fn with_previous_value( - mut self, - value: crate::types::team_common::GroupManagementType, - ) -> Self { - self.previous_value = Some(value); + pub fn with_file_path_from_last_exclusion(mut self, value: String) -> Self { + self.file_path_from_last_exclusion = Some(value); + self + } + + pub fn with_file_path_from_last_inclusion(mut self, value: String) -> Self { + self.file_path_from_last_inclusion = Some(value); self } } -const GROUP_CHANGE_MANAGEMENT_TYPE_DETAILS_FIELDS: &[&str] = &["new_value", - "previous_value"]; -impl GroupChangeManagementTypeDetails { +const MALWARE_EXCLUSION_STATE_FIELDS: &[&str] = &["excluded_file_hashes_count", + "file_path_from_last_exclusion", + "file_path_from_last_inclusion"]; +impl MalwareExclusionState { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_new_value = None; - let mut field_previous_value = None; + ) -> Result, V::Error> { + let mut field_excluded_file_hashes_count = None; + let mut field_file_path_from_last_exclusion = None; + let mut field_file_path_from_last_inclusion = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "new_value" => { - if field_new_value.is_some() { - return Err(::serde::de::Error::duplicate_field("new_value")); + "excluded_file_hashes_count" => { + if field_excluded_file_hashes_count.is_some() { + return Err(::serde::de::Error::duplicate_field("excluded_file_hashes_count")); } - field_new_value = Some(map.next_value()?); + field_excluded_file_hashes_count = Some(map.next_value()?); } - "previous_value" => { - if field_previous_value.is_some() { - return Err(::serde::de::Error::duplicate_field("previous_value")); + "file_path_from_last_exclusion" => { + if field_file_path_from_last_exclusion.is_some() { + return Err(::serde::de::Error::duplicate_field("file_path_from_last_exclusion")); } - field_previous_value = Some(map.next_value()?); + field_file_path_from_last_exclusion = Some(map.next_value()?); + } + "file_path_from_last_inclusion" => { + if field_file_path_from_last_inclusion.is_some() { + return Err(::serde::de::Error::duplicate_field("file_path_from_last_inclusion")); + } + field_file_path_from_last_inclusion = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -51932,9 +73981,10 @@ impl GroupChangeManagementTypeDetails { if optional && nothing { return Ok(None); } - let result = GroupChangeManagementTypeDetails { - new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, - previous_value: field_previous_value.and_then(Option::flatten), + let result = MalwareExclusionState { + excluded_file_hashes_count: field_excluded_file_hashes_count.ok_or_else(|| ::serde::de::Error::missing_field("excluded_file_hashes_count"))?, + file_path_from_last_exclusion: field_file_path_from_last_exclusion.and_then(Option::flatten), + file_path_from_last_inclusion: field_file_path_from_last_inclusion.and_then(Option::flatten), }; Ok(Some(result)) } @@ -51944,170 +73994,127 @@ impl GroupChangeManagementTypeDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("new_value", &self.new_value)?; - if let Some(val) = &self.previous_value { - s.serialize_field("previous_value", val)?; + s.serialize_field("excluded_file_hashes_count", &self.excluded_file_hashes_count)?; + if let Some(val) = &self.file_path_from_last_exclusion { + s.serialize_field("file_path_from_last_exclusion", val)?; + } + if let Some(val) = &self.file_path_from_last_inclusion { + s.serialize_field("file_path_from_last_inclusion", val)?; } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for GroupChangeManagementTypeDetails { +impl<'de> ::serde::de::Deserialize<'de> for MalwareExclusionState { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = GroupChangeManagementTypeDetails; + type Value = MalwareExclusionState; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a GroupChangeManagementTypeDetails struct") + f.write_str("a MalwareExclusionState struct") } fn visit_map>(self, map: V) -> Result { - GroupChangeManagementTypeDetails::internal_deserialize(map) + MalwareExclusionState::internal_deserialize(map) } } - deserializer.deserialize_struct("GroupChangeManagementTypeDetails", GROUP_CHANGE_MANAGEMENT_TYPE_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("MalwareExclusionState", MALWARE_EXCLUSION_STATE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for GroupChangeManagementTypeDetails { +impl ::serde::ser::Serialize for MalwareExclusionState { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("GroupChangeManagementTypeDetails", 2)?; + let mut s = serializer.serialize_struct("MalwareExclusionState", 3)?; self.internal_serialize::(&mut s)?; s.end() } } -#[derive(Debug, Clone, PartialEq, Eq)] +/// Created member access report. +#[derive(Debug, Clone, PartialEq, Eq, Default)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct GroupChangeManagementTypeType { - pub description: String, -} - -impl GroupChangeManagementTypeType { - pub fn new(description: String) -> Self { - GroupChangeManagementTypeType { - description, - } - } +pub struct MemberAccessDetailsCreateReportDetails { } -const GROUP_CHANGE_MANAGEMENT_TYPE_TYPE_FIELDS: &[&str] = &["description"]; -impl GroupChangeManagementTypeType { +const MEMBER_ACCESS_DETAILS_CREATE_REPORT_DETAILS_FIELDS: &[&str] = &[]; +impl MemberAccessDetailsCreateReportDetails { + // no _opt deserializer pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( - map: V, - ) -> Result { - Self::internal_deserialize_opt(map, false).map(Option::unwrap) - } - - pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - optional: bool, - ) -> Result, V::Error> { - let mut field_description = None; - let mut nothing = true; - while let Some(key) = map.next_key::<&str>()? { - nothing = false; - match key { - "description" => { - if field_description.is_some() { - return Err(::serde::de::Error::duplicate_field("description")); - } - field_description = Some(map.next_value()?); - } - _ => { - // unknown field allowed and ignored - map.next_value::<::serde_json::Value>()?; - } - } - } - if optional && nothing { - return Ok(None); - } - let result = GroupChangeManagementTypeType { - description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, - }; - Ok(Some(result)) - } - - pub(crate) fn internal_serialize( - &self, - s: &mut S::SerializeStruct, - ) -> Result<(), S::Error> { - use serde::ser::SerializeStruct; - s.serialize_field("description", &self.description)?; - Ok(()) + ) -> Result { + // ignore any fields found; none are presently recognized + crate::eat_json_fields(&mut map)?; + Ok(MemberAccessDetailsCreateReportDetails {}) } } -impl<'de> ::serde::de::Deserialize<'de> for GroupChangeManagementTypeType { +impl<'de> ::serde::de::Deserialize<'de> for MemberAccessDetailsCreateReportDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = GroupChangeManagementTypeType; + type Value = MemberAccessDetailsCreateReportDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a GroupChangeManagementTypeType struct") + f.write_str("a MemberAccessDetailsCreateReportDetails struct") } fn visit_map>(self, map: V) -> Result { - GroupChangeManagementTypeType::internal_deserialize(map) + MemberAccessDetailsCreateReportDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("GroupChangeManagementTypeType", GROUP_CHANGE_MANAGEMENT_TYPE_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("MemberAccessDetailsCreateReportDetails", MEMBER_ACCESS_DETAILS_CREATE_REPORT_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for GroupChangeManagementTypeType { +impl ::serde::ser::Serialize for MemberAccessDetailsCreateReportDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("GroupChangeManagementTypeType", 1)?; - self.internal_serialize::(&mut s)?; - s.end() + serializer.serialize_struct("MemberAccessDetailsCreateReportDetails", 0)?.end() } } -/// Changed manager permissions of group member. +/// Couldn't generate member access report. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct GroupChangeMemberRoleDetails { - /// Is group owner. - pub is_group_owner: bool, +pub struct MemberAccessDetailsCreateReportFailedDetails { + /// Failure reason. + pub failure_reason: crate::types::team::TeamReportFailureReason, } -impl GroupChangeMemberRoleDetails { - pub fn new(is_group_owner: bool) -> Self { - GroupChangeMemberRoleDetails { - is_group_owner, +impl MemberAccessDetailsCreateReportFailedDetails { + pub fn new(failure_reason: crate::types::team::TeamReportFailureReason) -> Self { + MemberAccessDetailsCreateReportFailedDetails { + failure_reason, } } } -const GROUP_CHANGE_MEMBER_ROLE_DETAILS_FIELDS: &[&str] = &["is_group_owner"]; -impl GroupChangeMemberRoleDetails { +const MEMBER_ACCESS_DETAILS_CREATE_REPORT_FAILED_DETAILS_FIELDS: &[&str] = &["failure_reason"]; +impl MemberAccessDetailsCreateReportFailedDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_is_group_owner = None; + ) -> Result, V::Error> { + let mut field_failure_reason = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "is_group_owner" => { - if field_is_group_owner.is_some() { - return Err(::serde::de::Error::duplicate_field("is_group_owner")); + "failure_reason" => { + if field_failure_reason.is_some() { + return Err(::serde::de::Error::duplicate_field("failure_reason")); } - field_is_group_owner = Some(map.next_value()?); + field_failure_reason = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -52118,8 +74125,8 @@ impl GroupChangeMemberRoleDetails { if optional && nothing { return Ok(None); } - let result = GroupChangeMemberRoleDetails { - is_group_owner: field_is_group_owner.ok_or_else(|| ::serde::de::Error::missing_field("is_group_owner"))?, + let result = MemberAccessDetailsCreateReportFailedDetails { + failure_reason: field_failure_reason.ok_or_else(|| ::serde::de::Error::missing_field("failure_reason"))?, }; Ok(Some(result)) } @@ -52129,34 +74136,34 @@ impl GroupChangeMemberRoleDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("is_group_owner", &self.is_group_owner)?; + s.serialize_field("failure_reason", &self.failure_reason)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for GroupChangeMemberRoleDetails { +impl<'de> ::serde::de::Deserialize<'de> for MemberAccessDetailsCreateReportFailedDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = GroupChangeMemberRoleDetails; + type Value = MemberAccessDetailsCreateReportFailedDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a GroupChangeMemberRoleDetails struct") + f.write_str("a MemberAccessDetailsCreateReportFailedDetails struct") } fn visit_map>(self, map: V) -> Result { - GroupChangeMemberRoleDetails::internal_deserialize(map) + MemberAccessDetailsCreateReportFailedDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("GroupChangeMemberRoleDetails", GROUP_CHANGE_MEMBER_ROLE_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("MemberAccessDetailsCreateReportFailedDetails", MEMBER_ACCESS_DETAILS_CREATE_REPORT_FAILED_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for GroupChangeMemberRoleDetails { +impl ::serde::ser::Serialize for MemberAccessDetailsCreateReportFailedDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("GroupChangeMemberRoleDetails", 1)?; + let mut s = serializer.serialize_struct("MemberAccessDetailsCreateReportFailedDetails", 1)?; self.internal_serialize::(&mut s)?; s.end() } @@ -52164,30 +74171,30 @@ impl ::serde::ser::Serialize for GroupChangeMemberRoleDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct GroupChangeMemberRoleType { +pub struct MemberAccessDetailsCreateReportFailedType { pub description: String, } -impl GroupChangeMemberRoleType { +impl MemberAccessDetailsCreateReportFailedType { pub fn new(description: String) -> Self { - GroupChangeMemberRoleType { + MemberAccessDetailsCreateReportFailedType { description, } } } -const GROUP_CHANGE_MEMBER_ROLE_TYPE_FIELDS: &[&str] = &["description"]; -impl GroupChangeMemberRoleType { +const MEMBER_ACCESS_DETAILS_CREATE_REPORT_FAILED_TYPE_FIELDS: &[&str] = &["description"]; +impl MemberAccessDetailsCreateReportFailedType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -52208,7 +74215,7 @@ impl GroupChangeMemberRoleType { if optional && nothing { return Ok(None); } - let result = GroupChangeMemberRoleType { + let result = MemberAccessDetailsCreateReportFailedType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -52224,130 +74231,29 @@ impl GroupChangeMemberRoleType { } } -impl<'de> ::serde::de::Deserialize<'de> for GroupChangeMemberRoleType { - fn deserialize>(deserializer: D) -> Result { - // struct deserializer - use serde::de::{MapAccess, Visitor}; - struct StructVisitor; - impl<'de> Visitor<'de> for StructVisitor { - type Value = GroupChangeMemberRoleType; - fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a GroupChangeMemberRoleType struct") - } - fn visit_map>(self, map: V) -> Result { - GroupChangeMemberRoleType::internal_deserialize(map) - } - } - deserializer.deserialize_struct("GroupChangeMemberRoleType", GROUP_CHANGE_MEMBER_ROLE_TYPE_FIELDS, StructVisitor) - } -} - -impl ::serde::ser::Serialize for GroupChangeMemberRoleType { - fn serialize(&self, serializer: S) -> Result { - // struct serializer - use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("GroupChangeMemberRoleType", 1)?; - self.internal_serialize::(&mut s)?; - s.end() - } -} - -/// Created group. -#[derive(Debug, Clone, PartialEq, Eq, Default)] -#[non_exhaustive] // structs may have more fields added in the future. -pub struct GroupCreateDetails { - /// Is company managed group. - pub is_company_managed: Option, - /// Group join policy. - pub join_policy: Option, -} - -impl GroupCreateDetails { - pub fn with_is_company_managed(mut self, value: bool) -> Self { - self.is_company_managed = Some(value); - self - } - - pub fn with_join_policy(mut self, value: GroupJoinPolicy) -> Self { - self.join_policy = Some(value); - self - } -} - -const GROUP_CREATE_DETAILS_FIELDS: &[&str] = &["is_company_managed", - "join_policy"]; -impl GroupCreateDetails { - // no _opt deserializer - pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( - mut map: V, - ) -> Result { - let mut field_is_company_managed = None; - let mut field_join_policy = None; - while let Some(key) = map.next_key::<&str>()? { - match key { - "is_company_managed" => { - if field_is_company_managed.is_some() { - return Err(::serde::de::Error::duplicate_field("is_company_managed")); - } - field_is_company_managed = Some(map.next_value()?); - } - "join_policy" => { - if field_join_policy.is_some() { - return Err(::serde::de::Error::duplicate_field("join_policy")); - } - field_join_policy = Some(map.next_value()?); - } - _ => { - // unknown field allowed and ignored - map.next_value::<::serde_json::Value>()?; - } - } - } - let result = GroupCreateDetails { - is_company_managed: field_is_company_managed.and_then(Option::flatten), - join_policy: field_join_policy.and_then(Option::flatten), - }; - Ok(result) - } - - pub(crate) fn internal_serialize( - &self, - s: &mut S::SerializeStruct, - ) -> Result<(), S::Error> { - use serde::ser::SerializeStruct; - if let Some(val) = &self.is_company_managed { - s.serialize_field("is_company_managed", val)?; - } - if let Some(val) = &self.join_policy { - s.serialize_field("join_policy", val)?; - } - Ok(()) - } -} - -impl<'de> ::serde::de::Deserialize<'de> for GroupCreateDetails { +impl<'de> ::serde::de::Deserialize<'de> for MemberAccessDetailsCreateReportFailedType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = GroupCreateDetails; + type Value = MemberAccessDetailsCreateReportFailedType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a GroupCreateDetails struct") + f.write_str("a MemberAccessDetailsCreateReportFailedType struct") } fn visit_map>(self, map: V) -> Result { - GroupCreateDetails::internal_deserialize(map) + MemberAccessDetailsCreateReportFailedType::internal_deserialize(map) } } - deserializer.deserialize_struct("GroupCreateDetails", GROUP_CREATE_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("MemberAccessDetailsCreateReportFailedType", MEMBER_ACCESS_DETAILS_CREATE_REPORT_FAILED_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for GroupCreateDetails { +impl ::serde::ser::Serialize for MemberAccessDetailsCreateReportFailedType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("GroupCreateDetails", 2)?; + let mut s = serializer.serialize_struct("MemberAccessDetailsCreateReportFailedType", 1)?; self.internal_serialize::(&mut s)?; s.end() } @@ -52355,30 +74261,30 @@ impl ::serde::ser::Serialize for GroupCreateDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct GroupCreateType { +pub struct MemberAccessDetailsCreateReportType { pub description: String, } -impl GroupCreateType { +impl MemberAccessDetailsCreateReportType { pub fn new(description: String) -> Self { - GroupCreateType { + MemberAccessDetailsCreateReportType { description, } } } -const GROUP_CREATE_TYPE_FIELDS: &[&str] = &["description"]; -impl GroupCreateType { +const MEMBER_ACCESS_DETAILS_CREATE_REPORT_TYPE_FIELDS: &[&str] = &["description"]; +impl MemberAccessDetailsCreateReportType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -52399,7 +74305,7 @@ impl GroupCreateType { if optional && nothing { return Ok(None); } - let result = GroupCreateType { + let result = MemberAccessDetailsCreateReportType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -52415,63 +74321,72 @@ impl GroupCreateType { } } -impl<'de> ::serde::de::Deserialize<'de> for GroupCreateType { +impl<'de> ::serde::de::Deserialize<'de> for MemberAccessDetailsCreateReportType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = GroupCreateType; + type Value = MemberAccessDetailsCreateReportType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a GroupCreateType struct") + f.write_str("a MemberAccessDetailsCreateReportType struct") } fn visit_map>(self, map: V) -> Result { - GroupCreateType::internal_deserialize(map) + MemberAccessDetailsCreateReportType::internal_deserialize(map) } } - deserializer.deserialize_struct("GroupCreateType", GROUP_CREATE_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("MemberAccessDetailsCreateReportType", MEMBER_ACCESS_DETAILS_CREATE_REPORT_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for GroupCreateType { +impl ::serde::ser::Serialize for MemberAccessDetailsCreateReportType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("GroupCreateType", 1)?; + let mut s = serializer.serialize_struct("MemberAccessDetailsCreateReportType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Deleted group. -#[derive(Debug, Clone, PartialEq, Eq, Default)] +/// Added an external ID for team member. +#[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct GroupDeleteDetails { - /// Is company managed group. - pub is_company_managed: Option, +pub struct MemberAddExternalIdDetails { + /// Current external id. + pub new_value: crate::types::team_common::MemberExternalId, } -impl GroupDeleteDetails { - pub fn with_is_company_managed(mut self, value: bool) -> Self { - self.is_company_managed = Some(value); - self +impl MemberAddExternalIdDetails { + pub fn new(new_value: crate::types::team_common::MemberExternalId) -> Self { + MemberAddExternalIdDetails { + new_value, + } } } -const GROUP_DELETE_DETAILS_FIELDS: &[&str] = &["is_company_managed"]; -impl GroupDeleteDetails { - // no _opt deserializer +const MEMBER_ADD_EXTERNAL_ID_DETAILS_FIELDS: &[&str] = &["new_value"]; +impl MemberAddExternalIdDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - ) -> Result { - let mut field_is_company_managed = None; + optional: bool, + ) -> Result, V::Error> { + let mut field_new_value = None; + let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { + nothing = false; match key { - "is_company_managed" => { - if field_is_company_managed.is_some() { - return Err(::serde::de::Error::duplicate_field("is_company_managed")); + "new_value" => { + if field_new_value.is_some() { + return Err(::serde::de::Error::duplicate_field("new_value")); } - field_is_company_managed = Some(map.next_value()?); + field_new_value = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -52479,10 +74394,13 @@ impl GroupDeleteDetails { } } } - let result = GroupDeleteDetails { - is_company_managed: field_is_company_managed.and_then(Option::flatten), + if optional && nothing { + return Ok(None); + } + let result = MemberAddExternalIdDetails { + new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, }; - Ok(result) + Ok(Some(result)) } pub(crate) fn internal_serialize( @@ -52490,36 +74408,34 @@ impl GroupDeleteDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - if let Some(val) = &self.is_company_managed { - s.serialize_field("is_company_managed", val)?; - } + s.serialize_field("new_value", &self.new_value)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for GroupDeleteDetails { +impl<'de> ::serde::de::Deserialize<'de> for MemberAddExternalIdDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = GroupDeleteDetails; + type Value = MemberAddExternalIdDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a GroupDeleteDetails struct") + f.write_str("a MemberAddExternalIdDetails struct") } fn visit_map>(self, map: V) -> Result { - GroupDeleteDetails::internal_deserialize(map) + MemberAddExternalIdDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("GroupDeleteDetails", GROUP_DELETE_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("MemberAddExternalIdDetails", MEMBER_ADD_EXTERNAL_ID_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for GroupDeleteDetails { +impl ::serde::ser::Serialize for MemberAddExternalIdDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("GroupDeleteDetails", 1)?; + let mut s = serializer.serialize_struct("MemberAddExternalIdDetails", 1)?; self.internal_serialize::(&mut s)?; s.end() } @@ -52527,30 +74443,30 @@ impl ::serde::ser::Serialize for GroupDeleteDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct GroupDeleteType { +pub struct MemberAddExternalIdType { pub description: String, } -impl GroupDeleteType { +impl MemberAddExternalIdType { pub fn new(description: String) -> Self { - GroupDeleteType { + MemberAddExternalIdType { description, } } } -const GROUP_DELETE_TYPE_FIELDS: &[&str] = &["description"]; -impl GroupDeleteType { +const MEMBER_ADD_EXTERNAL_ID_TYPE_FIELDS: &[&str] = &["description"]; +impl MemberAddExternalIdType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -52571,7 +74487,7 @@ impl GroupDeleteType { if optional && nothing { return Ok(None); } - let result = GroupDeleteType { + let result = MemberAddExternalIdType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -52587,104 +74503,152 @@ impl GroupDeleteType { } } -impl<'de> ::serde::de::Deserialize<'de> for GroupDeleteType { +impl<'de> ::serde::de::Deserialize<'de> for MemberAddExternalIdType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = GroupDeleteType; + type Value = MemberAddExternalIdType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a GroupDeleteType struct") + f.write_str("a MemberAddExternalIdType struct") } fn visit_map>(self, map: V) -> Result { - GroupDeleteType::internal_deserialize(map) + MemberAddExternalIdType::internal_deserialize(map) } } - deserializer.deserialize_struct("GroupDeleteType", GROUP_DELETE_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("MemberAddExternalIdType", MEMBER_ADD_EXTERNAL_ID_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for GroupDeleteType { +impl ::serde::ser::Serialize for MemberAddExternalIdType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("GroupDeleteType", 1)?; + let mut s = serializer.serialize_struct("MemberAddExternalIdType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Updated group. -#[derive(Debug, Clone, PartialEq, Eq, Default)] +/// Added team member name. +#[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct GroupDescriptionUpdatedDetails { +pub struct MemberAddNameDetails { + /// New user's name. + pub new_value: UserNameLogInfo, } -const GROUP_DESCRIPTION_UPDATED_DETAILS_FIELDS: &[&str] = &[]; -impl GroupDescriptionUpdatedDetails { - // no _opt deserializer +impl MemberAddNameDetails { + pub fn new(new_value: UserNameLogInfo) -> Self { + MemberAddNameDetails { + new_value, + } + } +} + +const MEMBER_ADD_NAME_DETAILS_FIELDS: &[&str] = &["new_value"]; +impl MemberAddNameDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - ) -> Result { - // ignore any fields found; none are presently recognized - crate::eat_json_fields(&mut map)?; - Ok(GroupDescriptionUpdatedDetails {}) + optional: bool, + ) -> Result, V::Error> { + let mut field_new_value = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "new_value" => { + if field_new_value.is_some() { + return Err(::serde::de::Error::duplicate_field("new_value")); + } + field_new_value = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } + } + } + if optional && nothing { + return Ok(None); + } + let result = MemberAddNameDetails { + new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("new_value", &self.new_value)?; + Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for GroupDescriptionUpdatedDetails { +impl<'de> ::serde::de::Deserialize<'de> for MemberAddNameDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = GroupDescriptionUpdatedDetails; + type Value = MemberAddNameDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a GroupDescriptionUpdatedDetails struct") + f.write_str("a MemberAddNameDetails struct") } fn visit_map>(self, map: V) -> Result { - GroupDescriptionUpdatedDetails::internal_deserialize(map) + MemberAddNameDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("GroupDescriptionUpdatedDetails", GROUP_DESCRIPTION_UPDATED_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("MemberAddNameDetails", MEMBER_ADD_NAME_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for GroupDescriptionUpdatedDetails { +impl ::serde::ser::Serialize for MemberAddNameDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - serializer.serialize_struct("GroupDescriptionUpdatedDetails", 0)?.end() + let mut s = serializer.serialize_struct("MemberAddNameDetails", 1)?; + self.internal_serialize::(&mut s)?; + s.end() } } #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct GroupDescriptionUpdatedType { +pub struct MemberAddNameType { pub description: String, } -impl GroupDescriptionUpdatedType { +impl MemberAddNameType { pub fn new(description: String) -> Self { - GroupDescriptionUpdatedType { + MemberAddNameType { description, } } } -const GROUP_DESCRIPTION_UPDATED_TYPE_FIELDS: &[&str] = &["description"]; -impl GroupDescriptionUpdatedType { +const MEMBER_ADD_NAME_TYPE_FIELDS: &[&str] = &["description"]; +impl MemberAddNameType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -52705,7 +74669,7 @@ impl GroupDescriptionUpdatedType { if optional && nothing { return Ok(None); } - let result = GroupDescriptionUpdatedType { + let result = MemberAddNameType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -52721,141 +74685,80 @@ impl GroupDescriptionUpdatedType { } } -impl<'de> ::serde::de::Deserialize<'de> for GroupDescriptionUpdatedType { +impl<'de> ::serde::de::Deserialize<'de> for MemberAddNameType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = GroupDescriptionUpdatedType; + type Value = MemberAddNameType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a GroupDescriptionUpdatedType struct") + f.write_str("a MemberAddNameType struct") } fn visit_map>(self, map: V) -> Result { - GroupDescriptionUpdatedType::internal_deserialize(map) + MemberAddNameType::internal_deserialize(map) } } - deserializer.deserialize_struct("GroupDescriptionUpdatedType", GROUP_DESCRIPTION_UPDATED_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("MemberAddNameType", MEMBER_ADD_NAME_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for GroupDescriptionUpdatedType { +impl ::serde::ser::Serialize for MemberAddNameType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("GroupDescriptionUpdatedType", 1)?; + let mut s = serializer.serialize_struct("MemberAddNameType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -#[derive(Debug, Clone, PartialEq, Eq)] -#[non_exhaustive] // variants may be added in the future -pub enum GroupJoinPolicy { - Open, - RequestToJoin, - /// Catch-all used for unrecognized values returned from the server. Encountering this value - /// typically indicates that this SDK version is out of date. - Other, -} - -impl<'de> ::serde::de::Deserialize<'de> for GroupJoinPolicy { - fn deserialize>(deserializer: D) -> Result { - // union deserializer - use serde::de::{self, MapAccess, Visitor}; - struct EnumVisitor; - impl<'de> Visitor<'de> for EnumVisitor { - type Value = GroupJoinPolicy; - fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a GroupJoinPolicy structure") - } - fn visit_map>(self, mut map: V) -> Result { - let tag: &str = match map.next_key()? { - Some(".tag") => map.next_value()?, - _ => return Err(de::Error::missing_field(".tag")) - }; - let value = match tag { - "open" => GroupJoinPolicy::Open, - "request_to_join" => GroupJoinPolicy::RequestToJoin, - _ => GroupJoinPolicy::Other, - }; - crate::eat_json_fields(&mut map)?; - Ok(value) - } - } - const VARIANTS: &[&str] = &["open", - "request_to_join", - "other"]; - deserializer.deserialize_struct("GroupJoinPolicy", VARIANTS, EnumVisitor) - } -} - -impl ::serde::ser::Serialize for GroupJoinPolicy { - fn serialize(&self, serializer: S) -> Result { - // union serializer - use serde::ser::SerializeStruct; - match self { - GroupJoinPolicy::Open => { - // unit - let mut s = serializer.serialize_struct("GroupJoinPolicy", 1)?; - s.serialize_field(".tag", "open")?; - s.end() - } - GroupJoinPolicy::RequestToJoin => { - // unit - let mut s = serializer.serialize_struct("GroupJoinPolicy", 1)?; - s.serialize_field(".tag", "request_to_join")?; - s.end() - } - GroupJoinPolicy::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) - } - } -} - -/// Updated group join policy. +/// Changed team member admin role. #[derive(Debug, Clone, PartialEq, Eq, Default)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct GroupJoinPolicyUpdatedDetails { - /// Is company managed group. - pub is_company_managed: Option, - /// Group join policy. - pub join_policy: Option, +pub struct MemberChangeAdminRoleDetails { + /// New admin role. This field is relevant when the admin role is changed or whenthe user role + /// changes from no admin rights to with admin rights. + pub new_value: Option, + /// Previous admin role. This field is relevant when the admin role is changed or when the admin + /// role is removed. + pub previous_value: Option, } -impl GroupJoinPolicyUpdatedDetails { - pub fn with_is_company_managed(mut self, value: bool) -> Self { - self.is_company_managed = Some(value); +impl MemberChangeAdminRoleDetails { + pub fn with_new_value(mut self, value: AdminRole) -> Self { + self.new_value = Some(value); self } - pub fn with_join_policy(mut self, value: GroupJoinPolicy) -> Self { - self.join_policy = Some(value); + pub fn with_previous_value(mut self, value: AdminRole) -> Self { + self.previous_value = Some(value); self } } -const GROUP_JOIN_POLICY_UPDATED_DETAILS_FIELDS: &[&str] = &["is_company_managed", - "join_policy"]; -impl GroupJoinPolicyUpdatedDetails { +const MEMBER_CHANGE_ADMIN_ROLE_DETAILS_FIELDS: &[&str] = &["new_value", + "previous_value"]; +impl MemberChangeAdminRoleDetails { // no _opt deserializer pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - ) -> Result { - let mut field_is_company_managed = None; - let mut field_join_policy = None; + ) -> Result { + let mut field_new_value = None; + let mut field_previous_value = None; while let Some(key) = map.next_key::<&str>()? { match key { - "is_company_managed" => { - if field_is_company_managed.is_some() { - return Err(::serde::de::Error::duplicate_field("is_company_managed")); + "new_value" => { + if field_new_value.is_some() { + return Err(::serde::de::Error::duplicate_field("new_value")); } - field_is_company_managed = Some(map.next_value()?); + field_new_value = Some(map.next_value()?); } - "join_policy" => { - if field_join_policy.is_some() { - return Err(::serde::de::Error::duplicate_field("join_policy")); + "previous_value" => { + if field_previous_value.is_some() { + return Err(::serde::de::Error::duplicate_field("previous_value")); } - field_join_policy = Some(map.next_value()?); + field_previous_value = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -52863,9 +74766,9 @@ impl GroupJoinPolicyUpdatedDetails { } } } - let result = GroupJoinPolicyUpdatedDetails { - is_company_managed: field_is_company_managed.and_then(Option::flatten), - join_policy: field_join_policy.and_then(Option::flatten), + let result = MemberChangeAdminRoleDetails { + new_value: field_new_value.and_then(Option::flatten), + previous_value: field_previous_value.and_then(Option::flatten), }; Ok(result) } @@ -52875,39 +74778,39 @@ impl GroupJoinPolicyUpdatedDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - if let Some(val) = &self.is_company_managed { - s.serialize_field("is_company_managed", val)?; + if let Some(val) = &self.new_value { + s.serialize_field("new_value", val)?; } - if let Some(val) = &self.join_policy { - s.serialize_field("join_policy", val)?; + if let Some(val) = &self.previous_value { + s.serialize_field("previous_value", val)?; } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for GroupJoinPolicyUpdatedDetails { +impl<'de> ::serde::de::Deserialize<'de> for MemberChangeAdminRoleDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = GroupJoinPolicyUpdatedDetails; + type Value = MemberChangeAdminRoleDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a GroupJoinPolicyUpdatedDetails struct") + f.write_str("a MemberChangeAdminRoleDetails struct") } fn visit_map>(self, map: V) -> Result { - GroupJoinPolicyUpdatedDetails::internal_deserialize(map) + MemberChangeAdminRoleDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("GroupJoinPolicyUpdatedDetails", GROUP_JOIN_POLICY_UPDATED_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("MemberChangeAdminRoleDetails", MEMBER_CHANGE_ADMIN_ROLE_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for GroupJoinPolicyUpdatedDetails { +impl ::serde::ser::Serialize for MemberChangeAdminRoleDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("GroupJoinPolicyUpdatedDetails", 2)?; + let mut s = serializer.serialize_struct("MemberChangeAdminRoleDetails", 2)?; self.internal_serialize::(&mut s)?; s.end() } @@ -52915,30 +74818,30 @@ impl ::serde::ser::Serialize for GroupJoinPolicyUpdatedDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct GroupJoinPolicyUpdatedType { +pub struct MemberChangeAdminRoleType { pub description: String, } -impl GroupJoinPolicyUpdatedType { +impl MemberChangeAdminRoleType { pub fn new(description: String) -> Self { - GroupJoinPolicyUpdatedType { + MemberChangeAdminRoleType { description, } } } -const GROUP_JOIN_POLICY_UPDATED_TYPE_FIELDS: &[&str] = &["description"]; -impl GroupJoinPolicyUpdatedType { +const MEMBER_CHANGE_ADMIN_ROLE_TYPE_FIELDS: &[&str] = &["description"]; +impl MemberChangeAdminRoleType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -52959,7 +74862,7 @@ impl GroupJoinPolicyUpdatedType { if optional && nothing { return Ok(None); } - let result = GroupJoinPolicyUpdatedType { + let result = MemberChangeAdminRoleType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -52975,104 +74878,88 @@ impl GroupJoinPolicyUpdatedType { } } -impl<'de> ::serde::de::Deserialize<'de> for GroupJoinPolicyUpdatedType { +impl<'de> ::serde::de::Deserialize<'de> for MemberChangeAdminRoleType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = GroupJoinPolicyUpdatedType; + type Value = MemberChangeAdminRoleType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a GroupJoinPolicyUpdatedType struct") + f.write_str("a MemberChangeAdminRoleType struct") } fn visit_map>(self, map: V) -> Result { - GroupJoinPolicyUpdatedType::internal_deserialize(map) + MemberChangeAdminRoleType::internal_deserialize(map) } } - deserializer.deserialize_struct("GroupJoinPolicyUpdatedType", GROUP_JOIN_POLICY_UPDATED_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("MemberChangeAdminRoleType", MEMBER_CHANGE_ADMIN_ROLE_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for GroupJoinPolicyUpdatedType { +impl ::serde::ser::Serialize for MemberChangeAdminRoleType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("GroupJoinPolicyUpdatedType", 1)?; + let mut s = serializer.serialize_struct("MemberChangeAdminRoleType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Group's logged information. +/// Changed team member email. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct GroupLogInfo { - /// The name of this group. - pub display_name: String, - /// The unique id of this group. - pub group_id: Option, - /// External group ID. - pub external_id: Option, +pub struct MemberChangeEmailDetails { + /// New email. + pub new_value: EmailAddress, + /// Previous email. Might be missing due to historical data gap. + pub previous_value: Option, } -impl GroupLogInfo { - pub fn new(display_name: String) -> Self { - GroupLogInfo { - display_name, - group_id: None, - external_id: None, +impl MemberChangeEmailDetails { + pub fn new(new_value: EmailAddress) -> Self { + MemberChangeEmailDetails { + new_value, + previous_value: None, } } - pub fn with_group_id(mut self, value: crate::types::team_common::GroupId) -> Self { - self.group_id = Some(value); - self - } - - pub fn with_external_id(mut self, value: crate::types::team_common::GroupExternalId) -> Self { - self.external_id = Some(value); + pub fn with_previous_value(mut self, value: EmailAddress) -> Self { + self.previous_value = Some(value); self } } -const GROUP_LOG_INFO_FIELDS: &[&str] = &["display_name", - "group_id", - "external_id"]; -impl GroupLogInfo { +const MEMBER_CHANGE_EMAIL_DETAILS_FIELDS: &[&str] = &["new_value", + "previous_value"]; +impl MemberChangeEmailDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_display_name = None; - let mut field_group_id = None; - let mut field_external_id = None; + ) -> Result, V::Error> { + let mut field_new_value = None; + let mut field_previous_value = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "display_name" => { - if field_display_name.is_some() { - return Err(::serde::de::Error::duplicate_field("display_name")); - } - field_display_name = Some(map.next_value()?); - } - "group_id" => { - if field_group_id.is_some() { - return Err(::serde::de::Error::duplicate_field("group_id")); + "new_value" => { + if field_new_value.is_some() { + return Err(::serde::de::Error::duplicate_field("new_value")); } - field_group_id = Some(map.next_value()?); + field_new_value = Some(map.next_value()?); } - "external_id" => { - if field_external_id.is_some() { - return Err(::serde::de::Error::duplicate_field("external_id")); + "previous_value" => { + if field_previous_value.is_some() { + return Err(::serde::de::Error::duplicate_field("previous_value")); } - field_external_id = Some(map.next_value()?); + field_previous_value = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -53083,10 +74970,9 @@ impl GroupLogInfo { if optional && nothing { return Ok(None); } - let result = GroupLogInfo { - display_name: field_display_name.ok_or_else(|| ::serde::de::Error::missing_field("display_name"))?, - group_id: field_group_id.and_then(Option::flatten), - external_id: field_external_id.and_then(Option::flatten), + let result = MemberChangeEmailDetails { + new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, + previous_value: field_previous_value.and_then(Option::flatten), }; Ok(Some(result)) } @@ -53096,115 +74982,68 @@ impl GroupLogInfo { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("display_name", &self.display_name)?; - if let Some(val) = &self.group_id { - s.serialize_field("group_id", val)?; - } - if let Some(val) = &self.external_id { - s.serialize_field("external_id", val)?; + s.serialize_field("new_value", &self.new_value)?; + if let Some(val) = &self.previous_value { + s.serialize_field("previous_value", val)?; } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for GroupLogInfo { +impl<'de> ::serde::de::Deserialize<'de> for MemberChangeEmailDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = GroupLogInfo; + type Value = MemberChangeEmailDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a GroupLogInfo struct") + f.write_str("a MemberChangeEmailDetails struct") } fn visit_map>(self, map: V) -> Result { - GroupLogInfo::internal_deserialize(map) + MemberChangeEmailDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("GroupLogInfo", GROUP_LOG_INFO_FIELDS, StructVisitor) + deserializer.deserialize_struct("MemberChangeEmailDetails", MEMBER_CHANGE_EMAIL_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for GroupLogInfo { +impl ::serde::ser::Serialize for MemberChangeEmailDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("GroupLogInfo", 3)?; + let mut s = serializer.serialize_struct("MemberChangeEmailDetails", 2)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Moved group. -#[derive(Debug, Clone, PartialEq, Eq, Default)] -#[non_exhaustive] // structs may have more fields added in the future. -pub struct GroupMovedDetails { -} - -const GROUP_MOVED_DETAILS_FIELDS: &[&str] = &[]; -impl GroupMovedDetails { - // no _opt deserializer - pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( - mut map: V, - ) -> Result { - // ignore any fields found; none are presently recognized - crate::eat_json_fields(&mut map)?; - Ok(GroupMovedDetails {}) - } -} - -impl<'de> ::serde::de::Deserialize<'de> for GroupMovedDetails { - fn deserialize>(deserializer: D) -> Result { - // struct deserializer - use serde::de::{MapAccess, Visitor}; - struct StructVisitor; - impl<'de> Visitor<'de> for StructVisitor { - type Value = GroupMovedDetails; - fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a GroupMovedDetails struct") - } - fn visit_map>(self, map: V) -> Result { - GroupMovedDetails::internal_deserialize(map) - } - } - deserializer.deserialize_struct("GroupMovedDetails", GROUP_MOVED_DETAILS_FIELDS, StructVisitor) - } -} - -impl ::serde::ser::Serialize for GroupMovedDetails { - fn serialize(&self, serializer: S) -> Result { - // struct serializer - use serde::ser::SerializeStruct; - serializer.serialize_struct("GroupMovedDetails", 0)?.end() - } -} - #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct GroupMovedType { +pub struct MemberChangeEmailType { pub description: String, } -impl GroupMovedType { +impl MemberChangeEmailType { pub fn new(description: String) -> Self { - GroupMovedType { + MemberChangeEmailType { description, } } } -const GROUP_MOVED_TYPE_FIELDS: &[&str] = &["description"]; -impl GroupMovedType { +const MEMBER_CHANGE_EMAIL_TYPE_FIELDS: &[&str] = &["description"]; +impl MemberChangeEmailType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -53225,7 +75064,7 @@ impl GroupMovedType { if optional && nothing { return Ok(None); } - let result = GroupMovedType { + let result = MemberChangeEmailType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -53241,67 +75080,81 @@ impl GroupMovedType { } } -impl<'de> ::serde::de::Deserialize<'de> for GroupMovedType { +impl<'de> ::serde::de::Deserialize<'de> for MemberChangeEmailType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = GroupMovedType; + type Value = MemberChangeEmailType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a GroupMovedType struct") + f.write_str("a MemberChangeEmailType struct") } fn visit_map>(self, map: V) -> Result { - GroupMovedType::internal_deserialize(map) + MemberChangeEmailType::internal_deserialize(map) } } - deserializer.deserialize_struct("GroupMovedType", GROUP_MOVED_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("MemberChangeEmailType", MEMBER_CHANGE_EMAIL_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for GroupMovedType { +impl ::serde::ser::Serialize for MemberChangeEmailType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("GroupMovedType", 1)?; + let mut s = serializer.serialize_struct("MemberChangeEmailType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Removed external ID for group. +/// Changed the external ID for team member. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct GroupRemoveExternalIdDetails { +pub struct MemberChangeExternalIdDetails { + /// Current external id. + pub new_value: crate::types::team_common::MemberExternalId, /// Old external id. - pub previous_value: crate::types::team_common::GroupExternalId, + pub previous_value: crate::types::team_common::MemberExternalId, } -impl GroupRemoveExternalIdDetails { - pub fn new(previous_value: crate::types::team_common::GroupExternalId) -> Self { - GroupRemoveExternalIdDetails { +impl MemberChangeExternalIdDetails { + pub fn new( + new_value: crate::types::team_common::MemberExternalId, + previous_value: crate::types::team_common::MemberExternalId, + ) -> Self { + MemberChangeExternalIdDetails { + new_value, previous_value, } } } -const GROUP_REMOVE_EXTERNAL_ID_DETAILS_FIELDS: &[&str] = &["previous_value"]; -impl GroupRemoveExternalIdDetails { +const MEMBER_CHANGE_EXTERNAL_ID_DETAILS_FIELDS: &[&str] = &["new_value", + "previous_value"]; +impl MemberChangeExternalIdDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { + let mut field_new_value = None; let mut field_previous_value = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { + "new_value" => { + if field_new_value.is_some() { + return Err(::serde::de::Error::duplicate_field("new_value")); + } + field_new_value = Some(map.next_value()?); + } "previous_value" => { if field_previous_value.is_some() { return Err(::serde::de::Error::duplicate_field("previous_value")); @@ -53317,7 +75170,8 @@ impl GroupRemoveExternalIdDetails { if optional && nothing { return Ok(None); } - let result = GroupRemoveExternalIdDetails { + let result = MemberChangeExternalIdDetails { + new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, previous_value: field_previous_value.ok_or_else(|| ::serde::de::Error::missing_field("previous_value"))?, }; Ok(Some(result)) @@ -53328,34 +75182,35 @@ impl GroupRemoveExternalIdDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; + s.serialize_field("new_value", &self.new_value)?; s.serialize_field("previous_value", &self.previous_value)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for GroupRemoveExternalIdDetails { +impl<'de> ::serde::de::Deserialize<'de> for MemberChangeExternalIdDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = GroupRemoveExternalIdDetails; + type Value = MemberChangeExternalIdDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a GroupRemoveExternalIdDetails struct") + f.write_str("a MemberChangeExternalIdDetails struct") } fn visit_map>(self, map: V) -> Result { - GroupRemoveExternalIdDetails::internal_deserialize(map) + MemberChangeExternalIdDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("GroupRemoveExternalIdDetails", GROUP_REMOVE_EXTERNAL_ID_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("MemberChangeExternalIdDetails", MEMBER_CHANGE_EXTERNAL_ID_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for GroupRemoveExternalIdDetails { +impl ::serde::ser::Serialize for MemberChangeExternalIdDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("GroupRemoveExternalIdDetails", 1)?; + let mut s = serializer.serialize_struct("MemberChangeExternalIdDetails", 2)?; self.internal_serialize::(&mut s)?; s.end() } @@ -53363,30 +75218,30 @@ impl ::serde::ser::Serialize for GroupRemoveExternalIdDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct GroupRemoveExternalIdType { +pub struct MemberChangeExternalIdType { pub description: String, } -impl GroupRemoveExternalIdType { +impl MemberChangeExternalIdType { pub fn new(description: String) -> Self { - GroupRemoveExternalIdType { + MemberChangeExternalIdType { description, } } } -const GROUP_REMOVE_EXTERNAL_ID_TYPE_FIELDS: &[&str] = &["description"]; -impl GroupRemoveExternalIdType { +const MEMBER_CHANGE_EXTERNAL_ID_TYPE_FIELDS: &[&str] = &["description"]; +impl MemberChangeExternalIdType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -53407,7 +75262,7 @@ impl GroupRemoveExternalIdType { if optional && nothing { return Ok(None); } - let result = GroupRemoveExternalIdType { + let result = MemberChangeExternalIdType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -53423,104 +75278,165 @@ impl GroupRemoveExternalIdType { } } -impl<'de> ::serde::de::Deserialize<'de> for GroupRemoveExternalIdType { +impl<'de> ::serde::de::Deserialize<'de> for MemberChangeExternalIdType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = GroupRemoveExternalIdType; + type Value = MemberChangeExternalIdType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a GroupRemoveExternalIdType struct") + f.write_str("a MemberChangeExternalIdType struct") } fn visit_map>(self, map: V) -> Result { - GroupRemoveExternalIdType::internal_deserialize(map) + MemberChangeExternalIdType::internal_deserialize(map) } } - deserializer.deserialize_struct("GroupRemoveExternalIdType", GROUP_REMOVE_EXTERNAL_ID_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("MemberChangeExternalIdType", MEMBER_CHANGE_EXTERNAL_ID_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for GroupRemoveExternalIdType { +impl ::serde::ser::Serialize for MemberChangeExternalIdType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("GroupRemoveExternalIdType", 1)?; + let mut s = serializer.serialize_struct("MemberChangeExternalIdType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Removed team members from group. -#[derive(Debug, Clone, PartialEq, Eq, Default)] +/// Changed membership type (limited/full) of member. +#[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct GroupRemoveMemberDetails { +pub struct MemberChangeMembershipTypeDetails { + /// Previous membership type. + pub prev_value: TeamMembershipType, + /// New membership type. + pub new_value: TeamMembershipType, } -const GROUP_REMOVE_MEMBER_DETAILS_FIELDS: &[&str] = &[]; -impl GroupRemoveMemberDetails { - // no _opt deserializer +impl MemberChangeMembershipTypeDetails { + pub fn new(prev_value: TeamMembershipType, new_value: TeamMembershipType) -> Self { + MemberChangeMembershipTypeDetails { + prev_value, + new_value, + } + } +} + +const MEMBER_CHANGE_MEMBERSHIP_TYPE_DETAILS_FIELDS: &[&str] = &["prev_value", + "new_value"]; +impl MemberChangeMembershipTypeDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - ) -> Result { - // ignore any fields found; none are presently recognized - crate::eat_json_fields(&mut map)?; - Ok(GroupRemoveMemberDetails {}) + optional: bool, + ) -> Result, V::Error> { + let mut field_prev_value = None; + let mut field_new_value = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "prev_value" => { + if field_prev_value.is_some() { + return Err(::serde::de::Error::duplicate_field("prev_value")); + } + field_prev_value = Some(map.next_value()?); + } + "new_value" => { + if field_new_value.is_some() { + return Err(::serde::de::Error::duplicate_field("new_value")); + } + field_new_value = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } + } + } + if optional && nothing { + return Ok(None); + } + let result = MemberChangeMembershipTypeDetails { + prev_value: field_prev_value.ok_or_else(|| ::serde::de::Error::missing_field("prev_value"))?, + new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("prev_value", &self.prev_value)?; + s.serialize_field("new_value", &self.new_value)?; + Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for GroupRemoveMemberDetails { +impl<'de> ::serde::de::Deserialize<'de> for MemberChangeMembershipTypeDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = GroupRemoveMemberDetails; + type Value = MemberChangeMembershipTypeDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a GroupRemoveMemberDetails struct") + f.write_str("a MemberChangeMembershipTypeDetails struct") } fn visit_map>(self, map: V) -> Result { - GroupRemoveMemberDetails::internal_deserialize(map) + MemberChangeMembershipTypeDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("GroupRemoveMemberDetails", GROUP_REMOVE_MEMBER_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("MemberChangeMembershipTypeDetails", MEMBER_CHANGE_MEMBERSHIP_TYPE_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for GroupRemoveMemberDetails { +impl ::serde::ser::Serialize for MemberChangeMembershipTypeDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - serializer.serialize_struct("GroupRemoveMemberDetails", 0)?.end() + let mut s = serializer.serialize_struct("MemberChangeMembershipTypeDetails", 2)?; + self.internal_serialize::(&mut s)?; + s.end() } } #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct GroupRemoveMemberType { +pub struct MemberChangeMembershipTypeType { pub description: String, } -impl GroupRemoveMemberType { +impl MemberChangeMembershipTypeType { pub fn new(description: String) -> Self { - GroupRemoveMemberType { + MemberChangeMembershipTypeType { description, } } } -const GROUP_REMOVE_MEMBER_TYPE_FIELDS: &[&str] = &["description"]; -impl GroupRemoveMemberType { +const MEMBER_CHANGE_MEMBERSHIP_TYPE_TYPE_FIELDS: &[&str] = &["description"]; +impl MemberChangeMembershipTypeType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -53541,7 +75457,7 @@ impl GroupRemoveMemberType { if optional && nothing { return Ok(None); } - let result = GroupRemoveMemberType { + let result = MemberChangeMembershipTypeType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -53557,84 +75473,89 @@ impl GroupRemoveMemberType { } } -impl<'de> ::serde::de::Deserialize<'de> for GroupRemoveMemberType { +impl<'de> ::serde::de::Deserialize<'de> for MemberChangeMembershipTypeType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = GroupRemoveMemberType; + type Value = MemberChangeMembershipTypeType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a GroupRemoveMemberType struct") + f.write_str("a MemberChangeMembershipTypeType struct") } fn visit_map>(self, map: V) -> Result { - GroupRemoveMemberType::internal_deserialize(map) + MemberChangeMembershipTypeType::internal_deserialize(map) } } - deserializer.deserialize_struct("GroupRemoveMemberType", GROUP_REMOVE_MEMBER_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("MemberChangeMembershipTypeType", MEMBER_CHANGE_MEMBERSHIP_TYPE_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for GroupRemoveMemberType { +impl ::serde::ser::Serialize for MemberChangeMembershipTypeType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("GroupRemoveMemberType", 1)?; + let mut s = serializer.serialize_struct("MemberChangeMembershipTypeType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Renamed group. +/// Changed team member name. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct GroupRenameDetails { - /// Previous display name. - pub previous_value: String, - /// New display name. - pub new_value: String, +pub struct MemberChangeNameDetails { + /// New user's name. + pub new_value: UserNameLogInfo, + /// Previous user's name. Might be missing due to historical data gap. + pub previous_value: Option, } -impl GroupRenameDetails { - pub fn new(previous_value: String, new_value: String) -> Self { - GroupRenameDetails { - previous_value, +impl MemberChangeNameDetails { + pub fn new(new_value: UserNameLogInfo) -> Self { + MemberChangeNameDetails { new_value, + previous_value: None, } } + + pub fn with_previous_value(mut self, value: UserNameLogInfo) -> Self { + self.previous_value = Some(value); + self + } } -const GROUP_RENAME_DETAILS_FIELDS: &[&str] = &["previous_value", - "new_value"]; -impl GroupRenameDetails { +const MEMBER_CHANGE_NAME_DETAILS_FIELDS: &[&str] = &["new_value", + "previous_value"]; +impl MemberChangeNameDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_previous_value = None; + ) -> Result, V::Error> { let mut field_new_value = None; + let mut field_previous_value = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "previous_value" => { - if field_previous_value.is_some() { - return Err(::serde::de::Error::duplicate_field("previous_value")); - } - field_previous_value = Some(map.next_value()?); - } "new_value" => { if field_new_value.is_some() { return Err(::serde::de::Error::duplicate_field("new_value")); } field_new_value = Some(map.next_value()?); } + "previous_value" => { + if field_previous_value.is_some() { + return Err(::serde::de::Error::duplicate_field("previous_value")); + } + field_previous_value = Some(map.next_value()?); + } _ => { // unknown field allowed and ignored map.next_value::<::serde_json::Value>()?; @@ -53644,9 +75565,9 @@ impl GroupRenameDetails { if optional && nothing { return Ok(None); } - let result = GroupRenameDetails { - previous_value: field_previous_value.ok_or_else(|| ::serde::de::Error::missing_field("previous_value"))?, + let result = MemberChangeNameDetails { new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, + previous_value: field_previous_value.and_then(Option::flatten), }; Ok(Some(result)) } @@ -53656,35 +75577,37 @@ impl GroupRenameDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("previous_value", &self.previous_value)?; s.serialize_field("new_value", &self.new_value)?; + if let Some(val) = &self.previous_value { + s.serialize_field("previous_value", val)?; + } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for GroupRenameDetails { +impl<'de> ::serde::de::Deserialize<'de> for MemberChangeNameDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = GroupRenameDetails; + type Value = MemberChangeNameDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a GroupRenameDetails struct") + f.write_str("a MemberChangeNameDetails struct") } fn visit_map>(self, map: V) -> Result { - GroupRenameDetails::internal_deserialize(map) + MemberChangeNameDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("GroupRenameDetails", GROUP_RENAME_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("MemberChangeNameDetails", MEMBER_CHANGE_NAME_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for GroupRenameDetails { +impl ::serde::ser::Serialize for MemberChangeNameDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("GroupRenameDetails", 2)?; + let mut s = serializer.serialize_struct("MemberChangeNameDetails", 2)?; self.internal_serialize::(&mut s)?; s.end() } @@ -53692,30 +75615,30 @@ impl ::serde::ser::Serialize for GroupRenameDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct GroupRenameType { +pub struct MemberChangeNameType { pub description: String, } -impl GroupRenameType { +impl MemberChangeNameType { pub fn new(description: String) -> Self { - GroupRenameType { + MemberChangeNameType { description, } } } -const GROUP_RENAME_TYPE_FIELDS: &[&str] = &["description"]; -impl GroupRenameType { +const MEMBER_CHANGE_NAME_TYPE_FIELDS: &[&str] = &["description"]; +impl MemberChangeNameType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -53736,7 +75659,7 @@ impl GroupRenameType { if optional && nothing { return Ok(None); } - let result = GroupRenameType { + let result = MemberChangeNameType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -53752,74 +75675,67 @@ impl GroupRenameType { } } -impl<'de> ::serde::de::Deserialize<'de> for GroupRenameType { +impl<'de> ::serde::de::Deserialize<'de> for MemberChangeNameType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = GroupRenameType; + type Value = MemberChangeNameType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a GroupRenameType struct") + f.write_str("a MemberChangeNameType struct") } fn visit_map>(self, map: V) -> Result { - GroupRenameType::internal_deserialize(map) + MemberChangeNameType::internal_deserialize(map) } } - deserializer.deserialize_struct("GroupRenameType", GROUP_RENAME_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("MemberChangeNameType", MEMBER_CHANGE_NAME_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for GroupRenameType { +impl ::serde::ser::Serialize for MemberChangeNameType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("GroupRenameType", 1)?; + let mut s = serializer.serialize_struct("MemberChangeNameType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Changed who can create groups. +/// Changed team member reseller role. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct GroupUserManagementChangePolicyDetails { - /// New group users management policy. - pub new_value: crate::types::team_policies::GroupCreation, - /// Previous group users management policy. Might be missing due to historical data gap. - pub previous_value: Option, +pub struct MemberChangeResellerRoleDetails { + /// New reseller role. This field is relevant when the reseller role is changed. + pub new_value: ResellerRole, + /// Previous reseller role. This field is relevant when the reseller role is changed or when the + /// reseller role is removed. + pub previous_value: ResellerRole, } -impl GroupUserManagementChangePolicyDetails { - pub fn new(new_value: crate::types::team_policies::GroupCreation) -> Self { - GroupUserManagementChangePolicyDetails { +impl MemberChangeResellerRoleDetails { + pub fn new(new_value: ResellerRole, previous_value: ResellerRole) -> Self { + MemberChangeResellerRoleDetails { new_value, - previous_value: None, + previous_value, } } - - pub fn with_previous_value( - mut self, - value: crate::types::team_policies::GroupCreation, - ) -> Self { - self.previous_value = Some(value); - self - } } -const GROUP_USER_MANAGEMENT_CHANGE_POLICY_DETAILS_FIELDS: &[&str] = &["new_value", - "previous_value"]; -impl GroupUserManagementChangePolicyDetails { +const MEMBER_CHANGE_RESELLER_ROLE_DETAILS_FIELDS: &[&str] = &["new_value", + "previous_value"]; +impl MemberChangeResellerRoleDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_new_value = None; let mut field_previous_value = None; let mut nothing = true; @@ -53847,9 +75763,9 @@ impl GroupUserManagementChangePolicyDetails { if optional && nothing { return Ok(None); } - let result = GroupUserManagementChangePolicyDetails { + let result = MemberChangeResellerRoleDetails { new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, - previous_value: field_previous_value.and_then(Option::flatten), + previous_value: field_previous_value.ok_or_else(|| ::serde::de::Error::missing_field("previous_value"))?, }; Ok(Some(result)) } @@ -53860,36 +75776,34 @@ impl GroupUserManagementChangePolicyDetails { ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; s.serialize_field("new_value", &self.new_value)?; - if let Some(val) = &self.previous_value { - s.serialize_field("previous_value", val)?; - } + s.serialize_field("previous_value", &self.previous_value)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for GroupUserManagementChangePolicyDetails { +impl<'de> ::serde::de::Deserialize<'de> for MemberChangeResellerRoleDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = GroupUserManagementChangePolicyDetails; + type Value = MemberChangeResellerRoleDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a GroupUserManagementChangePolicyDetails struct") + f.write_str("a MemberChangeResellerRoleDetails struct") } fn visit_map>(self, map: V) -> Result { - GroupUserManagementChangePolicyDetails::internal_deserialize(map) + MemberChangeResellerRoleDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("GroupUserManagementChangePolicyDetails", GROUP_USER_MANAGEMENT_CHANGE_POLICY_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("MemberChangeResellerRoleDetails", MEMBER_CHANGE_RESELLER_ROLE_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for GroupUserManagementChangePolicyDetails { +impl ::serde::ser::Serialize for MemberChangeResellerRoleDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("GroupUserManagementChangePolicyDetails", 2)?; + let mut s = serializer.serialize_struct("MemberChangeResellerRoleDetails", 2)?; self.internal_serialize::(&mut s)?; s.end() } @@ -53897,30 +75811,30 @@ impl ::serde::ser::Serialize for GroupUserManagementChangePolicyDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct GroupUserManagementChangePolicyType { +pub struct MemberChangeResellerRoleType { pub description: String, } -impl GroupUserManagementChangePolicyType { +impl MemberChangeResellerRoleType { pub fn new(description: String) -> Self { - GroupUserManagementChangePolicyType { + MemberChangeResellerRoleType { description, } } } -const GROUP_USER_MANAGEMENT_CHANGE_POLICY_TYPE_FIELDS: &[&str] = &["description"]; -impl GroupUserManagementChangePolicyType { +const MEMBER_CHANGE_RESELLER_ROLE_TYPE_FIELDS: &[&str] = &["description"]; +impl MemberChangeResellerRoleType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -53941,7 +75855,7 @@ impl GroupUserManagementChangePolicyType { if optional && nothing { return Ok(None); } - let result = GroupUserManagementChangePolicyType { + let result = MemberChangeResellerRoleType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -53957,112 +75871,113 @@ impl GroupUserManagementChangePolicyType { } } -impl<'de> ::serde::de::Deserialize<'de> for GroupUserManagementChangePolicyType { +impl<'de> ::serde::de::Deserialize<'de> for MemberChangeResellerRoleType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = GroupUserManagementChangePolicyType; + type Value = MemberChangeResellerRoleType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a GroupUserManagementChangePolicyType struct") + f.write_str("a MemberChangeResellerRoleType struct") } fn visit_map>(self, map: V) -> Result { - GroupUserManagementChangePolicyType::internal_deserialize(map) + MemberChangeResellerRoleType::internal_deserialize(map) } } - deserializer.deserialize_struct("GroupUserManagementChangePolicyType", GROUP_USER_MANAGEMENT_CHANGE_POLICY_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("MemberChangeResellerRoleType", MEMBER_CHANGE_RESELLER_ROLE_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for GroupUserManagementChangePolicyType { +impl ::serde::ser::Serialize for MemberChangeResellerRoleType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("GroupUserManagementChangePolicyType", 1)?; + let mut s = serializer.serialize_struct("MemberChangeResellerRoleType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Changed guest team admin status. +/// Changed member status (invited, joined, suspended, etc.). #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct GuestAdminChangeStatusDetails { - /// True for guest, false for host. - pub is_guest: bool, - /// Previous request state. - pub previous_value: TrustedTeamsRequestState, - /// New request state. - pub new_value: TrustedTeamsRequestState, - /// Action details. - pub action_details: TrustedTeamsRequestAction, - /// The name of the guest team. - pub guest_team_name: Option, - /// The name of the host team. - pub host_team_name: Option, +pub struct MemberChangeStatusDetails { + /// New member status. + pub new_value: MemberStatus, + /// Previous member status. Might be missing due to historical data gap. + pub previous_value: Option, + /// Additional information indicating the action taken that caused status change. + pub action: Option, + /// The user's new team name. This field is relevant when the user is transferred off the team. + pub new_team: Option, + /// The user's previous team name. This field is relevant when the user is transferred onto the + /// team. + pub previous_team: Option, } -impl GuestAdminChangeStatusDetails { - pub fn new( - is_guest: bool, - previous_value: TrustedTeamsRequestState, - new_value: TrustedTeamsRequestState, - action_details: TrustedTeamsRequestAction, - ) -> Self { - GuestAdminChangeStatusDetails { - is_guest, - previous_value, +impl MemberChangeStatusDetails { + pub fn new(new_value: MemberStatus) -> Self { + MemberChangeStatusDetails { new_value, - action_details, - guest_team_name: None, - host_team_name: None, + previous_value: None, + action: None, + new_team: None, + previous_team: None, } } - pub fn with_guest_team_name(mut self, value: String) -> Self { - self.guest_team_name = Some(value); + pub fn with_previous_value(mut self, value: MemberStatus) -> Self { + self.previous_value = Some(value); self } - pub fn with_host_team_name(mut self, value: String) -> Self { - self.host_team_name = Some(value); + pub fn with_action(mut self, value: ActionDetails) -> Self { + self.action = Some(value); + self + } + + pub fn with_new_team(mut self, value: String) -> Self { + self.new_team = Some(value); + self + } + + pub fn with_previous_team(mut self, value: String) -> Self { + self.previous_team = Some(value); self } } -const GUEST_ADMIN_CHANGE_STATUS_DETAILS_FIELDS: &[&str] = &["is_guest", - "previous_value", - "new_value", - "action_details", - "guest_team_name", - "host_team_name"]; -impl GuestAdminChangeStatusDetails { +const MEMBER_CHANGE_STATUS_DETAILS_FIELDS: &[&str] = &["new_value", + "previous_value", + "action", + "new_team", + "previous_team"]; +impl MemberChangeStatusDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_is_guest = None; - let mut field_previous_value = None; + ) -> Result, V::Error> { let mut field_new_value = None; - let mut field_action_details = None; - let mut field_guest_team_name = None; - let mut field_host_team_name = None; + let mut field_previous_value = None; + let mut field_action = None; + let mut field_new_team = None; + let mut field_previous_team = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "is_guest" => { - if field_is_guest.is_some() { - return Err(::serde::de::Error::duplicate_field("is_guest")); + "new_value" => { + if field_new_value.is_some() { + return Err(::serde::de::Error::duplicate_field("new_value")); } - field_is_guest = Some(map.next_value()?); + field_new_value = Some(map.next_value()?); } "previous_value" => { if field_previous_value.is_some() { @@ -54070,29 +75985,23 @@ impl GuestAdminChangeStatusDetails { } field_previous_value = Some(map.next_value()?); } - "new_value" => { - if field_new_value.is_some() { - return Err(::serde::de::Error::duplicate_field("new_value")); - } - field_new_value = Some(map.next_value()?); - } - "action_details" => { - if field_action_details.is_some() { - return Err(::serde::de::Error::duplicate_field("action_details")); + "action" => { + if field_action.is_some() { + return Err(::serde::de::Error::duplicate_field("action")); } - field_action_details = Some(map.next_value()?); + field_action = Some(map.next_value()?); } - "guest_team_name" => { - if field_guest_team_name.is_some() { - return Err(::serde::de::Error::duplicate_field("guest_team_name")); + "new_team" => { + if field_new_team.is_some() { + return Err(::serde::de::Error::duplicate_field("new_team")); } - field_guest_team_name = Some(map.next_value()?); + field_new_team = Some(map.next_value()?); } - "host_team_name" => { - if field_host_team_name.is_some() { - return Err(::serde::de::Error::duplicate_field("host_team_name")); + "previous_team" => { + if field_previous_team.is_some() { + return Err(::serde::de::Error::duplicate_field("previous_team")); } - field_host_team_name = Some(map.next_value()?); + field_previous_team = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -54103,13 +76012,12 @@ impl GuestAdminChangeStatusDetails { if optional && nothing { return Ok(None); } - let result = GuestAdminChangeStatusDetails { - is_guest: field_is_guest.ok_or_else(|| ::serde::de::Error::missing_field("is_guest"))?, - previous_value: field_previous_value.ok_or_else(|| ::serde::de::Error::missing_field("previous_value"))?, + let result = MemberChangeStatusDetails { new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, - action_details: field_action_details.ok_or_else(|| ::serde::de::Error::missing_field("action_details"))?, - guest_team_name: field_guest_team_name.and_then(Option::flatten), - host_team_name: field_host_team_name.and_then(Option::flatten), + previous_value: field_previous_value.and_then(Option::flatten), + action: field_action.and_then(Option::flatten), + new_team: field_new_team.and_then(Option::flatten), + previous_team: field_previous_team.and_then(Option::flatten), }; Ok(Some(result)) } @@ -54119,43 +76027,46 @@ impl GuestAdminChangeStatusDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("is_guest", &self.is_guest)?; - s.serialize_field("previous_value", &self.previous_value)?; s.serialize_field("new_value", &self.new_value)?; - s.serialize_field("action_details", &self.action_details)?; - if let Some(val) = &self.guest_team_name { - s.serialize_field("guest_team_name", val)?; + if let Some(val) = &self.previous_value { + s.serialize_field("previous_value", val)?; } - if let Some(val) = &self.host_team_name { - s.serialize_field("host_team_name", val)?; + if let Some(val) = &self.action { + s.serialize_field("action", val)?; + } + if let Some(val) = &self.new_team { + s.serialize_field("new_team", val)?; + } + if let Some(val) = &self.previous_team { + s.serialize_field("previous_team", val)?; } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for GuestAdminChangeStatusDetails { +impl<'de> ::serde::de::Deserialize<'de> for MemberChangeStatusDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = GuestAdminChangeStatusDetails; + type Value = MemberChangeStatusDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a GuestAdminChangeStatusDetails struct") + f.write_str("a MemberChangeStatusDetails struct") } fn visit_map>(self, map: V) -> Result { - GuestAdminChangeStatusDetails::internal_deserialize(map) + MemberChangeStatusDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("GuestAdminChangeStatusDetails", GUEST_ADMIN_CHANGE_STATUS_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("MemberChangeStatusDetails", MEMBER_CHANGE_STATUS_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for GuestAdminChangeStatusDetails { +impl ::serde::ser::Serialize for MemberChangeStatusDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("GuestAdminChangeStatusDetails", 6)?; + let mut s = serializer.serialize_struct("MemberChangeStatusDetails", 5)?; self.internal_serialize::(&mut s)?; s.end() } @@ -54163,30 +76074,30 @@ impl ::serde::ser::Serialize for GuestAdminChangeStatusDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct GuestAdminChangeStatusType { +pub struct MemberChangeStatusType { pub description: String, } -impl GuestAdminChangeStatusType { +impl MemberChangeStatusType { pub fn new(description: String) -> Self { - GuestAdminChangeStatusType { + MemberChangeStatusType { description, } } } -const GUEST_ADMIN_CHANGE_STATUS_TYPE_FIELDS: &[&str] = &["description"]; -impl GuestAdminChangeStatusType { +const MEMBER_CHANGE_STATUS_TYPE_FIELDS: &[&str] = &["description"]; +impl MemberChangeStatusType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -54207,7 +76118,7 @@ impl GuestAdminChangeStatusType { if optional && nothing { return Ok(None); } - let result = GuestAdminChangeStatusType { + let result = MemberChangeStatusType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -54223,161 +76134,104 @@ impl GuestAdminChangeStatusType { } } -impl<'de> ::serde::de::Deserialize<'de> for GuestAdminChangeStatusType { +impl<'de> ::serde::de::Deserialize<'de> for MemberChangeStatusType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = GuestAdminChangeStatusType; + type Value = MemberChangeStatusType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a GuestAdminChangeStatusType struct") + f.write_str("a MemberChangeStatusType struct") } fn visit_map>(self, map: V) -> Result { - GuestAdminChangeStatusType::internal_deserialize(map) + MemberChangeStatusType::internal_deserialize(map) } } - deserializer.deserialize_struct("GuestAdminChangeStatusType", GUEST_ADMIN_CHANGE_STATUS_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("MemberChangeStatusType", MEMBER_CHANGE_STATUS_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for GuestAdminChangeStatusType { +impl ::serde::ser::Serialize for MemberChangeStatusType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("GuestAdminChangeStatusType", 1)?; + let mut s = serializer.serialize_struct("MemberChangeStatusType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Started trusted team admin session. +/// Cleared manually added contacts. #[derive(Debug, Clone, PartialEq, Eq, Default)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct GuestAdminSignedInViaTrustedTeamsDetails { - /// Host team name. - pub team_name: Option, - /// Trusted team name. - pub trusted_team_name: Option, -} - -impl GuestAdminSignedInViaTrustedTeamsDetails { - pub fn with_team_name(mut self, value: String) -> Self { - self.team_name = Some(value); - self - } - - pub fn with_trusted_team_name(mut self, value: String) -> Self { - self.trusted_team_name = Some(value); - self - } +pub struct MemberDeleteManualContactsDetails { } -const GUEST_ADMIN_SIGNED_IN_VIA_TRUSTED_TEAMS_DETAILS_FIELDS: &[&str] = &["team_name", - "trusted_team_name"]; -impl GuestAdminSignedInViaTrustedTeamsDetails { +const MEMBER_DELETE_MANUAL_CONTACTS_DETAILS_FIELDS: &[&str] = &[]; +impl MemberDeleteManualContactsDetails { // no _opt deserializer pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - ) -> Result { - let mut field_team_name = None; - let mut field_trusted_team_name = None; - while let Some(key) = map.next_key::<&str>()? { - match key { - "team_name" => { - if field_team_name.is_some() { - return Err(::serde::de::Error::duplicate_field("team_name")); - } - field_team_name = Some(map.next_value()?); - } - "trusted_team_name" => { - if field_trusted_team_name.is_some() { - return Err(::serde::de::Error::duplicate_field("trusted_team_name")); - } - field_trusted_team_name = Some(map.next_value()?); - } - _ => { - // unknown field allowed and ignored - map.next_value::<::serde_json::Value>()?; - } - } - } - let result = GuestAdminSignedInViaTrustedTeamsDetails { - team_name: field_team_name.and_then(Option::flatten), - trusted_team_name: field_trusted_team_name.and_then(Option::flatten), - }; - Ok(result) - } - - pub(crate) fn internal_serialize( - &self, - s: &mut S::SerializeStruct, - ) -> Result<(), S::Error> { - use serde::ser::SerializeStruct; - if let Some(val) = &self.team_name { - s.serialize_field("team_name", val)?; - } - if let Some(val) = &self.trusted_team_name { - s.serialize_field("trusted_team_name", val)?; - } - Ok(()) + ) -> Result { + // ignore any fields found; none are presently recognized + crate::eat_json_fields(&mut map)?; + Ok(MemberDeleteManualContactsDetails {}) } } -impl<'de> ::serde::de::Deserialize<'de> for GuestAdminSignedInViaTrustedTeamsDetails { +impl<'de> ::serde::de::Deserialize<'de> for MemberDeleteManualContactsDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = GuestAdminSignedInViaTrustedTeamsDetails; + type Value = MemberDeleteManualContactsDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a GuestAdminSignedInViaTrustedTeamsDetails struct") + f.write_str("a MemberDeleteManualContactsDetails struct") } fn visit_map>(self, map: V) -> Result { - GuestAdminSignedInViaTrustedTeamsDetails::internal_deserialize(map) + MemberDeleteManualContactsDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("GuestAdminSignedInViaTrustedTeamsDetails", GUEST_ADMIN_SIGNED_IN_VIA_TRUSTED_TEAMS_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("MemberDeleteManualContactsDetails", MEMBER_DELETE_MANUAL_CONTACTS_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for GuestAdminSignedInViaTrustedTeamsDetails { +impl ::serde::ser::Serialize for MemberDeleteManualContactsDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("GuestAdminSignedInViaTrustedTeamsDetails", 2)?; - self.internal_serialize::(&mut s)?; - s.end() + serializer.serialize_struct("MemberDeleteManualContactsDetails", 0)?.end() } } #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct GuestAdminSignedInViaTrustedTeamsType { +pub struct MemberDeleteManualContactsType { pub description: String, } -impl GuestAdminSignedInViaTrustedTeamsType { +impl MemberDeleteManualContactsType { pub fn new(description: String) -> Self { - GuestAdminSignedInViaTrustedTeamsType { + MemberDeleteManualContactsType { description, } } } -const GUEST_ADMIN_SIGNED_IN_VIA_TRUSTED_TEAMS_TYPE_FIELDS: &[&str] = &["description"]; -impl GuestAdminSignedInViaTrustedTeamsType { +const MEMBER_DELETE_MANUAL_CONTACTS_TYPE_FIELDS: &[&str] = &["description"]; +impl MemberDeleteManualContactsType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -54398,7 +76252,7 @@ impl GuestAdminSignedInViaTrustedTeamsType { if optional && nothing { return Ok(None); } - let result = GuestAdminSignedInViaTrustedTeamsType { + let result = MemberDeleteManualContactsType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -54414,78 +76268,114 @@ impl GuestAdminSignedInViaTrustedTeamsType { } } -impl<'de> ::serde::de::Deserialize<'de> for GuestAdminSignedInViaTrustedTeamsType { +impl<'de> ::serde::de::Deserialize<'de> for MemberDeleteManualContactsType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = GuestAdminSignedInViaTrustedTeamsType; + type Value = MemberDeleteManualContactsType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a GuestAdminSignedInViaTrustedTeamsType struct") + f.write_str("a MemberDeleteManualContactsType struct") } fn visit_map>(self, map: V) -> Result { - GuestAdminSignedInViaTrustedTeamsType::internal_deserialize(map) + MemberDeleteManualContactsType::internal_deserialize(map) } } - deserializer.deserialize_struct("GuestAdminSignedInViaTrustedTeamsType", GUEST_ADMIN_SIGNED_IN_VIA_TRUSTED_TEAMS_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("MemberDeleteManualContactsType", MEMBER_DELETE_MANUAL_CONTACTS_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for GuestAdminSignedInViaTrustedTeamsType { +impl ::serde::ser::Serialize for MemberDeleteManualContactsType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("GuestAdminSignedInViaTrustedTeamsType", 1)?; + let mut s = serializer.serialize_struct("MemberDeleteManualContactsType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Ended trusted team admin session. +/// Deleted team member profile photo. #[derive(Debug, Clone, PartialEq, Eq, Default)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct GuestAdminSignedOutViaTrustedTeamsDetails { - /// Host team name. - pub team_name: Option, - /// Trusted team name. - pub trusted_team_name: Option, +pub struct MemberDeleteProfilePhotoDetails { } -impl GuestAdminSignedOutViaTrustedTeamsDetails { - pub fn with_team_name(mut self, value: String) -> Self { - self.team_name = Some(value); - self +const MEMBER_DELETE_PROFILE_PHOTO_DETAILS_FIELDS: &[&str] = &[]; +impl MemberDeleteProfilePhotoDetails { + // no _opt deserializer + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + ) -> Result { + // ignore any fields found; none are presently recognized + crate::eat_json_fields(&mut map)?; + Ok(MemberDeleteProfilePhotoDetails {}) } +} - pub fn with_trusted_team_name(mut self, value: String) -> Self { - self.trusted_team_name = Some(value); - self +impl<'de> ::serde::de::Deserialize<'de> for MemberDeleteProfilePhotoDetails { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = MemberDeleteProfilePhotoDetails; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a MemberDeleteProfilePhotoDetails struct") + } + fn visit_map>(self, map: V) -> Result { + MemberDeleteProfilePhotoDetails::internal_deserialize(map) + } + } + deserializer.deserialize_struct("MemberDeleteProfilePhotoDetails", MEMBER_DELETE_PROFILE_PHOTO_DETAILS_FIELDS, StructVisitor) } } -const GUEST_ADMIN_SIGNED_OUT_VIA_TRUSTED_TEAMS_DETAILS_FIELDS: &[&str] = &["team_name", - "trusted_team_name"]; -impl GuestAdminSignedOutViaTrustedTeamsDetails { - // no _opt deserializer +impl ::serde::ser::Serialize for MemberDeleteProfilePhotoDetails { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + serializer.serialize_struct("MemberDeleteProfilePhotoDetails", 0)?.end() + } +} + +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct MemberDeleteProfilePhotoType { + pub description: String, +} + +impl MemberDeleteProfilePhotoType { + pub fn new(description: String) -> Self { + MemberDeleteProfilePhotoType { + description, + } + } +} + +const MEMBER_DELETE_PROFILE_PHOTO_TYPE_FIELDS: &[&str] = &["description"]; +impl MemberDeleteProfilePhotoType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - ) -> Result { - let mut field_team_name = None; - let mut field_trusted_team_name = None; + optional: bool, + ) -> Result, V::Error> { + let mut field_description = None; + let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { + nothing = false; match key { - "team_name" => { - if field_team_name.is_some() { - return Err(::serde::de::Error::duplicate_field("team_name")); - } - field_team_name = Some(map.next_value()?); - } - "trusted_team_name" => { - if field_trusted_team_name.is_some() { - return Err(::serde::de::Error::duplicate_field("trusted_team_name")); + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); } - field_trusted_team_name = Some(map.next_value()?); + field_description = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -54493,11 +76383,13 @@ impl GuestAdminSignedOutViaTrustedTeamsDetails { } } } - let result = GuestAdminSignedOutViaTrustedTeamsDetails { - team_name: field_team_name.and_then(Option::flatten), - trusted_team_name: field_trusted_team_name.and_then(Option::flatten), + if optional && nothing { + return Ok(None); + } + let result = MemberDeleteProfilePhotoType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; - Ok(result) + Ok(Some(result)) } pub(crate) fn internal_serialize( @@ -54505,70 +76397,109 @@ impl GuestAdminSignedOutViaTrustedTeamsDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - if let Some(val) = &self.team_name { - s.serialize_field("team_name", val)?; - } - if let Some(val) = &self.trusted_team_name { - s.serialize_field("trusted_team_name", val)?; - } + s.serialize_field("description", &self.description)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for GuestAdminSignedOutViaTrustedTeamsDetails { +impl<'de> ::serde::de::Deserialize<'de> for MemberDeleteProfilePhotoType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = GuestAdminSignedOutViaTrustedTeamsDetails; + type Value = MemberDeleteProfilePhotoType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a GuestAdminSignedOutViaTrustedTeamsDetails struct") + f.write_str("a MemberDeleteProfilePhotoType struct") } fn visit_map>(self, map: V) -> Result { - GuestAdminSignedOutViaTrustedTeamsDetails::internal_deserialize(map) + MemberDeleteProfilePhotoType::internal_deserialize(map) } } - deserializer.deserialize_struct("GuestAdminSignedOutViaTrustedTeamsDetails", GUEST_ADMIN_SIGNED_OUT_VIA_TRUSTED_TEAMS_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("MemberDeleteProfilePhotoType", MEMBER_DELETE_PROFILE_PHOTO_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for GuestAdminSignedOutViaTrustedTeamsDetails { +impl ::serde::ser::Serialize for MemberDeleteProfilePhotoType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("GuestAdminSignedOutViaTrustedTeamsDetails", 2)?; + let mut s = serializer.serialize_struct("MemberDeleteProfilePhotoType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } +/// Permanently deleted contents of deleted team member account. +#[derive(Debug, Clone, PartialEq, Eq, Default)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct MemberPermanentlyDeleteAccountContentsDetails { +} + +const MEMBER_PERMANENTLY_DELETE_ACCOUNT_CONTENTS_DETAILS_FIELDS: &[&str] = &[]; +impl MemberPermanentlyDeleteAccountContentsDetails { + // no _opt deserializer + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + ) -> Result { + // ignore any fields found; none are presently recognized + crate::eat_json_fields(&mut map)?; + Ok(MemberPermanentlyDeleteAccountContentsDetails {}) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for MemberPermanentlyDeleteAccountContentsDetails { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = MemberPermanentlyDeleteAccountContentsDetails; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a MemberPermanentlyDeleteAccountContentsDetails struct") + } + fn visit_map>(self, map: V) -> Result { + MemberPermanentlyDeleteAccountContentsDetails::internal_deserialize(map) + } + } + deserializer.deserialize_struct("MemberPermanentlyDeleteAccountContentsDetails", MEMBER_PERMANENTLY_DELETE_ACCOUNT_CONTENTS_DETAILS_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for MemberPermanentlyDeleteAccountContentsDetails { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + serializer.serialize_struct("MemberPermanentlyDeleteAccountContentsDetails", 0)?.end() + } +} + #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct GuestAdminSignedOutViaTrustedTeamsType { +pub struct MemberPermanentlyDeleteAccountContentsType { pub description: String, } -impl GuestAdminSignedOutViaTrustedTeamsType { +impl MemberPermanentlyDeleteAccountContentsType { pub fn new(description: String) -> Self { - GuestAdminSignedOutViaTrustedTeamsType { + MemberPermanentlyDeleteAccountContentsType { description, } } } -const GUEST_ADMIN_SIGNED_OUT_VIA_TRUSTED_TEAMS_TYPE_FIELDS: &[&str] = &["description"]; -impl GuestAdminSignedOutViaTrustedTeamsType { +const MEMBER_PERMANENTLY_DELETE_ACCOUNT_CONTENTS_TYPE_FIELDS: &[&str] = &["description"]; +impl MemberPermanentlyDeleteAccountContentsType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -54589,7 +76520,7 @@ impl GuestAdminSignedOutViaTrustedTeamsType { if optional && nothing { return Ok(None); } - let result = GuestAdminSignedOutViaTrustedTeamsType { + let result = MemberPermanentlyDeleteAccountContentsType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -54605,29 +76536,29 @@ impl GuestAdminSignedOutViaTrustedTeamsType { } } -impl<'de> ::serde::de::Deserialize<'de> for GuestAdminSignedOutViaTrustedTeamsType { +impl<'de> ::serde::de::Deserialize<'de> for MemberPermanentlyDeleteAccountContentsType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = GuestAdminSignedOutViaTrustedTeamsType; + type Value = MemberPermanentlyDeleteAccountContentsType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a GuestAdminSignedOutViaTrustedTeamsType struct") + f.write_str("a MemberPermanentlyDeleteAccountContentsType struct") } fn visit_map>(self, map: V) -> Result { - GuestAdminSignedOutViaTrustedTeamsType::internal_deserialize(map) + MemberPermanentlyDeleteAccountContentsType::internal_deserialize(map) } } - deserializer.deserialize_struct("GuestAdminSignedOutViaTrustedTeamsType", GUEST_ADMIN_SIGNED_OUT_VIA_TRUSTED_TEAMS_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("MemberPermanentlyDeleteAccountContentsType", MEMBER_PERMANENTLY_DELETE_ACCOUNT_CONTENTS_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for GuestAdminSignedOutViaTrustedTeamsType { +impl ::serde::ser::Serialize for MemberPermanentlyDeleteAccountContentsType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("GuestAdminSignedOutViaTrustedTeamsType", 1)?; + let mut s = serializer.serialize_struct("MemberPermanentlyDeleteAccountContentsType", 1)?; self.internal_serialize::(&mut s)?; s.end() } @@ -54635,23 +76566,25 @@ impl ::serde::ser::Serialize for GuestAdminSignedOutViaTrustedTeamsType { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // variants may be added in the future -pub enum IdentifierType { - Email, - FacebookProfileName, +pub enum MemberRemoveActionType { + Delete, + Leave, + Offboard, + OffboardAndRetainTeamFolders, /// Catch-all used for unrecognized values returned from the server. Encountering this value /// typically indicates that this SDK version is out of date. Other, } -impl<'de> ::serde::de::Deserialize<'de> for IdentifierType { +impl<'de> ::serde::de::Deserialize<'de> for MemberRemoveActionType { fn deserialize>(deserializer: D) -> Result { // union deserializer use serde::de::{self, MapAccess, Visitor}; struct EnumVisitor; impl<'de> Visitor<'de> for EnumVisitor { - type Value = IdentifierType; + type Value = MemberRemoveActionType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a IdentifierType structure") + f.write_str("a MemberRemoveActionType structure") } fn visit_map>(self, mut map: V) -> Result { let tag: &str = match map.next_key()? { @@ -54659,81 +76592,97 @@ impl<'de> ::serde::de::Deserialize<'de> for IdentifierType { _ => return Err(de::Error::missing_field(".tag")) }; let value = match tag { - "email" => IdentifierType::Email, - "facebook_profile_name" => IdentifierType::FacebookProfileName, - _ => IdentifierType::Other, + "delete" => MemberRemoveActionType::Delete, + "leave" => MemberRemoveActionType::Leave, + "offboard" => MemberRemoveActionType::Offboard, + "offboard_and_retain_team_folders" => MemberRemoveActionType::OffboardAndRetainTeamFolders, + _ => MemberRemoveActionType::Other, }; crate::eat_json_fields(&mut map)?; Ok(value) } } - const VARIANTS: &[&str] = &["email", - "facebook_profile_name", + const VARIANTS: &[&str] = &["delete", + "leave", + "offboard", + "offboard_and_retain_team_folders", "other"]; - deserializer.deserialize_struct("IdentifierType", VARIANTS, EnumVisitor) + deserializer.deserialize_struct("MemberRemoveActionType", VARIANTS, EnumVisitor) } } -impl ::serde::ser::Serialize for IdentifierType { +impl ::serde::ser::Serialize for MemberRemoveActionType { fn serialize(&self, serializer: S) -> Result { // union serializer use serde::ser::SerializeStruct; match self { - IdentifierType::Email => { + MemberRemoveActionType::Delete => { // unit - let mut s = serializer.serialize_struct("IdentifierType", 1)?; - s.serialize_field(".tag", "email")?; + let mut s = serializer.serialize_struct("MemberRemoveActionType", 1)?; + s.serialize_field(".tag", "delete")?; s.end() } - IdentifierType::FacebookProfileName => { + MemberRemoveActionType::Leave => { // unit - let mut s = serializer.serialize_struct("IdentifierType", 1)?; - s.serialize_field(".tag", "facebook_profile_name")?; + let mut s = serializer.serialize_struct("MemberRemoveActionType", 1)?; + s.serialize_field(".tag", "leave")?; s.end() } - IdentifierType::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) + MemberRemoveActionType::Offboard => { + // unit + let mut s = serializer.serialize_struct("MemberRemoveActionType", 1)?; + s.serialize_field(".tag", "offboard")?; + s.end() + } + MemberRemoveActionType::OffboardAndRetainTeamFolders => { + // unit + let mut s = serializer.serialize_struct("MemberRemoveActionType", 1)?; + s.serialize_field(".tag", "offboard_and_retain_team_folders")?; + s.end() + } + MemberRemoveActionType::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) } } } -/// Connected integration for member. +/// Removed the external ID for team member. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct IntegrationConnectedDetails { - /// Name of the third-party integration. - pub integration_name: String, +pub struct MemberRemoveExternalIdDetails { + /// Old external id. + pub previous_value: crate::types::team_common::MemberExternalId, } -impl IntegrationConnectedDetails { - pub fn new(integration_name: String) -> Self { - IntegrationConnectedDetails { - integration_name, +impl MemberRemoveExternalIdDetails { + pub fn new(previous_value: crate::types::team_common::MemberExternalId) -> Self { + MemberRemoveExternalIdDetails { + previous_value, } } } -const INTEGRATION_CONNECTED_DETAILS_FIELDS: &[&str] = &["integration_name"]; -impl IntegrationConnectedDetails { +const MEMBER_REMOVE_EXTERNAL_ID_DETAILS_FIELDS: &[&str] = &["previous_value"]; +impl MemberRemoveExternalIdDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_integration_name = None; + ) -> Result, V::Error> { + let mut field_previous_value = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "integration_name" => { - if field_integration_name.is_some() { - return Err(::serde::de::Error::duplicate_field("integration_name")); + "previous_value" => { + if field_previous_value.is_some() { + return Err(::serde::de::Error::duplicate_field("previous_value")); } - field_integration_name = Some(map.next_value()?); + field_previous_value = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -54744,8 +76693,8 @@ impl IntegrationConnectedDetails { if optional && nothing { return Ok(None); } - let result = IntegrationConnectedDetails { - integration_name: field_integration_name.ok_or_else(|| ::serde::de::Error::missing_field("integration_name"))?, + let result = MemberRemoveExternalIdDetails { + previous_value: field_previous_value.ok_or_else(|| ::serde::de::Error::missing_field("previous_value"))?, }; Ok(Some(result)) } @@ -54755,34 +76704,34 @@ impl IntegrationConnectedDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("integration_name", &self.integration_name)?; + s.serialize_field("previous_value", &self.previous_value)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for IntegrationConnectedDetails { +impl<'de> ::serde::de::Deserialize<'de> for MemberRemoveExternalIdDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = IntegrationConnectedDetails; + type Value = MemberRemoveExternalIdDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a IntegrationConnectedDetails struct") + f.write_str("a MemberRemoveExternalIdDetails struct") } fn visit_map>(self, map: V) -> Result { - IntegrationConnectedDetails::internal_deserialize(map) + MemberRemoveExternalIdDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("IntegrationConnectedDetails", INTEGRATION_CONNECTED_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("MemberRemoveExternalIdDetails", MEMBER_REMOVE_EXTERNAL_ID_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for IntegrationConnectedDetails { +impl ::serde::ser::Serialize for MemberRemoveExternalIdDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("IntegrationConnectedDetails", 1)?; + let mut s = serializer.serialize_struct("MemberRemoveExternalIdDetails", 1)?; self.internal_serialize::(&mut s)?; s.end() } @@ -54790,30 +76739,30 @@ impl ::serde::ser::Serialize for IntegrationConnectedDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct IntegrationConnectedType { +pub struct MemberRemoveExternalIdType { pub description: String, } -impl IntegrationConnectedType { +impl MemberRemoveExternalIdType { pub fn new(description: String) -> Self { - IntegrationConnectedType { + MemberRemoveExternalIdType { description, } } } -const INTEGRATION_CONNECTED_TYPE_FIELDS: &[&str] = &["description"]; -impl IntegrationConnectedType { +const MEMBER_REMOVE_EXTERNAL_ID_TYPE_FIELDS: &[&str] = &["description"]; +impl MemberRemoveExternalIdType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -54834,7 +76783,7 @@ impl IntegrationConnectedType { if optional && nothing { return Ok(None); } - let result = IntegrationConnectedType { + let result = MemberRemoveExternalIdType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -54850,72 +76799,88 @@ impl IntegrationConnectedType { } } -impl<'de> ::serde::de::Deserialize<'de> for IntegrationConnectedType { +impl<'de> ::serde::de::Deserialize<'de> for MemberRemoveExternalIdType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = IntegrationConnectedType; + type Value = MemberRemoveExternalIdType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a IntegrationConnectedType struct") + f.write_str("a MemberRemoveExternalIdType struct") } fn visit_map>(self, map: V) -> Result { - IntegrationConnectedType::internal_deserialize(map) + MemberRemoveExternalIdType::internal_deserialize(map) } } - deserializer.deserialize_struct("IntegrationConnectedType", INTEGRATION_CONNECTED_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("MemberRemoveExternalIdType", MEMBER_REMOVE_EXTERNAL_ID_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for IntegrationConnectedType { +impl ::serde::ser::Serialize for MemberRemoveExternalIdType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("IntegrationConnectedType", 1)?; + let mut s = serializer.serialize_struct("MemberRemoveExternalIdType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Disconnected integration for member. +/// Changed whether users can find team when not invited. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct IntegrationDisconnectedDetails { - /// Name of the third-party integration. - pub integration_name: String, +pub struct MemberRequestsChangePolicyDetails { + /// New member change requests policy. + pub new_value: MemberRequestsPolicy, + /// Previous member change requests policy. Might be missing due to historical data gap. + pub previous_value: Option, } -impl IntegrationDisconnectedDetails { - pub fn new(integration_name: String) -> Self { - IntegrationDisconnectedDetails { - integration_name, +impl MemberRequestsChangePolicyDetails { + pub fn new(new_value: MemberRequestsPolicy) -> Self { + MemberRequestsChangePolicyDetails { + new_value, + previous_value: None, } } + + pub fn with_previous_value(mut self, value: MemberRequestsPolicy) -> Self { + self.previous_value = Some(value); + self + } } -const INTEGRATION_DISCONNECTED_DETAILS_FIELDS: &[&str] = &["integration_name"]; -impl IntegrationDisconnectedDetails { +const MEMBER_REQUESTS_CHANGE_POLICY_DETAILS_FIELDS: &[&str] = &["new_value", + "previous_value"]; +impl MemberRequestsChangePolicyDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_integration_name = None; + ) -> Result, V::Error> { + let mut field_new_value = None; + let mut field_previous_value = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "integration_name" => { - if field_integration_name.is_some() { - return Err(::serde::de::Error::duplicate_field("integration_name")); + "new_value" => { + if field_new_value.is_some() { + return Err(::serde::de::Error::duplicate_field("new_value")); } - field_integration_name = Some(map.next_value()?); + field_new_value = Some(map.next_value()?); + } + "previous_value" => { + if field_previous_value.is_some() { + return Err(::serde::de::Error::duplicate_field("previous_value")); + } + field_previous_value = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -54926,8 +76891,9 @@ impl IntegrationDisconnectedDetails { if optional && nothing { return Ok(None); } - let result = IntegrationDisconnectedDetails { - integration_name: field_integration_name.ok_or_else(|| ::serde::de::Error::missing_field("integration_name"))?, + let result = MemberRequestsChangePolicyDetails { + new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, + previous_value: field_previous_value.and_then(Option::flatten), }; Ok(Some(result)) } @@ -54937,34 +76903,37 @@ impl IntegrationDisconnectedDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("integration_name", &self.integration_name)?; + s.serialize_field("new_value", &self.new_value)?; + if let Some(val) = &self.previous_value { + s.serialize_field("previous_value", val)?; + } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for IntegrationDisconnectedDetails { +impl<'de> ::serde::de::Deserialize<'de> for MemberRequestsChangePolicyDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = IntegrationDisconnectedDetails; + type Value = MemberRequestsChangePolicyDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a IntegrationDisconnectedDetails struct") + f.write_str("a MemberRequestsChangePolicyDetails struct") } fn visit_map>(self, map: V) -> Result { - IntegrationDisconnectedDetails::internal_deserialize(map) + MemberRequestsChangePolicyDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("IntegrationDisconnectedDetails", INTEGRATION_DISCONNECTED_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("MemberRequestsChangePolicyDetails", MEMBER_REQUESTS_CHANGE_POLICY_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for IntegrationDisconnectedDetails { +impl ::serde::ser::Serialize for MemberRequestsChangePolicyDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("IntegrationDisconnectedDetails", 1)?; + let mut s = serializer.serialize_struct("MemberRequestsChangePolicyDetails", 2)?; self.internal_serialize::(&mut s)?; s.end() } @@ -54972,30 +76941,30 @@ impl ::serde::ser::Serialize for IntegrationDisconnectedDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct IntegrationDisconnectedType { +pub struct MemberRequestsChangePolicyType { pub description: String, } -impl IntegrationDisconnectedType { +impl MemberRequestsChangePolicyType { pub fn new(description: String) -> Self { - IntegrationDisconnectedType { + MemberRequestsChangePolicyType { description, } } } -const INTEGRATION_DISCONNECTED_TYPE_FIELDS: &[&str] = &["description"]; -impl IntegrationDisconnectedType { +const MEMBER_REQUESTS_CHANGE_POLICY_TYPE_FIELDS: &[&str] = &["description"]; +impl MemberRequestsChangePolicyType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -55016,7 +76985,7 @@ impl IntegrationDisconnectedType { if optional && nothing { return Ok(None); } - let result = IntegrationDisconnectedType { + let result = MemberRequestsChangePolicyType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -55032,54 +77001,54 @@ impl IntegrationDisconnectedType { } } -impl<'de> ::serde::de::Deserialize<'de> for IntegrationDisconnectedType { +impl<'de> ::serde::de::Deserialize<'de> for MemberRequestsChangePolicyType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = IntegrationDisconnectedType; + type Value = MemberRequestsChangePolicyType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a IntegrationDisconnectedType struct") + f.write_str("a MemberRequestsChangePolicyType struct") } fn visit_map>(self, map: V) -> Result { - IntegrationDisconnectedType::internal_deserialize(map) + MemberRequestsChangePolicyType::internal_deserialize(map) } } - deserializer.deserialize_struct("IntegrationDisconnectedType", INTEGRATION_DISCONNECTED_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("MemberRequestsChangePolicyType", MEMBER_REQUESTS_CHANGE_POLICY_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for IntegrationDisconnectedType { +impl ::serde::ser::Serialize for MemberRequestsChangePolicyType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("IntegrationDisconnectedType", 1)?; + let mut s = serializer.serialize_struct("MemberRequestsChangePolicyType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Policy for controlling whether a service integration is enabled for the team. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // variants may be added in the future -pub enum IntegrationPolicy { +pub enum MemberRequestsPolicy { + AutoAccept, Disabled, - Enabled, + RequireApproval, /// Catch-all used for unrecognized values returned from the server. Encountering this value /// typically indicates that this SDK version is out of date. Other, } -impl<'de> ::serde::de::Deserialize<'de> for IntegrationPolicy { +impl<'de> ::serde::de::Deserialize<'de> for MemberRequestsPolicy { fn deserialize>(deserializer: D) -> Result { // union deserializer use serde::de::{self, MapAccess, Visitor}; struct EnumVisitor; impl<'de> Visitor<'de> for EnumVisitor { - type Value = IntegrationPolicy; + type Value = MemberRequestsPolicy; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a IntegrationPolicy structure") + f.write_str("a MemberRequestsPolicy structure") } fn visit_map>(self, mut map: V) -> Result { let tag: &str = match map.next_key()? { @@ -55087,96 +77056,162 @@ impl<'de> ::serde::de::Deserialize<'de> for IntegrationPolicy { _ => return Err(de::Error::missing_field(".tag")) }; let value = match tag { - "disabled" => IntegrationPolicy::Disabled, - "enabled" => IntegrationPolicy::Enabled, - _ => IntegrationPolicy::Other, + "auto_accept" => MemberRequestsPolicy::AutoAccept, + "disabled" => MemberRequestsPolicy::Disabled, + "require_approval" => MemberRequestsPolicy::RequireApproval, + _ => MemberRequestsPolicy::Other, + }; + crate::eat_json_fields(&mut map)?; + Ok(value) + } + } + const VARIANTS: &[&str] = &["auto_accept", + "disabled", + "require_approval", + "other"]; + deserializer.deserialize_struct("MemberRequestsPolicy", VARIANTS, EnumVisitor) + } +} + +impl ::serde::ser::Serialize for MemberRequestsPolicy { + fn serialize(&self, serializer: S) -> Result { + // union serializer + use serde::ser::SerializeStruct; + match self { + MemberRequestsPolicy::AutoAccept => { + // unit + let mut s = serializer.serialize_struct("MemberRequestsPolicy", 1)?; + s.serialize_field(".tag", "auto_accept")?; + s.end() + } + MemberRequestsPolicy::Disabled => { + // unit + let mut s = serializer.serialize_struct("MemberRequestsPolicy", 1)?; + s.serialize_field(".tag", "disabled")?; + s.end() + } + MemberRequestsPolicy::RequireApproval => { + // unit + let mut s = serializer.serialize_struct("MemberRequestsPolicy", 1)?; + s.serialize_field(".tag", "require_approval")?; + s.end() + } + MemberRequestsPolicy::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) + } + } +} + +/// Policy for controlling whether team members can send team invites +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // variants may be added in the future +pub enum MemberSendInvitePolicy { + Disabled, + Everyone, + SpecificMembers, + /// Catch-all used for unrecognized values returned from the server. Encountering this value + /// typically indicates that this SDK version is out of date. + Other, +} + +impl<'de> ::serde::de::Deserialize<'de> for MemberSendInvitePolicy { + fn deserialize>(deserializer: D) -> Result { + // union deserializer + use serde::de::{self, MapAccess, Visitor}; + struct EnumVisitor; + impl<'de> Visitor<'de> for EnumVisitor { + type Value = MemberSendInvitePolicy; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a MemberSendInvitePolicy structure") + } + fn visit_map>(self, mut map: V) -> Result { + let tag: &str = match map.next_key()? { + Some(".tag") => map.next_value()?, + _ => return Err(de::Error::missing_field(".tag")) + }; + let value = match tag { + "disabled" => MemberSendInvitePolicy::Disabled, + "everyone" => MemberSendInvitePolicy::Everyone, + "specific_members" => MemberSendInvitePolicy::SpecificMembers, + _ => MemberSendInvitePolicy::Other, }; crate::eat_json_fields(&mut map)?; Ok(value) } } const VARIANTS: &[&str] = &["disabled", - "enabled", + "everyone", + "specific_members", "other"]; - deserializer.deserialize_struct("IntegrationPolicy", VARIANTS, EnumVisitor) + deserializer.deserialize_struct("MemberSendInvitePolicy", VARIANTS, EnumVisitor) } } -impl ::serde::ser::Serialize for IntegrationPolicy { +impl ::serde::ser::Serialize for MemberSendInvitePolicy { fn serialize(&self, serializer: S) -> Result { // union serializer use serde::ser::SerializeStruct; match self { - IntegrationPolicy::Disabled => { + MemberSendInvitePolicy::Disabled => { // unit - let mut s = serializer.serialize_struct("IntegrationPolicy", 1)?; + let mut s = serializer.serialize_struct("MemberSendInvitePolicy", 1)?; s.serialize_field(".tag", "disabled")?; s.end() } - IntegrationPolicy::Enabled => { + MemberSendInvitePolicy::Everyone => { // unit - let mut s = serializer.serialize_struct("IntegrationPolicy", 1)?; - s.serialize_field(".tag", "enabled")?; + let mut s = serializer.serialize_struct("MemberSendInvitePolicy", 1)?; + s.serialize_field(".tag", "everyone")?; s.end() } - IntegrationPolicy::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) + MemberSendInvitePolicy::SpecificMembers => { + // unit + let mut s = serializer.serialize_struct("MemberSendInvitePolicy", 1)?; + s.serialize_field(".tag", "specific_members")?; + s.end() + } + MemberSendInvitePolicy::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) } } } -/// Changed integration policy for team. +/// Changed member send invite policy for team. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct IntegrationPolicyChangedDetails { - /// Name of the third-party integration. - pub integration_name: String, - /// New integration policy. - pub new_value: IntegrationPolicy, - /// Previous integration policy. - pub previous_value: IntegrationPolicy, +pub struct MemberSendInvitePolicyChangedDetails { + /// New team member send invite policy. + pub new_value: MemberSendInvitePolicy, + /// Previous team member send invite policy. + pub previous_value: MemberSendInvitePolicy, } -impl IntegrationPolicyChangedDetails { - pub fn new( - integration_name: String, - new_value: IntegrationPolicy, - previous_value: IntegrationPolicy, - ) -> Self { - IntegrationPolicyChangedDetails { - integration_name, +impl MemberSendInvitePolicyChangedDetails { + pub fn new(new_value: MemberSendInvitePolicy, previous_value: MemberSendInvitePolicy) -> Self { + MemberSendInvitePolicyChangedDetails { new_value, previous_value, } } } -const INTEGRATION_POLICY_CHANGED_DETAILS_FIELDS: &[&str] = &["integration_name", - "new_value", - "previous_value"]; -impl IntegrationPolicyChangedDetails { +const MEMBER_SEND_INVITE_POLICY_CHANGED_DETAILS_FIELDS: &[&str] = &["new_value", + "previous_value"]; +impl MemberSendInvitePolicyChangedDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_integration_name = None; + ) -> Result, V::Error> { let mut field_new_value = None; let mut field_previous_value = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "integration_name" => { - if field_integration_name.is_some() { - return Err(::serde::de::Error::duplicate_field("integration_name")); - } - field_integration_name = Some(map.next_value()?); - } "new_value" => { if field_new_value.is_some() { return Err(::serde::de::Error::duplicate_field("new_value")); @@ -55198,8 +77233,7 @@ impl IntegrationPolicyChangedDetails { if optional && nothing { return Ok(None); } - let result = IntegrationPolicyChangedDetails { - integration_name: field_integration_name.ok_or_else(|| ::serde::de::Error::missing_field("integration_name"))?, + let result = MemberSendInvitePolicyChangedDetails { new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, previous_value: field_previous_value.ok_or_else(|| ::serde::de::Error::missing_field("previous_value"))?, }; @@ -55211,36 +77245,35 @@ impl IntegrationPolicyChangedDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("integration_name", &self.integration_name)?; s.serialize_field("new_value", &self.new_value)?; s.serialize_field("previous_value", &self.previous_value)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for IntegrationPolicyChangedDetails { +impl<'de> ::serde::de::Deserialize<'de> for MemberSendInvitePolicyChangedDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = IntegrationPolicyChangedDetails; + type Value = MemberSendInvitePolicyChangedDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a IntegrationPolicyChangedDetails struct") + f.write_str("a MemberSendInvitePolicyChangedDetails struct") } fn visit_map>(self, map: V) -> Result { - IntegrationPolicyChangedDetails::internal_deserialize(map) + MemberSendInvitePolicyChangedDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("IntegrationPolicyChangedDetails", INTEGRATION_POLICY_CHANGED_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("MemberSendInvitePolicyChangedDetails", MEMBER_SEND_INVITE_POLICY_CHANGED_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for IntegrationPolicyChangedDetails { +impl ::serde::ser::Serialize for MemberSendInvitePolicyChangedDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("IntegrationPolicyChangedDetails", 3)?; + let mut s = serializer.serialize_struct("MemberSendInvitePolicyChangedDetails", 2)?; self.internal_serialize::(&mut s)?; s.end() } @@ -55248,30 +77281,30 @@ impl ::serde::ser::Serialize for IntegrationPolicyChangedDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct IntegrationPolicyChangedType { +pub struct MemberSendInvitePolicyChangedType { pub description: String, } -impl IntegrationPolicyChangedType { +impl MemberSendInvitePolicyChangedType { pub fn new(description: String) -> Self { - IntegrationPolicyChangedType { + MemberSendInvitePolicyChangedType { description, } } } -const INTEGRATION_POLICY_CHANGED_TYPE_FIELDS: &[&str] = &["description"]; -impl IntegrationPolicyChangedType { +const MEMBER_SEND_INVITE_POLICY_CHANGED_TYPE_FIELDS: &[&str] = &["description"]; +impl MemberSendInvitePolicyChangedType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -55292,7 +77325,7 @@ impl IntegrationPolicyChangedType { if optional && nothing { return Ok(None); } - let result = IntegrationPolicyChangedType { + let result = MemberSendInvitePolicyChangedType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -55308,151 +77341,114 @@ impl IntegrationPolicyChangedType { } } -impl<'de> ::serde::de::Deserialize<'de> for IntegrationPolicyChangedType { +impl<'de> ::serde::de::Deserialize<'de> for MemberSendInvitePolicyChangedType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = IntegrationPolicyChangedType; + type Value = MemberSendInvitePolicyChangedType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a IntegrationPolicyChangedType struct") + f.write_str("a MemberSendInvitePolicyChangedType struct") } fn visit_map>(self, map: V) -> Result { - IntegrationPolicyChangedType::internal_deserialize(map) + MemberSendInvitePolicyChangedType::internal_deserialize(map) } } - deserializer.deserialize_struct("IntegrationPolicyChangedType", INTEGRATION_POLICY_CHANGED_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("MemberSendInvitePolicyChangedType", MEMBER_SEND_INVITE_POLICY_CHANGED_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for IntegrationPolicyChangedType { +impl ::serde::ser::Serialize for MemberSendInvitePolicyChangedType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("IntegrationPolicyChangedType", 1)?; + let mut s = serializer.serialize_struct("MemberSendInvitePolicyChangedType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Policy for deciding whether team admins receive email when an invitation to join the team is -/// accepted -#[derive(Debug, Clone, PartialEq, Eq)] -#[non_exhaustive] // variants may be added in the future -pub enum InviteAcceptanceEmailPolicy { - Disabled, - Enabled, - /// Catch-all used for unrecognized values returned from the server. Encountering this value - /// typically indicates that this SDK version is out of date. - Other, +/// Set team member profile photo. +#[derive(Debug, Clone, PartialEq, Eq, Default)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct MemberSetProfilePhotoDetails { } -impl<'de> ::serde::de::Deserialize<'de> for InviteAcceptanceEmailPolicy { +const MEMBER_SET_PROFILE_PHOTO_DETAILS_FIELDS: &[&str] = &[]; +impl MemberSetProfilePhotoDetails { + // no _opt deserializer + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + ) -> Result { + // ignore any fields found; none are presently recognized + crate::eat_json_fields(&mut map)?; + Ok(MemberSetProfilePhotoDetails {}) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for MemberSetProfilePhotoDetails { fn deserialize>(deserializer: D) -> Result { - // union deserializer - use serde::de::{self, MapAccess, Visitor}; - struct EnumVisitor; - impl<'de> Visitor<'de> for EnumVisitor { - type Value = InviteAcceptanceEmailPolicy; + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = MemberSetProfilePhotoDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a InviteAcceptanceEmailPolicy structure") + f.write_str("a MemberSetProfilePhotoDetails struct") } - fn visit_map>(self, mut map: V) -> Result { - let tag: &str = match map.next_key()? { - Some(".tag") => map.next_value()?, - _ => return Err(de::Error::missing_field(".tag")) - }; - let value = match tag { - "disabled" => InviteAcceptanceEmailPolicy::Disabled, - "enabled" => InviteAcceptanceEmailPolicy::Enabled, - _ => InviteAcceptanceEmailPolicy::Other, - }; - crate::eat_json_fields(&mut map)?; - Ok(value) + fn visit_map>(self, map: V) -> Result { + MemberSetProfilePhotoDetails::internal_deserialize(map) } } - const VARIANTS: &[&str] = &["disabled", - "enabled", - "other"]; - deserializer.deserialize_struct("InviteAcceptanceEmailPolicy", VARIANTS, EnumVisitor) + deserializer.deserialize_struct("MemberSetProfilePhotoDetails", MEMBER_SET_PROFILE_PHOTO_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for InviteAcceptanceEmailPolicy { +impl ::serde::ser::Serialize for MemberSetProfilePhotoDetails { fn serialize(&self, serializer: S) -> Result { - // union serializer + // struct serializer use serde::ser::SerializeStruct; - match self { - InviteAcceptanceEmailPolicy::Disabled => { - // unit - let mut s = serializer.serialize_struct("InviteAcceptanceEmailPolicy", 1)?; - s.serialize_field(".tag", "disabled")?; - s.end() - } - InviteAcceptanceEmailPolicy::Enabled => { - // unit - let mut s = serializer.serialize_struct("InviteAcceptanceEmailPolicy", 1)?; - s.serialize_field(".tag", "enabled")?; - s.end() - } - InviteAcceptanceEmailPolicy::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) - } + serializer.serialize_struct("MemberSetProfilePhotoDetails", 0)?.end() } } -/// Changed invite accept email policy for team. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct InviteAcceptanceEmailPolicyChangedDetails { - /// To. - pub new_value: InviteAcceptanceEmailPolicy, - /// From. - pub previous_value: InviteAcceptanceEmailPolicy, +pub struct MemberSetProfilePhotoType { + pub description: String, } -impl InviteAcceptanceEmailPolicyChangedDetails { - pub fn new( - new_value: InviteAcceptanceEmailPolicy, - previous_value: InviteAcceptanceEmailPolicy, - ) -> Self { - InviteAcceptanceEmailPolicyChangedDetails { - new_value, - previous_value, +impl MemberSetProfilePhotoType { + pub fn new(description: String) -> Self { + MemberSetProfilePhotoType { + description, } } } -const INVITE_ACCEPTANCE_EMAIL_POLICY_CHANGED_DETAILS_FIELDS: &[&str] = &["new_value", - "previous_value"]; -impl InviteAcceptanceEmailPolicyChangedDetails { +const MEMBER_SET_PROFILE_PHOTO_TYPE_FIELDS: &[&str] = &["description"]; +impl MemberSetProfilePhotoType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_new_value = None; - let mut field_previous_value = None; + ) -> Result, V::Error> { + let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "new_value" => { - if field_new_value.is_some() { - return Err(::serde::de::Error::duplicate_field("new_value")); - } - field_new_value = Some(map.next_value()?); - } - "previous_value" => { - if field_previous_value.is_some() { - return Err(::serde::de::Error::duplicate_field("previous_value")); + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); } - field_previous_value = Some(map.next_value()?); + field_description = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -55463,9 +77459,8 @@ impl InviteAcceptanceEmailPolicyChangedDetails { if optional && nothing { return Ok(None); } - let result = InviteAcceptanceEmailPolicyChangedDetails { - new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, - previous_value: field_previous_value.ok_or_else(|| ::serde::de::Error::missing_field("previous_value"))?, + let result = MemberSetProfilePhotoType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) } @@ -55475,76 +77470,77 @@ impl InviteAcceptanceEmailPolicyChangedDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("new_value", &self.new_value)?; - s.serialize_field("previous_value", &self.previous_value)?; + s.serialize_field("description", &self.description)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for InviteAcceptanceEmailPolicyChangedDetails { +impl<'de> ::serde::de::Deserialize<'de> for MemberSetProfilePhotoType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = InviteAcceptanceEmailPolicyChangedDetails; + type Value = MemberSetProfilePhotoType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a InviteAcceptanceEmailPolicyChangedDetails struct") + f.write_str("a MemberSetProfilePhotoType struct") } fn visit_map>(self, map: V) -> Result { - InviteAcceptanceEmailPolicyChangedDetails::internal_deserialize(map) + MemberSetProfilePhotoType::internal_deserialize(map) } } - deserializer.deserialize_struct("InviteAcceptanceEmailPolicyChangedDetails", INVITE_ACCEPTANCE_EMAIL_POLICY_CHANGED_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("MemberSetProfilePhotoType", MEMBER_SET_PROFILE_PHOTO_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for InviteAcceptanceEmailPolicyChangedDetails { +impl ::serde::ser::Serialize for MemberSetProfilePhotoType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("InviteAcceptanceEmailPolicyChangedDetails", 2)?; + let mut s = serializer.serialize_struct("MemberSetProfilePhotoType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } +/// Set custom member space limit. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct InviteAcceptanceEmailPolicyChangedType { - pub description: String, +pub struct MemberSpaceLimitsAddCustomQuotaDetails { + /// New custom quota value in bytes. + pub new_value: u64, } -impl InviteAcceptanceEmailPolicyChangedType { - pub fn new(description: String) -> Self { - InviteAcceptanceEmailPolicyChangedType { - description, +impl MemberSpaceLimitsAddCustomQuotaDetails { + pub fn new(new_value: u64) -> Self { + MemberSpaceLimitsAddCustomQuotaDetails { + new_value, } } } - -const INVITE_ACCEPTANCE_EMAIL_POLICY_CHANGED_TYPE_FIELDS: &[&str] = &["description"]; -impl InviteAcceptanceEmailPolicyChangedType { + +const MEMBER_SPACE_LIMITS_ADD_CUSTOM_QUOTA_DETAILS_FIELDS: &[&str] = &["new_value"]; +impl MemberSpaceLimitsAddCustomQuotaDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_description = None; + ) -> Result, V::Error> { + let mut field_new_value = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "description" => { - if field_description.is_some() { - return Err(::serde::de::Error::duplicate_field("description")); + "new_value" => { + if field_new_value.is_some() { + return Err(::serde::de::Error::duplicate_field("new_value")); } - field_description = Some(map.next_value()?); + field_new_value = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -55555,8 +77551,8 @@ impl InviteAcceptanceEmailPolicyChangedType { if optional && nothing { return Ok(None); } - let result = InviteAcceptanceEmailPolicyChangedType { - description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + let result = MemberSpaceLimitsAddCustomQuotaDetails { + new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, }; Ok(Some(result)) } @@ -55566,284 +77562,75 @@ impl InviteAcceptanceEmailPolicyChangedType { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("description", &self.description)?; + s.serialize_field("new_value", &self.new_value)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for InviteAcceptanceEmailPolicyChangedType { +impl<'de> ::serde::de::Deserialize<'de> for MemberSpaceLimitsAddCustomQuotaDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = InviteAcceptanceEmailPolicyChangedType; + type Value = MemberSpaceLimitsAddCustomQuotaDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a InviteAcceptanceEmailPolicyChangedType struct") + f.write_str("a MemberSpaceLimitsAddCustomQuotaDetails struct") } fn visit_map>(self, map: V) -> Result { - InviteAcceptanceEmailPolicyChangedType::internal_deserialize(map) + MemberSpaceLimitsAddCustomQuotaDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("InviteAcceptanceEmailPolicyChangedType", INVITE_ACCEPTANCE_EMAIL_POLICY_CHANGED_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("MemberSpaceLimitsAddCustomQuotaDetails", MEMBER_SPACE_LIMITS_ADD_CUSTOM_QUOTA_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for InviteAcceptanceEmailPolicyChangedType { +impl ::serde::ser::Serialize for MemberSpaceLimitsAddCustomQuotaDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("InviteAcceptanceEmailPolicyChangedType", 1)?; + let mut s = serializer.serialize_struct("MemberSpaceLimitsAddCustomQuotaDetails", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -#[derive(Debug, Clone, PartialEq, Eq)] -#[non_exhaustive] // variants may be added in the future -pub enum InviteMethod { - AutoApprove, - InviteLink, - MemberInvite, - MovedFromAnotherTeam, - /// Catch-all used for unrecognized values returned from the server. Encountering this value - /// typically indicates that this SDK version is out of date. - Other, -} - -impl<'de> ::serde::de::Deserialize<'de> for InviteMethod { - fn deserialize>(deserializer: D) -> Result { - // union deserializer - use serde::de::{self, MapAccess, Visitor}; - struct EnumVisitor; - impl<'de> Visitor<'de> for EnumVisitor { - type Value = InviteMethod; - fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a InviteMethod structure") - } - fn visit_map>(self, mut map: V) -> Result { - let tag: &str = match map.next_key()? { - Some(".tag") => map.next_value()?, - _ => return Err(de::Error::missing_field(".tag")) - }; - let value = match tag { - "auto_approve" => InviteMethod::AutoApprove, - "invite_link" => InviteMethod::InviteLink, - "member_invite" => InviteMethod::MemberInvite, - "moved_from_another_team" => InviteMethod::MovedFromAnotherTeam, - _ => InviteMethod::Other, - }; - crate::eat_json_fields(&mut map)?; - Ok(value) - } - } - const VARIANTS: &[&str] = &["auto_approve", - "invite_link", - "member_invite", - "moved_from_another_team", - "other"]; - deserializer.deserialize_struct("InviteMethod", VARIANTS, EnumVisitor) - } -} - -impl ::serde::ser::Serialize for InviteMethod { - fn serialize(&self, serializer: S) -> Result { - // union serializer - use serde::ser::SerializeStruct; - match self { - InviteMethod::AutoApprove => { - // unit - let mut s = serializer.serialize_struct("InviteMethod", 1)?; - s.serialize_field(".tag", "auto_approve")?; - s.end() - } - InviteMethod::InviteLink => { - // unit - let mut s = serializer.serialize_struct("InviteMethod", 1)?; - s.serialize_field(".tag", "invite_link")?; - s.end() - } - InviteMethod::MemberInvite => { - // unit - let mut s = serializer.serialize_struct("InviteMethod", 1)?; - s.serialize_field(".tag", "member_invite")?; - s.end() - } - InviteMethod::MovedFromAnotherTeam => { - // unit - let mut s = serializer.serialize_struct("InviteMethod", 1)?; - s.serialize_field(".tag", "moved_from_another_team")?; - s.end() - } - InviteMethod::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) - } - } -} - -/// Additional information relevant when a new member joins the team. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct JoinTeamDetails { - /// Linked applications. (Deprecated) Please use has_linked_apps boolean field instead. - pub linked_apps: Vec, - /// Linked devices. (Deprecated) Please use has_linked_devices boolean field instead. - pub linked_devices: Vec, - /// Linked shared folders. (Deprecated) Please use has_linked_shared_folders boolean field - /// instead. - pub linked_shared_folders: Vec, - /// (Deprecated) True if the linked_apps list was truncated to the maximum supported length - /// (50). - pub was_linked_apps_truncated: Option, - /// (Deprecated) True if the linked_devices list was truncated to the maximum supported length - /// (50). - pub was_linked_devices_truncated: Option, - /// (Deprecated) True if the linked_shared_folders list was truncated to the maximum supported - /// length (50). - pub was_linked_shared_folders_truncated: Option, - /// True if the user had linked apps at event time. - pub has_linked_apps: Option, - /// True if the user had linked apps at event time. - pub has_linked_devices: Option, - /// True if the user had linked shared folders at event time. - pub has_linked_shared_folders: Option, +pub struct MemberSpaceLimitsAddCustomQuotaType { + pub description: String, } -impl JoinTeamDetails { - pub fn new( - linked_apps: Vec, - linked_devices: Vec, - linked_shared_folders: Vec, - ) -> Self { - JoinTeamDetails { - linked_apps, - linked_devices, - linked_shared_folders, - was_linked_apps_truncated: None, - was_linked_devices_truncated: None, - was_linked_shared_folders_truncated: None, - has_linked_apps: None, - has_linked_devices: None, - has_linked_shared_folders: None, +impl MemberSpaceLimitsAddCustomQuotaType { + pub fn new(description: String) -> Self { + MemberSpaceLimitsAddCustomQuotaType { + description, } } - - pub fn with_was_linked_apps_truncated(mut self, value: bool) -> Self { - self.was_linked_apps_truncated = Some(value); - self - } - - pub fn with_was_linked_devices_truncated(mut self, value: bool) -> Self { - self.was_linked_devices_truncated = Some(value); - self - } - - pub fn with_was_linked_shared_folders_truncated(mut self, value: bool) -> Self { - self.was_linked_shared_folders_truncated = Some(value); - self - } - - pub fn with_has_linked_apps(mut self, value: bool) -> Self { - self.has_linked_apps = Some(value); - self - } - - pub fn with_has_linked_devices(mut self, value: bool) -> Self { - self.has_linked_devices = Some(value); - self - } - - pub fn with_has_linked_shared_folders(mut self, value: bool) -> Self { - self.has_linked_shared_folders = Some(value); - self - } } -const JOIN_TEAM_DETAILS_FIELDS: &[&str] = &["linked_apps", - "linked_devices", - "linked_shared_folders", - "was_linked_apps_truncated", - "was_linked_devices_truncated", - "was_linked_shared_folders_truncated", - "has_linked_apps", - "has_linked_devices", - "has_linked_shared_folders"]; -impl JoinTeamDetails { +const MEMBER_SPACE_LIMITS_ADD_CUSTOM_QUOTA_TYPE_FIELDS: &[&str] = &["description"]; +impl MemberSpaceLimitsAddCustomQuotaType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_linked_apps = None; - let mut field_linked_devices = None; - let mut field_linked_shared_folders = None; - let mut field_was_linked_apps_truncated = None; - let mut field_was_linked_devices_truncated = None; - let mut field_was_linked_shared_folders_truncated = None; - let mut field_has_linked_apps = None; - let mut field_has_linked_devices = None; - let mut field_has_linked_shared_folders = None; + ) -> Result, V::Error> { + let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "linked_apps" => { - if field_linked_apps.is_some() { - return Err(::serde::de::Error::duplicate_field("linked_apps")); - } - field_linked_apps = Some(map.next_value()?); - } - "linked_devices" => { - if field_linked_devices.is_some() { - return Err(::serde::de::Error::duplicate_field("linked_devices")); - } - field_linked_devices = Some(map.next_value()?); - } - "linked_shared_folders" => { - if field_linked_shared_folders.is_some() { - return Err(::serde::de::Error::duplicate_field("linked_shared_folders")); - } - field_linked_shared_folders = Some(map.next_value()?); - } - "was_linked_apps_truncated" => { - if field_was_linked_apps_truncated.is_some() { - return Err(::serde::de::Error::duplicate_field("was_linked_apps_truncated")); - } - field_was_linked_apps_truncated = Some(map.next_value()?); - } - "was_linked_devices_truncated" => { - if field_was_linked_devices_truncated.is_some() { - return Err(::serde::de::Error::duplicate_field("was_linked_devices_truncated")); - } - field_was_linked_devices_truncated = Some(map.next_value()?); - } - "was_linked_shared_folders_truncated" => { - if field_was_linked_shared_folders_truncated.is_some() { - return Err(::serde::de::Error::duplicate_field("was_linked_shared_folders_truncated")); - } - field_was_linked_shared_folders_truncated = Some(map.next_value()?); - } - "has_linked_apps" => { - if field_has_linked_apps.is_some() { - return Err(::serde::de::Error::duplicate_field("has_linked_apps")); - } - field_has_linked_apps = Some(map.next_value()?); - } - "has_linked_devices" => { - if field_has_linked_devices.is_some() { - return Err(::serde::de::Error::duplicate_field("has_linked_devices")); - } - field_has_linked_devices = Some(map.next_value()?); - } - "has_linked_shared_folders" => { - if field_has_linked_shared_folders.is_some() { - return Err(::serde::de::Error::duplicate_field("has_linked_shared_folders")); + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); } - field_has_linked_shared_folders = Some(map.next_value()?); + field_description = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -55854,16 +77641,8 @@ impl JoinTeamDetails { if optional && nothing { return Ok(None); } - let result = JoinTeamDetails { - linked_apps: field_linked_apps.ok_or_else(|| ::serde::de::Error::missing_field("linked_apps"))?, - linked_devices: field_linked_devices.ok_or_else(|| ::serde::de::Error::missing_field("linked_devices"))?, - linked_shared_folders: field_linked_shared_folders.ok_or_else(|| ::serde::de::Error::missing_field("linked_shared_folders"))?, - was_linked_apps_truncated: field_was_linked_apps_truncated.and_then(Option::flatten), - was_linked_devices_truncated: field_was_linked_devices_truncated.and_then(Option::flatten), - was_linked_shared_folders_truncated: field_was_linked_shared_folders_truncated.and_then(Option::flatten), - has_linked_apps: field_has_linked_apps.and_then(Option::flatten), - has_linked_devices: field_has_linked_devices.and_then(Option::flatten), - has_linked_shared_folders: field_has_linked_shared_folders.and_then(Option::flatten), + let result = MemberSpaceLimitsAddCustomQuotaType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) } @@ -55873,328 +77652,119 @@ impl JoinTeamDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("linked_apps", &self.linked_apps)?; - s.serialize_field("linked_devices", &self.linked_devices)?; - s.serialize_field("linked_shared_folders", &self.linked_shared_folders)?; - if let Some(val) = &self.was_linked_apps_truncated { - s.serialize_field("was_linked_apps_truncated", val)?; - } - if let Some(val) = &self.was_linked_devices_truncated { - s.serialize_field("was_linked_devices_truncated", val)?; - } - if let Some(val) = &self.was_linked_shared_folders_truncated { - s.serialize_field("was_linked_shared_folders_truncated", val)?; - } - if let Some(val) = &self.has_linked_apps { - s.serialize_field("has_linked_apps", val)?; - } - if let Some(val) = &self.has_linked_devices { - s.serialize_field("has_linked_devices", val)?; - } - if let Some(val) = &self.has_linked_shared_folders { - s.serialize_field("has_linked_shared_folders", val)?; - } + s.serialize_field("description", &self.description)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for JoinTeamDetails { +impl<'de> ::serde::de::Deserialize<'de> for MemberSpaceLimitsAddCustomQuotaType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = JoinTeamDetails; + type Value = MemberSpaceLimitsAddCustomQuotaType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a JoinTeamDetails struct") + f.write_str("a MemberSpaceLimitsAddCustomQuotaType struct") } fn visit_map>(self, map: V) -> Result { - JoinTeamDetails::internal_deserialize(map) + MemberSpaceLimitsAddCustomQuotaType::internal_deserialize(map) } } - deserializer.deserialize_struct("JoinTeamDetails", JOIN_TEAM_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("MemberSpaceLimitsAddCustomQuotaType", MEMBER_SPACE_LIMITS_ADD_CUSTOM_QUOTA_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for JoinTeamDetails { +impl ::serde::ser::Serialize for MemberSpaceLimitsAddCustomQuotaType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("JoinTeamDetails", 9)?; + let mut s = serializer.serialize_struct("MemberSpaceLimitsAddCustomQuotaType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Label type -#[derive(Debug, Clone, PartialEq, Eq)] -#[non_exhaustive] // variants may be added in the future -pub enum LabelType { - PersonalInformation, - TestOnly, - UserDefinedTag, - /// Catch-all used for unrecognized values returned from the server. Encountering this value - /// typically indicates that this SDK version is out of date. - Other, +/// Added members to member space limit exception list. +#[derive(Debug, Clone, PartialEq, Eq, Default)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct MemberSpaceLimitsAddExceptionDetails { } -impl<'de> ::serde::de::Deserialize<'de> for LabelType { +const MEMBER_SPACE_LIMITS_ADD_EXCEPTION_DETAILS_FIELDS: &[&str] = &[]; +impl MemberSpaceLimitsAddExceptionDetails { + // no _opt deserializer + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + ) -> Result { + // ignore any fields found; none are presently recognized + crate::eat_json_fields(&mut map)?; + Ok(MemberSpaceLimitsAddExceptionDetails {}) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for MemberSpaceLimitsAddExceptionDetails { fn deserialize>(deserializer: D) -> Result { - // union deserializer - use serde::de::{self, MapAccess, Visitor}; - struct EnumVisitor; - impl<'de> Visitor<'de> for EnumVisitor { - type Value = LabelType; + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = MemberSpaceLimitsAddExceptionDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a LabelType structure") + f.write_str("a MemberSpaceLimitsAddExceptionDetails struct") } - fn visit_map>(self, mut map: V) -> Result { - let tag: &str = match map.next_key()? { - Some(".tag") => map.next_value()?, - _ => return Err(de::Error::missing_field(".tag")) - }; - let value = match tag { - "personal_information" => LabelType::PersonalInformation, - "test_only" => LabelType::TestOnly, - "user_defined_tag" => LabelType::UserDefinedTag, - _ => LabelType::Other, - }; - crate::eat_json_fields(&mut map)?; - Ok(value) + fn visit_map>(self, map: V) -> Result { + MemberSpaceLimitsAddExceptionDetails::internal_deserialize(map) } } - const VARIANTS: &[&str] = &["personal_information", - "test_only", - "user_defined_tag", - "other"]; - deserializer.deserialize_struct("LabelType", VARIANTS, EnumVisitor) + deserializer.deserialize_struct("MemberSpaceLimitsAddExceptionDetails", MEMBER_SPACE_LIMITS_ADD_EXCEPTION_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for LabelType { +impl ::serde::ser::Serialize for MemberSpaceLimitsAddExceptionDetails { fn serialize(&self, serializer: S) -> Result { - // union serializer + // struct serializer use serde::ser::SerializeStruct; - match self { - LabelType::PersonalInformation => { - // unit - let mut s = serializer.serialize_struct("LabelType", 1)?; - s.serialize_field(".tag", "personal_information")?; - s.end() - } - LabelType::TestOnly => { - // unit - let mut s = serializer.serialize_struct("LabelType", 1)?; - s.serialize_field(".tag", "test_only")?; - s.end() - } - LabelType::UserDefinedTag => { - // unit - let mut s = serializer.serialize_struct("LabelType", 1)?; - s.serialize_field(".tag", "user_defined_tag")?; - s.end() - } - LabelType::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) - } + serializer.serialize_struct("MemberSpaceLimitsAddExceptionDetails", 0)?.end() } } -/// Information on sessions, in legacy format -#[derive(Debug, Clone, PartialEq, Eq, Default)] +#[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct LegacyDeviceSessionLogInfo { - /// The IP address of the last activity from this session. - pub ip_address: Option, - /// The time this session was created. - pub created: Option, - /// The time of the last activity from this session. - pub updated: Option, - /// Session unique id. - pub session_info: Option, - /// The device name. Might be missing due to historical data gap. - pub display_name: Option, - /// Is device managed by emm. Might be missing due to historical data gap. - pub is_emm_managed: Option, - /// Information on the hosting platform. Might be missing due to historical data gap. - pub platform: Option, - /// The mac address of the last activity from this session. Might be missing due to historical - /// data gap. - pub mac_address: Option, - /// The hosting OS version. Might be missing due to historical data gap. - pub os_version: Option, - /// Information on the hosting device type. Might be missing due to historical data gap. - pub device_type: Option, - /// The Dropbox client version. Might be missing due to historical data gap. - pub client_version: Option, - /// Alternative unique device session id, instead of session id field. Might be missing due to - /// historical data gap. - pub legacy_uniq_id: Option, +pub struct MemberSpaceLimitsAddExceptionType { + pub description: String, } -impl LegacyDeviceSessionLogInfo { - pub fn with_ip_address(mut self, value: IpAddress) -> Self { - self.ip_address = Some(value); - self - } - - pub fn with_created(mut self, value: crate::types::common::DropboxTimestamp) -> Self { - self.created = Some(value); - self - } - - pub fn with_updated(mut self, value: crate::types::common::DropboxTimestamp) -> Self { - self.updated = Some(value); - self - } - - pub fn with_session_info(mut self, value: SessionLogInfo) -> Self { - self.session_info = Some(value); - self - } - - pub fn with_display_name(mut self, value: String) -> Self { - self.display_name = Some(value); - self - } - - pub fn with_is_emm_managed(mut self, value: bool) -> Self { - self.is_emm_managed = Some(value); - self - } - - pub fn with_platform(mut self, value: String) -> Self { - self.platform = Some(value); - self - } - - pub fn with_mac_address(mut self, value: IpAddress) -> Self { - self.mac_address = Some(value); - self - } - - pub fn with_os_version(mut self, value: String) -> Self { - self.os_version = Some(value); - self - } - - pub fn with_device_type(mut self, value: String) -> Self { - self.device_type = Some(value); - self - } - - pub fn with_client_version(mut self, value: String) -> Self { - self.client_version = Some(value); - self +impl MemberSpaceLimitsAddExceptionType { + pub fn new(description: String) -> Self { + MemberSpaceLimitsAddExceptionType { + description, + } } +} - pub fn with_legacy_uniq_id(mut self, value: String) -> Self { - self.legacy_uniq_id = Some(value); - self +const MEMBER_SPACE_LIMITS_ADD_EXCEPTION_TYPE_FIELDS: &[&str] = &["description"]; +impl MemberSpaceLimitsAddExceptionType { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) } -} -const LEGACY_DEVICE_SESSION_LOG_INFO_FIELDS: &[&str] = &["ip_address", - "created", - "updated", - "session_info", - "display_name", - "is_emm_managed", - "platform", - "mac_address", - "os_version", - "device_type", - "client_version", - "legacy_uniq_id"]; -impl LegacyDeviceSessionLogInfo { - // no _opt deserializer - pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - ) -> Result { - let mut field_ip_address = None; - let mut field_created = None; - let mut field_updated = None; - let mut field_session_info = None; - let mut field_display_name = None; - let mut field_is_emm_managed = None; - let mut field_platform = None; - let mut field_mac_address = None; - let mut field_os_version = None; - let mut field_device_type = None; - let mut field_client_version = None; - let mut field_legacy_uniq_id = None; + optional: bool, + ) -> Result, V::Error> { + let mut field_description = None; + let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { + nothing = false; match key { - "ip_address" => { - if field_ip_address.is_some() { - return Err(::serde::de::Error::duplicate_field("ip_address")); - } - field_ip_address = Some(map.next_value()?); - } - "created" => { - if field_created.is_some() { - return Err(::serde::de::Error::duplicate_field("created")); - } - field_created = Some(map.next_value()?); - } - "updated" => { - if field_updated.is_some() { - return Err(::serde::de::Error::duplicate_field("updated")); - } - field_updated = Some(map.next_value()?); - } - "session_info" => { - if field_session_info.is_some() { - return Err(::serde::de::Error::duplicate_field("session_info")); - } - field_session_info = Some(map.next_value()?); - } - "display_name" => { - if field_display_name.is_some() { - return Err(::serde::de::Error::duplicate_field("display_name")); - } - field_display_name = Some(map.next_value()?); - } - "is_emm_managed" => { - if field_is_emm_managed.is_some() { - return Err(::serde::de::Error::duplicate_field("is_emm_managed")); - } - field_is_emm_managed = Some(map.next_value()?); - } - "platform" => { - if field_platform.is_some() { - return Err(::serde::de::Error::duplicate_field("platform")); - } - field_platform = Some(map.next_value()?); - } - "mac_address" => { - if field_mac_address.is_some() { - return Err(::serde::de::Error::duplicate_field("mac_address")); - } - field_mac_address = Some(map.next_value()?); - } - "os_version" => { - if field_os_version.is_some() { - return Err(::serde::de::Error::duplicate_field("os_version")); - } - field_os_version = Some(map.next_value()?); - } - "device_type" => { - if field_device_type.is_some() { - return Err(::serde::de::Error::duplicate_field("device_type")); - } - field_device_type = Some(map.next_value()?); - } - "client_version" => { - if field_client_version.is_some() { - return Err(::serde::de::Error::duplicate_field("client_version")); - } - field_client_version = Some(map.next_value()?); - } - "legacy_uniq_id" => { - if field_legacy_uniq_id.is_some() { - return Err(::serde::de::Error::duplicate_field("legacy_uniq_id")); + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); } - field_legacy_uniq_id = Some(map.next_value()?); + field_description = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -56202,21 +77772,13 @@ impl LegacyDeviceSessionLogInfo { } } } - let result = LegacyDeviceSessionLogInfo { - ip_address: field_ip_address.and_then(Option::flatten), - created: field_created.and_then(Option::flatten), - updated: field_updated.and_then(Option::flatten), - session_info: field_session_info.and_then(Option::flatten), - display_name: field_display_name.and_then(Option::flatten), - is_emm_managed: field_is_emm_managed.and_then(Option::flatten), - platform: field_platform.and_then(Option::flatten), - mac_address: field_mac_address.and_then(Option::flatten), - os_version: field_os_version.and_then(Option::flatten), - device_type: field_device_type.and_then(Option::flatten), - client_version: field_client_version.and_then(Option::flatten), - legacy_uniq_id: field_legacy_uniq_id.and_then(Option::flatten), + if optional && nothing { + return Ok(None); + } + let result = MemberSpaceLimitsAddExceptionType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; - Ok(result) + Ok(Some(result)) } pub(crate) fn internal_serialize( @@ -56224,160 +77786,88 @@ impl LegacyDeviceSessionLogInfo { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - if let Some(val) = &self.ip_address { - s.serialize_field("ip_address", val)?; - } - if let Some(val) = &self.created { - s.serialize_field("created", val)?; - } - if let Some(val) = &self.updated { - s.serialize_field("updated", val)?; - } - if let Some(val) = &self.session_info { - s.serialize_field("session_info", val)?; - } - if let Some(val) = &self.display_name { - s.serialize_field("display_name", val)?; - } - if let Some(val) = &self.is_emm_managed { - s.serialize_field("is_emm_managed", val)?; - } - if let Some(val) = &self.platform { - s.serialize_field("platform", val)?; - } - if let Some(val) = &self.mac_address { - s.serialize_field("mac_address", val)?; - } - if let Some(val) = &self.os_version { - s.serialize_field("os_version", val)?; - } - if let Some(val) = &self.device_type { - s.serialize_field("device_type", val)?; - } - if let Some(val) = &self.client_version { - s.serialize_field("client_version", val)?; - } - if let Some(val) = &self.legacy_uniq_id { - s.serialize_field("legacy_uniq_id", val)?; - } + s.serialize_field("description", &self.description)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for LegacyDeviceSessionLogInfo { +impl<'de> ::serde::de::Deserialize<'de> for MemberSpaceLimitsAddExceptionType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = LegacyDeviceSessionLogInfo; + type Value = MemberSpaceLimitsAddExceptionType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a LegacyDeviceSessionLogInfo struct") + f.write_str("a MemberSpaceLimitsAddExceptionType struct") } fn visit_map>(self, map: V) -> Result { - LegacyDeviceSessionLogInfo::internal_deserialize(map) + MemberSpaceLimitsAddExceptionType::internal_deserialize(map) } } - deserializer.deserialize_struct("LegacyDeviceSessionLogInfo", LEGACY_DEVICE_SESSION_LOG_INFO_FIELDS, StructVisitor) + deserializer.deserialize_struct("MemberSpaceLimitsAddExceptionType", MEMBER_SPACE_LIMITS_ADD_EXCEPTION_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for LegacyDeviceSessionLogInfo { +impl ::serde::ser::Serialize for MemberSpaceLimitsAddExceptionType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("LegacyDeviceSessionLogInfo", 12)?; + let mut s = serializer.serialize_struct("MemberSpaceLimitsAddExceptionType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -// struct extends polymorphic struct DeviceSessionLogInfo -impl From for DeviceSessionLogInfo { - fn from(subtype: LegacyDeviceSessionLogInfo) -> Self { - DeviceSessionLogInfo::LegacyDeviceSession(subtype) - } -} -/// Activated a hold. +/// Changed member space limit type for team. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct LegalHoldsActivateAHoldDetails { - /// Hold ID. - pub legal_hold_id: String, - /// Hold name. - pub name: String, - /// Hold start date. - pub start_date: crate::types::common::DropboxTimestamp, - /// Hold end date. - pub end_date: Option, +pub struct MemberSpaceLimitsChangeCapsTypePolicyDetails { + /// Previous space limit type. + pub previous_value: SpaceCapsType, + /// New space limit type. + pub new_value: SpaceCapsType, } -impl LegalHoldsActivateAHoldDetails { - pub fn new( - legal_hold_id: String, - name: String, - start_date: crate::types::common::DropboxTimestamp, - ) -> Self { - LegalHoldsActivateAHoldDetails { - legal_hold_id, - name, - start_date, - end_date: None, +impl MemberSpaceLimitsChangeCapsTypePolicyDetails { + pub fn new(previous_value: SpaceCapsType, new_value: SpaceCapsType) -> Self { + MemberSpaceLimitsChangeCapsTypePolicyDetails { + previous_value, + new_value, } } - - pub fn with_end_date(mut self, value: crate::types::common::DropboxTimestamp) -> Self { - self.end_date = Some(value); - self - } } -const LEGAL_HOLDS_ACTIVATE_A_HOLD_DETAILS_FIELDS: &[&str] = &["legal_hold_id", - "name", - "start_date", - "end_date"]; -impl LegalHoldsActivateAHoldDetails { +const MEMBER_SPACE_LIMITS_CHANGE_CAPS_TYPE_POLICY_DETAILS_FIELDS: &[&str] = &["previous_value", + "new_value"]; +impl MemberSpaceLimitsChangeCapsTypePolicyDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_legal_hold_id = None; - let mut field_name = None; - let mut field_start_date = None; - let mut field_end_date = None; + ) -> Result, V::Error> { + let mut field_previous_value = None; + let mut field_new_value = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "legal_hold_id" => { - if field_legal_hold_id.is_some() { - return Err(::serde::de::Error::duplicate_field("legal_hold_id")); - } - field_legal_hold_id = Some(map.next_value()?); - } - "name" => { - if field_name.is_some() { - return Err(::serde::de::Error::duplicate_field("name")); - } - field_name = Some(map.next_value()?); - } - "start_date" => { - if field_start_date.is_some() { - return Err(::serde::de::Error::duplicate_field("start_date")); + "previous_value" => { + if field_previous_value.is_some() { + return Err(::serde::de::Error::duplicate_field("previous_value")); } - field_start_date = Some(map.next_value()?); + field_previous_value = Some(map.next_value()?); } - "end_date" => { - if field_end_date.is_some() { - return Err(::serde::de::Error::duplicate_field("end_date")); + "new_value" => { + if field_new_value.is_some() { + return Err(::serde::de::Error::duplicate_field("new_value")); } - field_end_date = Some(map.next_value()?); + field_new_value = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -56388,11 +77878,9 @@ impl LegalHoldsActivateAHoldDetails { if optional && nothing { return Ok(None); } - let result = LegalHoldsActivateAHoldDetails { - legal_hold_id: field_legal_hold_id.ok_or_else(|| ::serde::de::Error::missing_field("legal_hold_id"))?, - name: field_name.ok_or_else(|| ::serde::de::Error::missing_field("name"))?, - start_date: field_start_date.ok_or_else(|| ::serde::de::Error::missing_field("start_date"))?, - end_date: field_end_date.and_then(Option::flatten), + let result = MemberSpaceLimitsChangeCapsTypePolicyDetails { + previous_value: field_previous_value.ok_or_else(|| ::serde::de::Error::missing_field("previous_value"))?, + new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, }; Ok(Some(result)) } @@ -56402,39 +77890,35 @@ impl LegalHoldsActivateAHoldDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("legal_hold_id", &self.legal_hold_id)?; - s.serialize_field("name", &self.name)?; - s.serialize_field("start_date", &self.start_date)?; - if let Some(val) = &self.end_date { - s.serialize_field("end_date", val)?; - } + s.serialize_field("previous_value", &self.previous_value)?; + s.serialize_field("new_value", &self.new_value)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for LegalHoldsActivateAHoldDetails { +impl<'de> ::serde::de::Deserialize<'de> for MemberSpaceLimitsChangeCapsTypePolicyDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = LegalHoldsActivateAHoldDetails; + type Value = MemberSpaceLimitsChangeCapsTypePolicyDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a LegalHoldsActivateAHoldDetails struct") + f.write_str("a MemberSpaceLimitsChangeCapsTypePolicyDetails struct") } fn visit_map>(self, map: V) -> Result { - LegalHoldsActivateAHoldDetails::internal_deserialize(map) + MemberSpaceLimitsChangeCapsTypePolicyDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("LegalHoldsActivateAHoldDetails", LEGAL_HOLDS_ACTIVATE_A_HOLD_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("MemberSpaceLimitsChangeCapsTypePolicyDetails", MEMBER_SPACE_LIMITS_CHANGE_CAPS_TYPE_POLICY_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for LegalHoldsActivateAHoldDetails { +impl ::serde::ser::Serialize for MemberSpaceLimitsChangeCapsTypePolicyDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("LegalHoldsActivateAHoldDetails", 4)?; + let mut s = serializer.serialize_struct("MemberSpaceLimitsChangeCapsTypePolicyDetails", 2)?; self.internal_serialize::(&mut s)?; s.end() } @@ -56442,30 +77926,30 @@ impl ::serde::ser::Serialize for LegalHoldsActivateAHoldDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct LegalHoldsActivateAHoldType { +pub struct MemberSpaceLimitsChangeCapsTypePolicyType { pub description: String, } -impl LegalHoldsActivateAHoldType { +impl MemberSpaceLimitsChangeCapsTypePolicyType { pub fn new(description: String) -> Self { - LegalHoldsActivateAHoldType { + MemberSpaceLimitsChangeCapsTypePolicyType { description, } } } -const LEGAL_HOLDS_ACTIVATE_A_HOLD_TYPE_FIELDS: &[&str] = &["description"]; -impl LegalHoldsActivateAHoldType { +const MEMBER_SPACE_LIMITS_CHANGE_CAPS_TYPE_POLICY_TYPE_FIELDS: &[&str] = &["description"]; +impl MemberSpaceLimitsChangeCapsTypePolicyType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -56486,7 +77970,7 @@ impl LegalHoldsActivateAHoldType { if optional && nothing { return Ok(None); } - let result = LegalHoldsActivateAHoldType { + let result = MemberSpaceLimitsChangeCapsTypePolicyType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -56502,83 +77986,83 @@ impl LegalHoldsActivateAHoldType { } } -impl<'de> ::serde::de::Deserialize<'de> for LegalHoldsActivateAHoldType { +impl<'de> ::serde::de::Deserialize<'de> for MemberSpaceLimitsChangeCapsTypePolicyType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = LegalHoldsActivateAHoldType; + type Value = MemberSpaceLimitsChangeCapsTypePolicyType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a LegalHoldsActivateAHoldType struct") + f.write_str("a MemberSpaceLimitsChangeCapsTypePolicyType struct") } fn visit_map>(self, map: V) -> Result { - LegalHoldsActivateAHoldType::internal_deserialize(map) + MemberSpaceLimitsChangeCapsTypePolicyType::internal_deserialize(map) } } - deserializer.deserialize_struct("LegalHoldsActivateAHoldType", LEGAL_HOLDS_ACTIVATE_A_HOLD_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("MemberSpaceLimitsChangeCapsTypePolicyType", MEMBER_SPACE_LIMITS_CHANGE_CAPS_TYPE_POLICY_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for LegalHoldsActivateAHoldType { +impl ::serde::ser::Serialize for MemberSpaceLimitsChangeCapsTypePolicyType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("LegalHoldsActivateAHoldType", 1)?; + let mut s = serializer.serialize_struct("MemberSpaceLimitsChangeCapsTypePolicyType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Added members to a hold. +/// Changed custom member space limit. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct LegalHoldsAddMembersDetails { - /// Hold ID. - pub legal_hold_id: String, - /// Hold name. - pub name: String, +pub struct MemberSpaceLimitsChangeCustomQuotaDetails { + /// Previous custom quota value in bytes. + pub previous_value: u64, + /// New custom quota value in bytes. + pub new_value: u64, } -impl LegalHoldsAddMembersDetails { - pub fn new(legal_hold_id: String, name: String) -> Self { - LegalHoldsAddMembersDetails { - legal_hold_id, - name, +impl MemberSpaceLimitsChangeCustomQuotaDetails { + pub fn new(previous_value: u64, new_value: u64) -> Self { + MemberSpaceLimitsChangeCustomQuotaDetails { + previous_value, + new_value, } } } -const LEGAL_HOLDS_ADD_MEMBERS_DETAILS_FIELDS: &[&str] = &["legal_hold_id", - "name"]; -impl LegalHoldsAddMembersDetails { +const MEMBER_SPACE_LIMITS_CHANGE_CUSTOM_QUOTA_DETAILS_FIELDS: &[&str] = &["previous_value", + "new_value"]; +impl MemberSpaceLimitsChangeCustomQuotaDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_legal_hold_id = None; - let mut field_name = None; + ) -> Result, V::Error> { + let mut field_previous_value = None; + let mut field_new_value = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "legal_hold_id" => { - if field_legal_hold_id.is_some() { - return Err(::serde::de::Error::duplicate_field("legal_hold_id")); + "previous_value" => { + if field_previous_value.is_some() { + return Err(::serde::de::Error::duplicate_field("previous_value")); } - field_legal_hold_id = Some(map.next_value()?); + field_previous_value = Some(map.next_value()?); } - "name" => { - if field_name.is_some() { - return Err(::serde::de::Error::duplicate_field("name")); + "new_value" => { + if field_new_value.is_some() { + return Err(::serde::de::Error::duplicate_field("new_value")); } - field_name = Some(map.next_value()?); + field_new_value = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -56589,9 +78073,9 @@ impl LegalHoldsAddMembersDetails { if optional && nothing { return Ok(None); } - let result = LegalHoldsAddMembersDetails { - legal_hold_id: field_legal_hold_id.ok_or_else(|| ::serde::de::Error::missing_field("legal_hold_id"))?, - name: field_name.ok_or_else(|| ::serde::de::Error::missing_field("name"))?, + let result = MemberSpaceLimitsChangeCustomQuotaDetails { + previous_value: field_previous_value.ok_or_else(|| ::serde::de::Error::missing_field("previous_value"))?, + new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, }; Ok(Some(result)) } @@ -56601,35 +78085,35 @@ impl LegalHoldsAddMembersDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("legal_hold_id", &self.legal_hold_id)?; - s.serialize_field("name", &self.name)?; + s.serialize_field("previous_value", &self.previous_value)?; + s.serialize_field("new_value", &self.new_value)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for LegalHoldsAddMembersDetails { +impl<'de> ::serde::de::Deserialize<'de> for MemberSpaceLimitsChangeCustomQuotaDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = LegalHoldsAddMembersDetails; + type Value = MemberSpaceLimitsChangeCustomQuotaDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a LegalHoldsAddMembersDetails struct") + f.write_str("a MemberSpaceLimitsChangeCustomQuotaDetails struct") } fn visit_map>(self, map: V) -> Result { - LegalHoldsAddMembersDetails::internal_deserialize(map) + MemberSpaceLimitsChangeCustomQuotaDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("LegalHoldsAddMembersDetails", LEGAL_HOLDS_ADD_MEMBERS_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("MemberSpaceLimitsChangeCustomQuotaDetails", MEMBER_SPACE_LIMITS_CHANGE_CUSTOM_QUOTA_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for LegalHoldsAddMembersDetails { +impl ::serde::ser::Serialize for MemberSpaceLimitsChangeCustomQuotaDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("LegalHoldsAddMembersDetails", 2)?; + let mut s = serializer.serialize_struct("MemberSpaceLimitsChangeCustomQuotaDetails", 2)?; self.internal_serialize::(&mut s)?; s.end() } @@ -56637,30 +78121,30 @@ impl ::serde::ser::Serialize for LegalHoldsAddMembersDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct LegalHoldsAddMembersType { +pub struct MemberSpaceLimitsChangeCustomQuotaType { pub description: String, } -impl LegalHoldsAddMembersType { +impl MemberSpaceLimitsChangeCustomQuotaType { pub fn new(description: String) -> Self { - LegalHoldsAddMembersType { + MemberSpaceLimitsChangeCustomQuotaType { description, } } } -const LEGAL_HOLDS_ADD_MEMBERS_TYPE_FIELDS: &[&str] = &["description"]; -impl LegalHoldsAddMembersType { +const MEMBER_SPACE_LIMITS_CHANGE_CUSTOM_QUOTA_TYPE_FIELDS: &[&str] = &["description"]; +impl MemberSpaceLimitsChangeCustomQuotaType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -56681,7 +78165,7 @@ impl LegalHoldsAddMembersType { if optional && nothing { return Ok(None); } - let result = LegalHoldsAddMembersType { + let result = MemberSpaceLimitsChangeCustomQuotaType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -56697,99 +78181,67 @@ impl LegalHoldsAddMembersType { } } -impl<'de> ::serde::de::Deserialize<'de> for LegalHoldsAddMembersType { +impl<'de> ::serde::de::Deserialize<'de> for MemberSpaceLimitsChangeCustomQuotaType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = LegalHoldsAddMembersType; + type Value = MemberSpaceLimitsChangeCustomQuotaType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a LegalHoldsAddMembersType struct") + f.write_str("a MemberSpaceLimitsChangeCustomQuotaType struct") } fn visit_map>(self, map: V) -> Result { - LegalHoldsAddMembersType::internal_deserialize(map) + MemberSpaceLimitsChangeCustomQuotaType::internal_deserialize(map) } } - deserializer.deserialize_struct("LegalHoldsAddMembersType", LEGAL_HOLDS_ADD_MEMBERS_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("MemberSpaceLimitsChangeCustomQuotaType", MEMBER_SPACE_LIMITS_CHANGE_CUSTOM_QUOTA_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for LegalHoldsAddMembersType { +impl ::serde::ser::Serialize for MemberSpaceLimitsChangeCustomQuotaType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("LegalHoldsAddMembersType", 1)?; + let mut s = serializer.serialize_struct("MemberSpaceLimitsChangeCustomQuotaType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Edited details for a hold. -#[derive(Debug, Clone, PartialEq, Eq)] +/// Changed team default member space limit. +#[derive(Debug, Clone, PartialEq, Eq, Default)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct LegalHoldsChangeHoldDetailsDetails { - /// Hold ID. - pub legal_hold_id: String, - /// Hold name. - pub name: String, - /// Previous details. - pub previous_value: String, - /// New details. - pub new_value: String, +pub struct MemberSpaceLimitsChangePolicyDetails { + /// Previous team default limit value in bytes. Might be missing due to historical data gap. + pub previous_value: Option, + /// New team default limit value in bytes. Might be missing due to historical data gap. + pub new_value: Option, } -impl LegalHoldsChangeHoldDetailsDetails { - pub fn new( - legal_hold_id: String, - name: String, - previous_value: String, - new_value: String, - ) -> Self { - LegalHoldsChangeHoldDetailsDetails { - legal_hold_id, - name, - previous_value, - new_value, - } +impl MemberSpaceLimitsChangePolicyDetails { + pub fn with_previous_value(mut self, value: u64) -> Self { + self.previous_value = Some(value); + self } -} -const LEGAL_HOLDS_CHANGE_HOLD_DETAILS_DETAILS_FIELDS: &[&str] = &["legal_hold_id", - "name", - "previous_value", - "new_value"]; -impl LegalHoldsChangeHoldDetailsDetails { - pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( - map: V, - ) -> Result { - Self::internal_deserialize_opt(map, false).map(Option::unwrap) + pub fn with_new_value(mut self, value: u64) -> Self { + self.new_value = Some(value); + self } +} - pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( +const MEMBER_SPACE_LIMITS_CHANGE_POLICY_DETAILS_FIELDS: &[&str] = &["previous_value", + "new_value"]; +impl MemberSpaceLimitsChangePolicyDetails { + // no _opt deserializer + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - optional: bool, - ) -> Result, V::Error> { - let mut field_legal_hold_id = None; - let mut field_name = None; + ) -> Result { let mut field_previous_value = None; let mut field_new_value = None; - let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { - nothing = false; match key { - "legal_hold_id" => { - if field_legal_hold_id.is_some() { - return Err(::serde::de::Error::duplicate_field("legal_hold_id")); - } - field_legal_hold_id = Some(map.next_value()?); - } - "name" => { - if field_name.is_some() { - return Err(::serde::de::Error::duplicate_field("name")); - } - field_name = Some(map.next_value()?); - } "previous_value" => { if field_previous_value.is_some() { return Err(::serde::de::Error::duplicate_field("previous_value")); @@ -56808,16 +78260,11 @@ impl LegalHoldsChangeHoldDetailsDetails { } } } - if optional && nothing { - return Ok(None); - } - let result = LegalHoldsChangeHoldDetailsDetails { - legal_hold_id: field_legal_hold_id.ok_or_else(|| ::serde::de::Error::missing_field("legal_hold_id"))?, - name: field_name.ok_or_else(|| ::serde::de::Error::missing_field("name"))?, - previous_value: field_previous_value.ok_or_else(|| ::serde::de::Error::missing_field("previous_value"))?, - new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, + let result = MemberSpaceLimitsChangePolicyDetails { + previous_value: field_previous_value.and_then(Option::flatten), + new_value: field_new_value.and_then(Option::flatten), }; - Ok(Some(result)) + Ok(result) } pub(crate) fn internal_serialize( @@ -56825,37 +78272,39 @@ impl LegalHoldsChangeHoldDetailsDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("legal_hold_id", &self.legal_hold_id)?; - s.serialize_field("name", &self.name)?; - s.serialize_field("previous_value", &self.previous_value)?; - s.serialize_field("new_value", &self.new_value)?; + if let Some(val) = &self.previous_value { + s.serialize_field("previous_value", val)?; + } + if let Some(val) = &self.new_value { + s.serialize_field("new_value", val)?; + } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for LegalHoldsChangeHoldDetailsDetails { +impl<'de> ::serde::de::Deserialize<'de> for MemberSpaceLimitsChangePolicyDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = LegalHoldsChangeHoldDetailsDetails; + type Value = MemberSpaceLimitsChangePolicyDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a LegalHoldsChangeHoldDetailsDetails struct") + f.write_str("a MemberSpaceLimitsChangePolicyDetails struct") } fn visit_map>(self, map: V) -> Result { - LegalHoldsChangeHoldDetailsDetails::internal_deserialize(map) + MemberSpaceLimitsChangePolicyDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("LegalHoldsChangeHoldDetailsDetails", LEGAL_HOLDS_CHANGE_HOLD_DETAILS_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("MemberSpaceLimitsChangePolicyDetails", MEMBER_SPACE_LIMITS_CHANGE_POLICY_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for LegalHoldsChangeHoldDetailsDetails { +impl ::serde::ser::Serialize for MemberSpaceLimitsChangePolicyDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("LegalHoldsChangeHoldDetailsDetails", 4)?; + let mut s = serializer.serialize_struct("MemberSpaceLimitsChangePolicyDetails", 2)?; self.internal_serialize::(&mut s)?; s.end() } @@ -56863,30 +78312,30 @@ impl ::serde::ser::Serialize for LegalHoldsChangeHoldDetailsDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct LegalHoldsChangeHoldDetailsType { +pub struct MemberSpaceLimitsChangePolicyType { pub description: String, } -impl LegalHoldsChangeHoldDetailsType { +impl MemberSpaceLimitsChangePolicyType { pub fn new(description: String) -> Self { - LegalHoldsChangeHoldDetailsType { + MemberSpaceLimitsChangePolicyType { description, } } } -const LEGAL_HOLDS_CHANGE_HOLD_DETAILS_TYPE_FIELDS: &[&str] = &["description"]; -impl LegalHoldsChangeHoldDetailsType { +const MEMBER_SPACE_LIMITS_CHANGE_POLICY_TYPE_FIELDS: &[&str] = &["description"]; +impl MemberSpaceLimitsChangePolicyType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -56907,7 +78356,7 @@ impl LegalHoldsChangeHoldDetailsType { if optional && nothing { return Ok(None); } - let result = LegalHoldsChangeHoldDetailsType { + let result = MemberSpaceLimitsChangePolicyType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -56923,83 +78372,72 @@ impl LegalHoldsChangeHoldDetailsType { } } -impl<'de> ::serde::de::Deserialize<'de> for LegalHoldsChangeHoldDetailsType { +impl<'de> ::serde::de::Deserialize<'de> for MemberSpaceLimitsChangePolicyType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = LegalHoldsChangeHoldDetailsType; + type Value = MemberSpaceLimitsChangePolicyType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a LegalHoldsChangeHoldDetailsType struct") + f.write_str("a MemberSpaceLimitsChangePolicyType struct") } fn visit_map>(self, map: V) -> Result { - LegalHoldsChangeHoldDetailsType::internal_deserialize(map) + MemberSpaceLimitsChangePolicyType::internal_deserialize(map) } } - deserializer.deserialize_struct("LegalHoldsChangeHoldDetailsType", LEGAL_HOLDS_CHANGE_HOLD_DETAILS_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("MemberSpaceLimitsChangePolicyType", MEMBER_SPACE_LIMITS_CHANGE_POLICY_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for LegalHoldsChangeHoldDetailsType { +impl ::serde::ser::Serialize for MemberSpaceLimitsChangePolicyType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("LegalHoldsChangeHoldDetailsType", 1)?; + let mut s = serializer.serialize_struct("MemberSpaceLimitsChangePolicyType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Renamed a hold. +/// Changed space limit status. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct LegalHoldsChangeHoldNameDetails { - /// Hold ID. - pub legal_hold_id: String, - /// Previous Name. - pub previous_value: String, - /// New Name. - pub new_value: String, +pub struct MemberSpaceLimitsChangeStatusDetails { + /// Previous storage quota status. + pub previous_value: SpaceLimitsStatus, + /// New storage quota status. + pub new_value: SpaceLimitsStatus, } -impl LegalHoldsChangeHoldNameDetails { - pub fn new(legal_hold_id: String, previous_value: String, new_value: String) -> Self { - LegalHoldsChangeHoldNameDetails { - legal_hold_id, +impl MemberSpaceLimitsChangeStatusDetails { + pub fn new(previous_value: SpaceLimitsStatus, new_value: SpaceLimitsStatus) -> Self { + MemberSpaceLimitsChangeStatusDetails { previous_value, new_value, } } } -const LEGAL_HOLDS_CHANGE_HOLD_NAME_DETAILS_FIELDS: &[&str] = &["legal_hold_id", - "previous_value", - "new_value"]; -impl LegalHoldsChangeHoldNameDetails { +const MEMBER_SPACE_LIMITS_CHANGE_STATUS_DETAILS_FIELDS: &[&str] = &["previous_value", + "new_value"]; +impl MemberSpaceLimitsChangeStatusDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_legal_hold_id = None; + ) -> Result, V::Error> { let mut field_previous_value = None; let mut field_new_value = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "legal_hold_id" => { - if field_legal_hold_id.is_some() { - return Err(::serde::de::Error::duplicate_field("legal_hold_id")); - } - field_legal_hold_id = Some(map.next_value()?); - } "previous_value" => { if field_previous_value.is_some() { return Err(::serde::de::Error::duplicate_field("previous_value")); @@ -57021,8 +78459,7 @@ impl LegalHoldsChangeHoldNameDetails { if optional && nothing { return Ok(None); } - let result = LegalHoldsChangeHoldNameDetails { - legal_hold_id: field_legal_hold_id.ok_or_else(|| ::serde::de::Error::missing_field("legal_hold_id"))?, + let result = MemberSpaceLimitsChangeStatusDetails { previous_value: field_previous_value.ok_or_else(|| ::serde::de::Error::missing_field("previous_value"))?, new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, }; @@ -57034,36 +78471,35 @@ impl LegalHoldsChangeHoldNameDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("legal_hold_id", &self.legal_hold_id)?; s.serialize_field("previous_value", &self.previous_value)?; s.serialize_field("new_value", &self.new_value)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for LegalHoldsChangeHoldNameDetails { +impl<'de> ::serde::de::Deserialize<'de> for MemberSpaceLimitsChangeStatusDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = LegalHoldsChangeHoldNameDetails; + type Value = MemberSpaceLimitsChangeStatusDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a LegalHoldsChangeHoldNameDetails struct") + f.write_str("a MemberSpaceLimitsChangeStatusDetails struct") } fn visit_map>(self, map: V) -> Result { - LegalHoldsChangeHoldNameDetails::internal_deserialize(map) + MemberSpaceLimitsChangeStatusDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("LegalHoldsChangeHoldNameDetails", LEGAL_HOLDS_CHANGE_HOLD_NAME_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("MemberSpaceLimitsChangeStatusDetails", MEMBER_SPACE_LIMITS_CHANGE_STATUS_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for LegalHoldsChangeHoldNameDetails { +impl ::serde::ser::Serialize for MemberSpaceLimitsChangeStatusDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("LegalHoldsChangeHoldNameDetails", 3)?; + let mut s = serializer.serialize_struct("MemberSpaceLimitsChangeStatusDetails", 2)?; self.internal_serialize::(&mut s)?; s.end() } @@ -57071,30 +78507,30 @@ impl ::serde::ser::Serialize for LegalHoldsChangeHoldNameDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct LegalHoldsChangeHoldNameType { +pub struct MemberSpaceLimitsChangeStatusType { pub description: String, } -impl LegalHoldsChangeHoldNameType { +impl MemberSpaceLimitsChangeStatusType { pub fn new(description: String) -> Self { - LegalHoldsChangeHoldNameType { + MemberSpaceLimitsChangeStatusType { description, } } } -const LEGAL_HOLDS_CHANGE_HOLD_NAME_TYPE_FIELDS: &[&str] = &["description"]; -impl LegalHoldsChangeHoldNameType { +const MEMBER_SPACE_LIMITS_CHANGE_STATUS_TYPE_FIELDS: &[&str] = &["description"]; +impl MemberSpaceLimitsChangeStatusType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -57115,7 +78551,7 @@ impl LegalHoldsChangeHoldNameType { if optional && nothing { return Ok(None); } - let result = LegalHoldsChangeHoldNameType { + let result = MemberSpaceLimitsChangeStatusType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -57131,99 +78567,114 @@ impl LegalHoldsChangeHoldNameType { } } -impl<'de> ::serde::de::Deserialize<'de> for LegalHoldsChangeHoldNameType { +impl<'de> ::serde::de::Deserialize<'de> for MemberSpaceLimitsChangeStatusType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = LegalHoldsChangeHoldNameType; + type Value = MemberSpaceLimitsChangeStatusType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a LegalHoldsChangeHoldNameType struct") + f.write_str("a MemberSpaceLimitsChangeStatusType struct") } fn visit_map>(self, map: V) -> Result { - LegalHoldsChangeHoldNameType::internal_deserialize(map) + MemberSpaceLimitsChangeStatusType::internal_deserialize(map) } } - deserializer.deserialize_struct("LegalHoldsChangeHoldNameType", LEGAL_HOLDS_CHANGE_HOLD_NAME_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("MemberSpaceLimitsChangeStatusType", MEMBER_SPACE_LIMITS_CHANGE_STATUS_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for LegalHoldsChangeHoldNameType { +impl ::serde::ser::Serialize for MemberSpaceLimitsChangeStatusType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("LegalHoldsChangeHoldNameType", 1)?; + let mut s = serializer.serialize_struct("MemberSpaceLimitsChangeStatusType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Exported hold. -#[derive(Debug, Clone, PartialEq, Eq)] +/// Removed custom member space limit. +#[derive(Debug, Clone, PartialEq, Eq, Default)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct LegalHoldsExportAHoldDetails { - /// Hold ID. - pub legal_hold_id: String, - /// Hold name. - pub name: String, - /// Export name. - pub export_name: Option, +pub struct MemberSpaceLimitsRemoveCustomQuotaDetails { } -impl LegalHoldsExportAHoldDetails { - pub fn new(legal_hold_id: String, name: String) -> Self { - LegalHoldsExportAHoldDetails { - legal_hold_id, - name, - export_name: None, +const MEMBER_SPACE_LIMITS_REMOVE_CUSTOM_QUOTA_DETAILS_FIELDS: &[&str] = &[]; +impl MemberSpaceLimitsRemoveCustomQuotaDetails { + // no _opt deserializer + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + ) -> Result { + // ignore any fields found; none are presently recognized + crate::eat_json_fields(&mut map)?; + Ok(MemberSpaceLimitsRemoveCustomQuotaDetails {}) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for MemberSpaceLimitsRemoveCustomQuotaDetails { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = MemberSpaceLimitsRemoveCustomQuotaDetails; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a MemberSpaceLimitsRemoveCustomQuotaDetails struct") + } + fn visit_map>(self, map: V) -> Result { + MemberSpaceLimitsRemoveCustomQuotaDetails::internal_deserialize(map) + } } + deserializer.deserialize_struct("MemberSpaceLimitsRemoveCustomQuotaDetails", MEMBER_SPACE_LIMITS_REMOVE_CUSTOM_QUOTA_DETAILS_FIELDS, StructVisitor) } +} - pub fn with_export_name(mut self, value: String) -> Self { - self.export_name = Some(value); - self +impl ::serde::ser::Serialize for MemberSpaceLimitsRemoveCustomQuotaDetails { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + serializer.serialize_struct("MemberSpaceLimitsRemoveCustomQuotaDetails", 0)?.end() } } -const LEGAL_HOLDS_EXPORT_A_HOLD_DETAILS_FIELDS: &[&str] = &["legal_hold_id", - "name", - "export_name"]; -impl LegalHoldsExportAHoldDetails { +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct MemberSpaceLimitsRemoveCustomQuotaType { + pub description: String, +} + +impl MemberSpaceLimitsRemoveCustomQuotaType { + pub fn new(description: String) -> Self { + MemberSpaceLimitsRemoveCustomQuotaType { + description, + } + } +} + +const MEMBER_SPACE_LIMITS_REMOVE_CUSTOM_QUOTA_TYPE_FIELDS: &[&str] = &["description"]; +impl MemberSpaceLimitsRemoveCustomQuotaType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_legal_hold_id = None; - let mut field_name = None; - let mut field_export_name = None; + ) -> Result, V::Error> { + let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "legal_hold_id" => { - if field_legal_hold_id.is_some() { - return Err(::serde::de::Error::duplicate_field("legal_hold_id")); - } - field_legal_hold_id = Some(map.next_value()?); - } - "name" => { - if field_name.is_some() { - return Err(::serde::de::Error::duplicate_field("name")); - } - field_name = Some(map.next_value()?); - } - "export_name" => { - if field_export_name.is_some() { - return Err(::serde::de::Error::duplicate_field("export_name")); + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); } - field_export_name = Some(map.next_value()?); + field_description = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -57234,10 +78685,8 @@ impl LegalHoldsExportAHoldDetails { if optional && nothing { return Ok(None); } - let result = LegalHoldsExportAHoldDetails { - legal_hold_id: field_legal_hold_id.ok_or_else(|| ::serde::de::Error::missing_field("legal_hold_id"))?, - name: field_name.ok_or_else(|| ::serde::de::Error::missing_field("name"))?, - export_name: field_export_name.and_then(Option::flatten), + let result = MemberSpaceLimitsRemoveCustomQuotaType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) } @@ -57247,69 +78696,109 @@ impl LegalHoldsExportAHoldDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("legal_hold_id", &self.legal_hold_id)?; - s.serialize_field("name", &self.name)?; - if let Some(val) = &self.export_name { - s.serialize_field("export_name", val)?; - } + s.serialize_field("description", &self.description)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for LegalHoldsExportAHoldDetails { +impl<'de> ::serde::de::Deserialize<'de> for MemberSpaceLimitsRemoveCustomQuotaType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = LegalHoldsExportAHoldDetails; + type Value = MemberSpaceLimitsRemoveCustomQuotaType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a LegalHoldsExportAHoldDetails struct") + f.write_str("a MemberSpaceLimitsRemoveCustomQuotaType struct") } fn visit_map>(self, map: V) -> Result { - LegalHoldsExportAHoldDetails::internal_deserialize(map) + MemberSpaceLimitsRemoveCustomQuotaType::internal_deserialize(map) } } - deserializer.deserialize_struct("LegalHoldsExportAHoldDetails", LEGAL_HOLDS_EXPORT_A_HOLD_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("MemberSpaceLimitsRemoveCustomQuotaType", MEMBER_SPACE_LIMITS_REMOVE_CUSTOM_QUOTA_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for LegalHoldsExportAHoldDetails { +impl ::serde::ser::Serialize for MemberSpaceLimitsRemoveCustomQuotaType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("LegalHoldsExportAHoldDetails", 3)?; + let mut s = serializer.serialize_struct("MemberSpaceLimitsRemoveCustomQuotaType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } +/// Removed members from member space limit exception list. +#[derive(Debug, Clone, PartialEq, Eq, Default)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct MemberSpaceLimitsRemoveExceptionDetails { +} + +const MEMBER_SPACE_LIMITS_REMOVE_EXCEPTION_DETAILS_FIELDS: &[&str] = &[]; +impl MemberSpaceLimitsRemoveExceptionDetails { + // no _opt deserializer + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + ) -> Result { + // ignore any fields found; none are presently recognized + crate::eat_json_fields(&mut map)?; + Ok(MemberSpaceLimitsRemoveExceptionDetails {}) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for MemberSpaceLimitsRemoveExceptionDetails { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = MemberSpaceLimitsRemoveExceptionDetails; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a MemberSpaceLimitsRemoveExceptionDetails struct") + } + fn visit_map>(self, map: V) -> Result { + MemberSpaceLimitsRemoveExceptionDetails::internal_deserialize(map) + } + } + deserializer.deserialize_struct("MemberSpaceLimitsRemoveExceptionDetails", MEMBER_SPACE_LIMITS_REMOVE_EXCEPTION_DETAILS_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for MemberSpaceLimitsRemoveExceptionDetails { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + serializer.serialize_struct("MemberSpaceLimitsRemoveExceptionDetails", 0)?.end() + } +} + #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct LegalHoldsExportAHoldType { +pub struct MemberSpaceLimitsRemoveExceptionType { pub description: String, } -impl LegalHoldsExportAHoldType { +impl MemberSpaceLimitsRemoveExceptionType { pub fn new(description: String) -> Self { - LegalHoldsExportAHoldType { + MemberSpaceLimitsRemoveExceptionType { description, } } } -const LEGAL_HOLDS_EXPORT_A_HOLD_TYPE_FIELDS: &[&str] = &["description"]; -impl LegalHoldsExportAHoldType { +const MEMBER_SPACE_LIMITS_REMOVE_EXCEPTION_TYPE_FIELDS: &[&str] = &["description"]; +impl MemberSpaceLimitsRemoveExceptionType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -57330,7 +78819,7 @@ impl LegalHoldsExportAHoldType { if optional && nothing { return Ok(None); } - let result = LegalHoldsExportAHoldType { + let result = MemberSpaceLimitsRemoveExceptionType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -57346,94 +78835,171 @@ impl LegalHoldsExportAHoldType { } } -impl<'de> ::serde::de::Deserialize<'de> for LegalHoldsExportAHoldType { +impl<'de> ::serde::de::Deserialize<'de> for MemberSpaceLimitsRemoveExceptionType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = LegalHoldsExportAHoldType; + type Value = MemberSpaceLimitsRemoveExceptionType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a LegalHoldsExportAHoldType struct") + f.write_str("a MemberSpaceLimitsRemoveExceptionType struct") } fn visit_map>(self, map: V) -> Result { - LegalHoldsExportAHoldType::internal_deserialize(map) + MemberSpaceLimitsRemoveExceptionType::internal_deserialize(map) } } - deserializer.deserialize_struct("LegalHoldsExportAHoldType", LEGAL_HOLDS_EXPORT_A_HOLD_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("MemberSpaceLimitsRemoveExceptionType", MEMBER_SPACE_LIMITS_REMOVE_EXCEPTION_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for LegalHoldsExportAHoldType { +impl ::serde::ser::Serialize for MemberSpaceLimitsRemoveExceptionType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("LegalHoldsExportAHoldType", 1)?; + let mut s = serializer.serialize_struct("MemberSpaceLimitsRemoveExceptionType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Canceled export for a hold. +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // variants may be added in the future +pub enum MemberStatus { + Active, + Invited, + MovedToAnotherTeam, + NotJoined, + Removed, + Suspended, + /// Catch-all used for unrecognized values returned from the server. Encountering this value + /// typically indicates that this SDK version is out of date. + Other, +} + +impl<'de> ::serde::de::Deserialize<'de> for MemberStatus { + fn deserialize>(deserializer: D) -> Result { + // union deserializer + use serde::de::{self, MapAccess, Visitor}; + struct EnumVisitor; + impl<'de> Visitor<'de> for EnumVisitor { + type Value = MemberStatus; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a MemberStatus structure") + } + fn visit_map>(self, mut map: V) -> Result { + let tag: &str = match map.next_key()? { + Some(".tag") => map.next_value()?, + _ => return Err(de::Error::missing_field(".tag")) + }; + let value = match tag { + "active" => MemberStatus::Active, + "invited" => MemberStatus::Invited, + "moved_to_another_team" => MemberStatus::MovedToAnotherTeam, + "not_joined" => MemberStatus::NotJoined, + "removed" => MemberStatus::Removed, + "suspended" => MemberStatus::Suspended, + _ => MemberStatus::Other, + }; + crate::eat_json_fields(&mut map)?; + Ok(value) + } + } + const VARIANTS: &[&str] = &["active", + "invited", + "moved_to_another_team", + "not_joined", + "removed", + "suspended", + "other"]; + deserializer.deserialize_struct("MemberStatus", VARIANTS, EnumVisitor) + } +} + +impl ::serde::ser::Serialize for MemberStatus { + fn serialize(&self, serializer: S) -> Result { + // union serializer + use serde::ser::SerializeStruct; + match self { + MemberStatus::Active => { + // unit + let mut s = serializer.serialize_struct("MemberStatus", 1)?; + s.serialize_field(".tag", "active")?; + s.end() + } + MemberStatus::Invited => { + // unit + let mut s = serializer.serialize_struct("MemberStatus", 1)?; + s.serialize_field(".tag", "invited")?; + s.end() + } + MemberStatus::MovedToAnotherTeam => { + // unit + let mut s = serializer.serialize_struct("MemberStatus", 1)?; + s.serialize_field(".tag", "moved_to_another_team")?; + s.end() + } + MemberStatus::NotJoined => { + // unit + let mut s = serializer.serialize_struct("MemberStatus", 1)?; + s.serialize_field(".tag", "not_joined")?; + s.end() + } + MemberStatus::Removed => { + // unit + let mut s = serializer.serialize_struct("MemberStatus", 1)?; + s.serialize_field(".tag", "removed")?; + s.end() + } + MemberStatus::Suspended => { + // unit + let mut s = serializer.serialize_struct("MemberStatus", 1)?; + s.serialize_field(".tag", "suspended")?; + s.end() + } + MemberStatus::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) + } + } +} + +/// Suggested person to add to team. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct LegalHoldsExportCancelledDetails { - /// Hold ID. - pub legal_hold_id: String, - /// Hold name. - pub name: String, - /// Export name. - pub export_name: String, +pub struct MemberSuggestDetails { + /// suggested users emails. + pub suggested_members: Vec, } -impl LegalHoldsExportCancelledDetails { - pub fn new(legal_hold_id: String, name: String, export_name: String) -> Self { - LegalHoldsExportCancelledDetails { - legal_hold_id, - name, - export_name, +impl MemberSuggestDetails { + pub fn new(suggested_members: Vec) -> Self { + MemberSuggestDetails { + suggested_members, } } } -const LEGAL_HOLDS_EXPORT_CANCELLED_DETAILS_FIELDS: &[&str] = &["legal_hold_id", - "name", - "export_name"]; -impl LegalHoldsExportCancelledDetails { +const MEMBER_SUGGEST_DETAILS_FIELDS: &[&str] = &["suggested_members"]; +impl MemberSuggestDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_legal_hold_id = None; - let mut field_name = None; - let mut field_export_name = None; + ) -> Result, V::Error> { + let mut field_suggested_members = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "legal_hold_id" => { - if field_legal_hold_id.is_some() { - return Err(::serde::de::Error::duplicate_field("legal_hold_id")); - } - field_legal_hold_id = Some(map.next_value()?); - } - "name" => { - if field_name.is_some() { - return Err(::serde::de::Error::duplicate_field("name")); - } - field_name = Some(map.next_value()?); - } - "export_name" => { - if field_export_name.is_some() { - return Err(::serde::de::Error::duplicate_field("export_name")); + "suggested_members" => { + if field_suggested_members.is_some() { + return Err(::serde::de::Error::duplicate_field("suggested_members")); } - field_export_name = Some(map.next_value()?); + field_suggested_members = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -57444,10 +79010,8 @@ impl LegalHoldsExportCancelledDetails { if optional && nothing { return Ok(None); } - let result = LegalHoldsExportCancelledDetails { - legal_hold_id: field_legal_hold_id.ok_or_else(|| ::serde::de::Error::missing_field("legal_hold_id"))?, - name: field_name.ok_or_else(|| ::serde::de::Error::missing_field("name"))?, - export_name: field_export_name.ok_or_else(|| ::serde::de::Error::missing_field("export_name"))?, + let result = MemberSuggestDetails { + suggested_members: field_suggested_members.ok_or_else(|| ::serde::de::Error::missing_field("suggested_members"))?, }; Ok(Some(result)) } @@ -57457,36 +79021,34 @@ impl LegalHoldsExportCancelledDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("legal_hold_id", &self.legal_hold_id)?; - s.serialize_field("name", &self.name)?; - s.serialize_field("export_name", &self.export_name)?; + s.serialize_field("suggested_members", &self.suggested_members)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for LegalHoldsExportCancelledDetails { +impl<'de> ::serde::de::Deserialize<'de> for MemberSuggestDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = LegalHoldsExportCancelledDetails; + type Value = MemberSuggestDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a LegalHoldsExportCancelledDetails struct") + f.write_str("a MemberSuggestDetails struct") } fn visit_map>(self, map: V) -> Result { - LegalHoldsExportCancelledDetails::internal_deserialize(map) + MemberSuggestDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("LegalHoldsExportCancelledDetails", LEGAL_HOLDS_EXPORT_CANCELLED_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("MemberSuggestDetails", MEMBER_SUGGEST_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for LegalHoldsExportCancelledDetails { +impl ::serde::ser::Serialize for MemberSuggestDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("LegalHoldsExportCancelledDetails", 3)?; + let mut s = serializer.serialize_struct("MemberSuggestDetails", 1)?; self.internal_serialize::(&mut s)?; s.end() } @@ -57494,30 +79056,30 @@ impl ::serde::ser::Serialize for LegalHoldsExportCancelledDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct LegalHoldsExportCancelledType { +pub struct MemberSuggestType { pub description: String, } -impl LegalHoldsExportCancelledType { +impl MemberSuggestType { pub fn new(description: String) -> Self { - LegalHoldsExportCancelledType { + MemberSuggestType { description, } } } -const LEGAL_HOLDS_EXPORT_CANCELLED_TYPE_FIELDS: &[&str] = &["description"]; -impl LegalHoldsExportCancelledType { +const MEMBER_SUGGEST_TYPE_FIELDS: &[&str] = &["description"]; +impl MemberSuggestType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -57538,7 +79100,7 @@ impl LegalHoldsExportCancelledType { if optional && nothing { return Ok(None); } - let result = LegalHoldsExportCancelledType { + let result = MemberSuggestType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -57554,126 +79116,88 @@ impl LegalHoldsExportCancelledType { } } -impl<'de> ::serde::de::Deserialize<'de> for LegalHoldsExportCancelledType { +impl<'de> ::serde::de::Deserialize<'de> for MemberSuggestType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = LegalHoldsExportCancelledType; + type Value = MemberSuggestType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a LegalHoldsExportCancelledType struct") + f.write_str("a MemberSuggestType struct") } fn visit_map>(self, map: V) -> Result { - LegalHoldsExportCancelledType::internal_deserialize(map) + MemberSuggestType::internal_deserialize(map) } } - deserializer.deserialize_struct("LegalHoldsExportCancelledType", LEGAL_HOLDS_EXPORT_CANCELLED_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("MemberSuggestType", MEMBER_SUGGEST_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for LegalHoldsExportCancelledType { +impl ::serde::ser::Serialize for MemberSuggestType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("LegalHoldsExportCancelledType", 1)?; + let mut s = serializer.serialize_struct("MemberSuggestType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Downloaded export for a hold. +/// Enabled/disabled option for team members to suggest people to add to team. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct LegalHoldsExportDownloadedDetails { - /// Hold ID. - pub legal_hold_id: String, - /// Hold name. - pub name: String, - /// Export name. - pub export_name: String, - /// Part. - pub part: Option, - /// Filename. - pub file_name: Option, +pub struct MemberSuggestionsChangePolicyDetails { + /// New team member suggestions policy. + pub new_value: MemberSuggestionsPolicy, + /// Previous team member suggestions policy. Might be missing due to historical data gap. + pub previous_value: Option, } -impl LegalHoldsExportDownloadedDetails { - pub fn new(legal_hold_id: String, name: String, export_name: String) -> Self { - LegalHoldsExportDownloadedDetails { - legal_hold_id, - name, - export_name, - part: None, - file_name: None, +impl MemberSuggestionsChangePolicyDetails { + pub fn new(new_value: MemberSuggestionsPolicy) -> Self { + MemberSuggestionsChangePolicyDetails { + new_value, + previous_value: None, } } - pub fn with_part(mut self, value: String) -> Self { - self.part = Some(value); - self - } - - pub fn with_file_name(mut self, value: String) -> Self { - self.file_name = Some(value); + pub fn with_previous_value(mut self, value: MemberSuggestionsPolicy) -> Self { + self.previous_value = Some(value); self } } -const LEGAL_HOLDS_EXPORT_DOWNLOADED_DETAILS_FIELDS: &[&str] = &["legal_hold_id", - "name", - "export_name", - "part", - "file_name"]; -impl LegalHoldsExportDownloadedDetails { +const MEMBER_SUGGESTIONS_CHANGE_POLICY_DETAILS_FIELDS: &[&str] = &["new_value", + "previous_value"]; +impl MemberSuggestionsChangePolicyDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_legal_hold_id = None; - let mut field_name = None; - let mut field_export_name = None; - let mut field_part = None; - let mut field_file_name = None; + ) -> Result, V::Error> { + let mut field_new_value = None; + let mut field_previous_value = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "legal_hold_id" => { - if field_legal_hold_id.is_some() { - return Err(::serde::de::Error::duplicate_field("legal_hold_id")); - } - field_legal_hold_id = Some(map.next_value()?); - } - "name" => { - if field_name.is_some() { - return Err(::serde::de::Error::duplicate_field("name")); - } - field_name = Some(map.next_value()?); - } - "export_name" => { - if field_export_name.is_some() { - return Err(::serde::de::Error::duplicate_field("export_name")); - } - field_export_name = Some(map.next_value()?); - } - "part" => { - if field_part.is_some() { - return Err(::serde::de::Error::duplicate_field("part")); + "new_value" => { + if field_new_value.is_some() { + return Err(::serde::de::Error::duplicate_field("new_value")); } - field_part = Some(map.next_value()?); + field_new_value = Some(map.next_value()?); } - "file_name" => { - if field_file_name.is_some() { - return Err(::serde::de::Error::duplicate_field("file_name")); + "previous_value" => { + if field_previous_value.is_some() { + return Err(::serde::de::Error::duplicate_field("previous_value")); } - field_file_name = Some(map.next_value()?); + field_previous_value = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -57684,12 +79208,9 @@ impl LegalHoldsExportDownloadedDetails { if optional && nothing { return Ok(None); } - let result = LegalHoldsExportDownloadedDetails { - legal_hold_id: field_legal_hold_id.ok_or_else(|| ::serde::de::Error::missing_field("legal_hold_id"))?, - name: field_name.ok_or_else(|| ::serde::de::Error::missing_field("name"))?, - export_name: field_export_name.ok_or_else(|| ::serde::de::Error::missing_field("export_name"))?, - part: field_part.and_then(Option::flatten), - file_name: field_file_name.and_then(Option::flatten), + let result = MemberSuggestionsChangePolicyDetails { + new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, + previous_value: field_previous_value.and_then(Option::flatten), }; Ok(Some(result)) } @@ -57699,42 +79220,37 @@ impl LegalHoldsExportDownloadedDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("legal_hold_id", &self.legal_hold_id)?; - s.serialize_field("name", &self.name)?; - s.serialize_field("export_name", &self.export_name)?; - if let Some(val) = &self.part { - s.serialize_field("part", val)?; - } - if let Some(val) = &self.file_name { - s.serialize_field("file_name", val)?; + s.serialize_field("new_value", &self.new_value)?; + if let Some(val) = &self.previous_value { + s.serialize_field("previous_value", val)?; } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for LegalHoldsExportDownloadedDetails { +impl<'de> ::serde::de::Deserialize<'de> for MemberSuggestionsChangePolicyDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = LegalHoldsExportDownloadedDetails; + type Value = MemberSuggestionsChangePolicyDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a LegalHoldsExportDownloadedDetails struct") + f.write_str("a MemberSuggestionsChangePolicyDetails struct") } fn visit_map>(self, map: V) -> Result { - LegalHoldsExportDownloadedDetails::internal_deserialize(map) + MemberSuggestionsChangePolicyDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("LegalHoldsExportDownloadedDetails", LEGAL_HOLDS_EXPORT_DOWNLOADED_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("MemberSuggestionsChangePolicyDetails", MEMBER_SUGGESTIONS_CHANGE_POLICY_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for LegalHoldsExportDownloadedDetails { +impl ::serde::ser::Serialize for MemberSuggestionsChangePolicyDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("LegalHoldsExportDownloadedDetails", 5)?; + let mut s = serializer.serialize_struct("MemberSuggestionsChangePolicyDetails", 2)?; self.internal_serialize::(&mut s)?; s.end() } @@ -57742,30 +79258,30 @@ impl ::serde::ser::Serialize for LegalHoldsExportDownloadedDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct LegalHoldsExportDownloadedType { +pub struct MemberSuggestionsChangePolicyType { pub description: String, } -impl LegalHoldsExportDownloadedType { +impl MemberSuggestionsChangePolicyType { pub fn new(description: String) -> Self { - LegalHoldsExportDownloadedType { + MemberSuggestionsChangePolicyType { description, } } } -const LEGAL_HOLDS_EXPORT_DOWNLOADED_TYPE_FIELDS: &[&str] = &["description"]; -impl LegalHoldsExportDownloadedType { +const MEMBER_SUGGESTIONS_CHANGE_POLICY_TYPE_FIELDS: &[&str] = &["description"]; +impl MemberSuggestionsChangePolicyType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -57786,7 +79302,7 @@ impl LegalHoldsExportDownloadedType { if optional && nothing { return Ok(None); } - let result = LegalHoldsExportDownloadedType { + let result = MemberSuggestionsChangePolicyType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -57802,94 +79318,178 @@ impl LegalHoldsExportDownloadedType { } } -impl<'de> ::serde::de::Deserialize<'de> for LegalHoldsExportDownloadedType { +impl<'de> ::serde::de::Deserialize<'de> for MemberSuggestionsChangePolicyType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = LegalHoldsExportDownloadedType; + type Value = MemberSuggestionsChangePolicyType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a LegalHoldsExportDownloadedType struct") + f.write_str("a MemberSuggestionsChangePolicyType struct") } fn visit_map>(self, map: V) -> Result { - LegalHoldsExportDownloadedType::internal_deserialize(map) + MemberSuggestionsChangePolicyType::internal_deserialize(map) } } - deserializer.deserialize_struct("LegalHoldsExportDownloadedType", LEGAL_HOLDS_EXPORT_DOWNLOADED_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("MemberSuggestionsChangePolicyType", MEMBER_SUGGESTIONS_CHANGE_POLICY_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for LegalHoldsExportDownloadedType { +impl ::serde::ser::Serialize for MemberSuggestionsChangePolicyType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("LegalHoldsExportDownloadedType", 1)?; + let mut s = serializer.serialize_struct("MemberSuggestionsChangePolicyType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Removed export for a hold. +/// Member suggestions policy +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // variants may be added in the future +pub enum MemberSuggestionsPolicy { + Disabled, + Enabled, + /// Catch-all used for unrecognized values returned from the server. Encountering this value + /// typically indicates that this SDK version is out of date. + Other, +} + +impl<'de> ::serde::de::Deserialize<'de> for MemberSuggestionsPolicy { + fn deserialize>(deserializer: D) -> Result { + // union deserializer + use serde::de::{self, MapAccess, Visitor}; + struct EnumVisitor; + impl<'de> Visitor<'de> for EnumVisitor { + type Value = MemberSuggestionsPolicy; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a MemberSuggestionsPolicy structure") + } + fn visit_map>(self, mut map: V) -> Result { + let tag: &str = match map.next_key()? { + Some(".tag") => map.next_value()?, + _ => return Err(de::Error::missing_field(".tag")) + }; + let value = match tag { + "disabled" => MemberSuggestionsPolicy::Disabled, + "enabled" => MemberSuggestionsPolicy::Enabled, + _ => MemberSuggestionsPolicy::Other, + }; + crate::eat_json_fields(&mut map)?; + Ok(value) + } + } + const VARIANTS: &[&str] = &["disabled", + "enabled", + "other"]; + deserializer.deserialize_struct("MemberSuggestionsPolicy", VARIANTS, EnumVisitor) + } +} + +impl ::serde::ser::Serialize for MemberSuggestionsPolicy { + fn serialize(&self, serializer: S) -> Result { + // union serializer + use serde::ser::SerializeStruct; + match self { + MemberSuggestionsPolicy::Disabled => { + // unit + let mut s = serializer.serialize_struct("MemberSuggestionsPolicy", 1)?; + s.serialize_field(".tag", "disabled")?; + s.end() + } + MemberSuggestionsPolicy::Enabled => { + // unit + let mut s = serializer.serialize_struct("MemberSuggestionsPolicy", 1)?; + s.serialize_field(".tag", "enabled")?; + s.end() + } + MemberSuggestionsPolicy::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) + } + } +} + +/// Transferred contents of deleted member account to another member. +#[derive(Debug, Clone, PartialEq, Eq, Default)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct MemberTransferAccountContentsDetails { +} + +const MEMBER_TRANSFER_ACCOUNT_CONTENTS_DETAILS_FIELDS: &[&str] = &[]; +impl MemberTransferAccountContentsDetails { + // no _opt deserializer + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + ) -> Result { + // ignore any fields found; none are presently recognized + crate::eat_json_fields(&mut map)?; + Ok(MemberTransferAccountContentsDetails {}) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for MemberTransferAccountContentsDetails { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = MemberTransferAccountContentsDetails; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a MemberTransferAccountContentsDetails struct") + } + fn visit_map>(self, map: V) -> Result { + MemberTransferAccountContentsDetails::internal_deserialize(map) + } + } + deserializer.deserialize_struct("MemberTransferAccountContentsDetails", MEMBER_TRANSFER_ACCOUNT_CONTENTS_DETAILS_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for MemberTransferAccountContentsDetails { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + serializer.serialize_struct("MemberTransferAccountContentsDetails", 0)?.end() + } +} + #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct LegalHoldsExportRemovedDetails { - /// Hold ID. - pub legal_hold_id: String, - /// Hold name. - pub name: String, - /// Export name. - pub export_name: String, +pub struct MemberTransferAccountContentsType { + pub description: String, } -impl LegalHoldsExportRemovedDetails { - pub fn new(legal_hold_id: String, name: String, export_name: String) -> Self { - LegalHoldsExportRemovedDetails { - legal_hold_id, - name, - export_name, +impl MemberTransferAccountContentsType { + pub fn new(description: String) -> Self { + MemberTransferAccountContentsType { + description, } } } -const LEGAL_HOLDS_EXPORT_REMOVED_DETAILS_FIELDS: &[&str] = &["legal_hold_id", - "name", - "export_name"]; -impl LegalHoldsExportRemovedDetails { +const MEMBER_TRANSFER_ACCOUNT_CONTENTS_TYPE_FIELDS: &[&str] = &["description"]; +impl MemberTransferAccountContentsType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_legal_hold_id = None; - let mut field_name = None; - let mut field_export_name = None; + ) -> Result, V::Error> { + let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "legal_hold_id" => { - if field_legal_hold_id.is_some() { - return Err(::serde::de::Error::duplicate_field("legal_hold_id")); - } - field_legal_hold_id = Some(map.next_value()?); - } - "name" => { - if field_name.is_some() { - return Err(::serde::de::Error::duplicate_field("name")); - } - field_name = Some(map.next_value()?); - } - "export_name" => { - if field_export_name.is_some() { - return Err(::serde::de::Error::duplicate_field("export_name")); + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); } - field_export_name = Some(map.next_value()?); + field_description = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -57900,10 +79500,8 @@ impl LegalHoldsExportRemovedDetails { if optional && nothing { return Ok(None); } - let result = LegalHoldsExportRemovedDetails { - legal_hold_id: field_legal_hold_id.ok_or_else(|| ::serde::de::Error::missing_field("legal_hold_id"))?, - name: field_name.ok_or_else(|| ::serde::de::Error::missing_field("name"))?, - export_name: field_export_name.ok_or_else(|| ::serde::de::Error::missing_field("export_name"))?, + let result = MemberTransferAccountContentsType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) } @@ -57913,77 +79511,91 @@ impl LegalHoldsExportRemovedDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("legal_hold_id", &self.legal_hold_id)?; - s.serialize_field("name", &self.name)?; - s.serialize_field("export_name", &self.export_name)?; + s.serialize_field("description", &self.description)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for LegalHoldsExportRemovedDetails { +impl<'de> ::serde::de::Deserialize<'de> for MemberTransferAccountContentsType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = LegalHoldsExportRemovedDetails; + type Value = MemberTransferAccountContentsType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a LegalHoldsExportRemovedDetails struct") + f.write_str("a MemberTransferAccountContentsType struct") } fn visit_map>(self, map: V) -> Result { - LegalHoldsExportRemovedDetails::internal_deserialize(map) + MemberTransferAccountContentsType::internal_deserialize(map) } } - deserializer.deserialize_struct("LegalHoldsExportRemovedDetails", LEGAL_HOLDS_EXPORT_REMOVED_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("MemberTransferAccountContentsType", MEMBER_TRANSFER_ACCOUNT_CONTENTS_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for LegalHoldsExportRemovedDetails { +impl ::serde::ser::Serialize for MemberTransferAccountContentsType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("LegalHoldsExportRemovedDetails", 3)?; + let mut s = serializer.serialize_struct("MemberTransferAccountContentsType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } +/// Internal only - fields for target team computations #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct LegalHoldsExportRemovedType { - pub description: String, +pub struct MemberTransferredInternalFields { + /// Internal only - team user was moved from. + pub source_team_id: crate::types::team_common::TeamId, + /// Internal only - team user was moved to. + pub target_team_id: crate::types::team_common::TeamId, } -impl LegalHoldsExportRemovedType { - pub fn new(description: String) -> Self { - LegalHoldsExportRemovedType { - description, +impl MemberTransferredInternalFields { + pub fn new( + source_team_id: crate::types::team_common::TeamId, + target_team_id: crate::types::team_common::TeamId, + ) -> Self { + MemberTransferredInternalFields { + source_team_id, + target_team_id, } } } -const LEGAL_HOLDS_EXPORT_REMOVED_TYPE_FIELDS: &[&str] = &["description"]; -impl LegalHoldsExportRemovedType { +const MEMBER_TRANSFERRED_INTERNAL_FIELDS_FIELDS: &[&str] = &["source_team_id", + "target_team_id"]; +impl MemberTransferredInternalFields { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_description = None; + ) -> Result, V::Error> { + let mut field_source_team_id = None; + let mut field_target_team_id = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "description" => { - if field_description.is_some() { - return Err(::serde::de::Error::duplicate_field("description")); + "source_team_id" => { + if field_source_team_id.is_some() { + return Err(::serde::de::Error::duplicate_field("source_team_id")); } - field_description = Some(map.next_value()?); + field_source_team_id = Some(map.next_value()?); + } + "target_team_id" => { + if field_target_team_id.is_some() { + return Err(::serde::de::Error::duplicate_field("target_team_id")); + } + field_target_team_id = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -57994,8 +79606,9 @@ impl LegalHoldsExportRemovedType { if optional && nothing { return Ok(None); } - let result = LegalHoldsExportRemovedType { - description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + let result = MemberTransferredInternalFields { + source_team_id: field_source_team_id.ok_or_else(|| ::serde::de::Error::missing_field("source_team_id"))?, + target_team_id: field_target_team_id.ok_or_else(|| ::serde::de::Error::missing_field("target_team_id"))?, }; Ok(Some(result)) } @@ -58005,88 +79618,94 @@ impl LegalHoldsExportRemovedType { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("description", &self.description)?; + s.serialize_field("source_team_id", &self.source_team_id)?; + s.serialize_field("target_team_id", &self.target_team_id)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for LegalHoldsExportRemovedType { +impl<'de> ::serde::de::Deserialize<'de> for MemberTransferredInternalFields { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = LegalHoldsExportRemovedType; + type Value = MemberTransferredInternalFields; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a LegalHoldsExportRemovedType struct") + f.write_str("a MemberTransferredInternalFields struct") } fn visit_map>(self, map: V) -> Result { - LegalHoldsExportRemovedType::internal_deserialize(map) + MemberTransferredInternalFields::internal_deserialize(map) } } - deserializer.deserialize_struct("LegalHoldsExportRemovedType", LEGAL_HOLDS_EXPORT_REMOVED_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("MemberTransferredInternalFields", MEMBER_TRANSFERRED_INTERNAL_FIELDS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for LegalHoldsExportRemovedType { +impl ::serde::ser::Serialize for MemberTransferredInternalFields { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("LegalHoldsExportRemovedType", 1)?; + let mut s = serializer.serialize_struct("MemberTransferredInternalFields", 2)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Released a hold. +/// Enabled/disabled Microsoft login for team. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct LegalHoldsReleaseAHoldDetails { - /// Hold ID. - pub legal_hold_id: String, - /// Hold name. - pub name: String, +pub struct MicrosoftLoginChangePolicyDetails { + /// New Microsoft login policy. + pub new_value: MicrosoftLoginPolicy, + /// Previous Microsoft login policy. Might be missing due to historical data gap. + pub previous_value: Option, } -impl LegalHoldsReleaseAHoldDetails { - pub fn new(legal_hold_id: String, name: String) -> Self { - LegalHoldsReleaseAHoldDetails { - legal_hold_id, - name, +impl MicrosoftLoginChangePolicyDetails { + pub fn new(new_value: MicrosoftLoginPolicy) -> Self { + MicrosoftLoginChangePolicyDetails { + new_value, + previous_value: None, } } + + pub fn with_previous_value(mut self, value: MicrosoftLoginPolicy) -> Self { + self.previous_value = Some(value); + self + } } -const LEGAL_HOLDS_RELEASE_A_HOLD_DETAILS_FIELDS: &[&str] = &["legal_hold_id", - "name"]; -impl LegalHoldsReleaseAHoldDetails { +const MICROSOFT_LOGIN_CHANGE_POLICY_DETAILS_FIELDS: &[&str] = &["new_value", + "previous_value"]; +impl MicrosoftLoginChangePolicyDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_legal_hold_id = None; - let mut field_name = None; + ) -> Result, V::Error> { + let mut field_new_value = None; + let mut field_previous_value = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "legal_hold_id" => { - if field_legal_hold_id.is_some() { - return Err(::serde::de::Error::duplicate_field("legal_hold_id")); + "new_value" => { + if field_new_value.is_some() { + return Err(::serde::de::Error::duplicate_field("new_value")); } - field_legal_hold_id = Some(map.next_value()?); + field_new_value = Some(map.next_value()?); } - "name" => { - if field_name.is_some() { - return Err(::serde::de::Error::duplicate_field("name")); + "previous_value" => { + if field_previous_value.is_some() { + return Err(::serde::de::Error::duplicate_field("previous_value")); } - field_name = Some(map.next_value()?); + field_previous_value = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -58097,9 +79716,9 @@ impl LegalHoldsReleaseAHoldDetails { if optional && nothing { return Ok(None); } - let result = LegalHoldsReleaseAHoldDetails { - legal_hold_id: field_legal_hold_id.ok_or_else(|| ::serde::de::Error::missing_field("legal_hold_id"))?, - name: field_name.ok_or_else(|| ::serde::de::Error::missing_field("name"))?, + let result = MicrosoftLoginChangePolicyDetails { + new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, + previous_value: field_previous_value.and_then(Option::flatten), }; Ok(Some(result)) } @@ -58108,36 +79727,38 @@ impl LegalHoldsReleaseAHoldDetails { &self, s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { - use serde::ser::SerializeStruct; - s.serialize_field("legal_hold_id", &self.legal_hold_id)?; - s.serialize_field("name", &self.name)?; + use serde::ser::SerializeStruct; + s.serialize_field("new_value", &self.new_value)?; + if let Some(val) = &self.previous_value { + s.serialize_field("previous_value", val)?; + } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for LegalHoldsReleaseAHoldDetails { +impl<'de> ::serde::de::Deserialize<'de> for MicrosoftLoginChangePolicyDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = LegalHoldsReleaseAHoldDetails; + type Value = MicrosoftLoginChangePolicyDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a LegalHoldsReleaseAHoldDetails struct") + f.write_str("a MicrosoftLoginChangePolicyDetails struct") } fn visit_map>(self, map: V) -> Result { - LegalHoldsReleaseAHoldDetails::internal_deserialize(map) + MicrosoftLoginChangePolicyDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("LegalHoldsReleaseAHoldDetails", LEGAL_HOLDS_RELEASE_A_HOLD_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("MicrosoftLoginChangePolicyDetails", MICROSOFT_LOGIN_CHANGE_POLICY_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for LegalHoldsReleaseAHoldDetails { +impl ::serde::ser::Serialize for MicrosoftLoginChangePolicyDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("LegalHoldsReleaseAHoldDetails", 2)?; + let mut s = serializer.serialize_struct("MicrosoftLoginChangePolicyDetails", 2)?; self.internal_serialize::(&mut s)?; s.end() } @@ -58145,30 +79766,30 @@ impl ::serde::ser::Serialize for LegalHoldsReleaseAHoldDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct LegalHoldsReleaseAHoldType { +pub struct MicrosoftLoginChangePolicyType { pub description: String, } -impl LegalHoldsReleaseAHoldType { +impl MicrosoftLoginChangePolicyType { pub fn new(description: String) -> Self { - LegalHoldsReleaseAHoldType { + MicrosoftLoginChangePolicyType { description, } } } -const LEGAL_HOLDS_RELEASE_A_HOLD_TYPE_FIELDS: &[&str] = &["description"]; -impl LegalHoldsReleaseAHoldType { +const MICROSOFT_LOGIN_CHANGE_POLICY_TYPE_FIELDS: &[&str] = &["description"]; +impl MicrosoftLoginChangePolicyType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -58189,7 +79810,7 @@ impl LegalHoldsReleaseAHoldType { if optional && nothing { return Ok(None); } - let result = LegalHoldsReleaseAHoldType { + let result = MicrosoftLoginChangePolicyType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -58205,83 +79826,161 @@ impl LegalHoldsReleaseAHoldType { } } -impl<'de> ::serde::de::Deserialize<'de> for LegalHoldsReleaseAHoldType { +impl<'de> ::serde::de::Deserialize<'de> for MicrosoftLoginChangePolicyType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = LegalHoldsReleaseAHoldType; + type Value = MicrosoftLoginChangePolicyType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a LegalHoldsReleaseAHoldType struct") + f.write_str("a MicrosoftLoginChangePolicyType struct") } fn visit_map>(self, map: V) -> Result { - LegalHoldsReleaseAHoldType::internal_deserialize(map) + MicrosoftLoginChangePolicyType::internal_deserialize(map) } } - deserializer.deserialize_struct("LegalHoldsReleaseAHoldType", LEGAL_HOLDS_RELEASE_A_HOLD_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("MicrosoftLoginChangePolicyType", MICROSOFT_LOGIN_CHANGE_POLICY_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for LegalHoldsReleaseAHoldType { +impl ::serde::ser::Serialize for MicrosoftLoginChangePolicyType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("LegalHoldsReleaseAHoldType", 1)?; + let mut s = serializer.serialize_struct("MicrosoftLoginChangePolicyType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Removed members from a hold. +/// Microsoft login policy +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // variants may be added in the future +pub enum MicrosoftLoginPolicy { + Default, + Disabled, + Enabled, + /// Catch-all used for unrecognized values returned from the server. Encountering this value + /// typically indicates that this SDK version is out of date. + Other, +} + +impl<'de> ::serde::de::Deserialize<'de> for MicrosoftLoginPolicy { + fn deserialize>(deserializer: D) -> Result { + // union deserializer + use serde::de::{self, MapAccess, Visitor}; + struct EnumVisitor; + impl<'de> Visitor<'de> for EnumVisitor { + type Value = MicrosoftLoginPolicy; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a MicrosoftLoginPolicy structure") + } + fn visit_map>(self, mut map: V) -> Result { + let tag: &str = match map.next_key()? { + Some(".tag") => map.next_value()?, + _ => return Err(de::Error::missing_field(".tag")) + }; + let value = match tag { + "default" => MicrosoftLoginPolicy::Default, + "disabled" => MicrosoftLoginPolicy::Disabled, + "enabled" => MicrosoftLoginPolicy::Enabled, + _ => MicrosoftLoginPolicy::Other, + }; + crate::eat_json_fields(&mut map)?; + Ok(value) + } + } + const VARIANTS: &[&str] = &["default", + "disabled", + "enabled", + "other"]; + deserializer.deserialize_struct("MicrosoftLoginPolicy", VARIANTS, EnumVisitor) + } +} + +impl ::serde::ser::Serialize for MicrosoftLoginPolicy { + fn serialize(&self, serializer: S) -> Result { + // union serializer + use serde::ser::SerializeStruct; + match self { + MicrosoftLoginPolicy::Default => { + // unit + let mut s = serializer.serialize_struct("MicrosoftLoginPolicy", 1)?; + s.serialize_field(".tag", "default")?; + s.end() + } + MicrosoftLoginPolicy::Disabled => { + // unit + let mut s = serializer.serialize_struct("MicrosoftLoginPolicy", 1)?; + s.serialize_field(".tag", "disabled")?; + s.end() + } + MicrosoftLoginPolicy::Enabled => { + // unit + let mut s = serializer.serialize_struct("MicrosoftLoginPolicy", 1)?; + s.serialize_field(".tag", "enabled")?; + s.end() + } + MicrosoftLoginPolicy::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) + } + } +} + +/// Enabled/disabled Microsoft Office add-in. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct LegalHoldsRemoveMembersDetails { - /// Hold ID. - pub legal_hold_id: String, - /// Hold name. - pub name: String, +pub struct MicrosoftOfficeAddinChangePolicyDetails { + /// New Microsoft Office addin policy. + pub new_value: MicrosoftOfficeAddinPolicy, + /// Previous Microsoft Office addin policy. Might be missing due to historical data gap. + pub previous_value: Option, } -impl LegalHoldsRemoveMembersDetails { - pub fn new(legal_hold_id: String, name: String) -> Self { - LegalHoldsRemoveMembersDetails { - legal_hold_id, - name, +impl MicrosoftOfficeAddinChangePolicyDetails { + pub fn new(new_value: MicrosoftOfficeAddinPolicy) -> Self { + MicrosoftOfficeAddinChangePolicyDetails { + new_value, + previous_value: None, } } + + pub fn with_previous_value(mut self, value: MicrosoftOfficeAddinPolicy) -> Self { + self.previous_value = Some(value); + self + } } -const LEGAL_HOLDS_REMOVE_MEMBERS_DETAILS_FIELDS: &[&str] = &["legal_hold_id", - "name"]; -impl LegalHoldsRemoveMembersDetails { +const MICROSOFT_OFFICE_ADDIN_CHANGE_POLICY_DETAILS_FIELDS: &[&str] = &["new_value", + "previous_value"]; +impl MicrosoftOfficeAddinChangePolicyDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_legal_hold_id = None; - let mut field_name = None; + ) -> Result, V::Error> { + let mut field_new_value = None; + let mut field_previous_value = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "legal_hold_id" => { - if field_legal_hold_id.is_some() { - return Err(::serde::de::Error::duplicate_field("legal_hold_id")); + "new_value" => { + if field_new_value.is_some() { + return Err(::serde::de::Error::duplicate_field("new_value")); } - field_legal_hold_id = Some(map.next_value()?); + field_new_value = Some(map.next_value()?); } - "name" => { - if field_name.is_some() { - return Err(::serde::de::Error::duplicate_field("name")); + "previous_value" => { + if field_previous_value.is_some() { + return Err(::serde::de::Error::duplicate_field("previous_value")); } - field_name = Some(map.next_value()?); + field_previous_value = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -58292,9 +79991,9 @@ impl LegalHoldsRemoveMembersDetails { if optional && nothing { return Ok(None); } - let result = LegalHoldsRemoveMembersDetails { - legal_hold_id: field_legal_hold_id.ok_or_else(|| ::serde::de::Error::missing_field("legal_hold_id"))?, - name: field_name.ok_or_else(|| ::serde::de::Error::missing_field("name"))?, + let result = MicrosoftOfficeAddinChangePolicyDetails { + new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, + previous_value: field_previous_value.and_then(Option::flatten), }; Ok(Some(result)) } @@ -58304,35 +80003,37 @@ impl LegalHoldsRemoveMembersDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("legal_hold_id", &self.legal_hold_id)?; - s.serialize_field("name", &self.name)?; + s.serialize_field("new_value", &self.new_value)?; + if let Some(val) = &self.previous_value { + s.serialize_field("previous_value", val)?; + } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for LegalHoldsRemoveMembersDetails { +impl<'de> ::serde::de::Deserialize<'de> for MicrosoftOfficeAddinChangePolicyDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = LegalHoldsRemoveMembersDetails; + type Value = MicrosoftOfficeAddinChangePolicyDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a LegalHoldsRemoveMembersDetails struct") + f.write_str("a MicrosoftOfficeAddinChangePolicyDetails struct") } fn visit_map>(self, map: V) -> Result { - LegalHoldsRemoveMembersDetails::internal_deserialize(map) + MicrosoftOfficeAddinChangePolicyDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("LegalHoldsRemoveMembersDetails", LEGAL_HOLDS_REMOVE_MEMBERS_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("MicrosoftOfficeAddinChangePolicyDetails", MICROSOFT_OFFICE_ADDIN_CHANGE_POLICY_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for LegalHoldsRemoveMembersDetails { +impl ::serde::ser::Serialize for MicrosoftOfficeAddinChangePolicyDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("LegalHoldsRemoveMembersDetails", 2)?; + let mut s = serializer.serialize_struct("MicrosoftOfficeAddinChangePolicyDetails", 2)?; self.internal_serialize::(&mut s)?; s.end() } @@ -58340,30 +80041,30 @@ impl ::serde::ser::Serialize for LegalHoldsRemoveMembersDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct LegalHoldsRemoveMembersType { +pub struct MicrosoftOfficeAddinChangePolicyType { pub description: String, } -impl LegalHoldsRemoveMembersType { +impl MicrosoftOfficeAddinChangePolicyType { pub fn new(description: String) -> Self { - LegalHoldsRemoveMembersType { + MicrosoftOfficeAddinChangePolicyType { description, } } } -const LEGAL_HOLDS_REMOVE_MEMBERS_TYPE_FIELDS: &[&str] = &["description"]; -impl LegalHoldsRemoveMembersType { +const MICROSOFT_OFFICE_ADDIN_CHANGE_POLICY_TYPE_FIELDS: &[&str] = &["description"]; +impl MicrosoftOfficeAddinChangePolicyType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -58384,7 +80085,7 @@ impl LegalHoldsRemoveMembersType { if optional && nothing { return Ok(None); } - let result = LegalHoldsRemoveMembersType { + let result = MicrosoftOfficeAddinChangePolicyType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -58400,83 +80101,345 @@ impl LegalHoldsRemoveMembersType { } } -impl<'de> ::serde::de::Deserialize<'de> for LegalHoldsRemoveMembersType { +impl<'de> ::serde::de::Deserialize<'de> for MicrosoftOfficeAddinChangePolicyType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = LegalHoldsRemoveMembersType; + type Value = MicrosoftOfficeAddinChangePolicyType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a LegalHoldsRemoveMembersType struct") + f.write_str("a MicrosoftOfficeAddinChangePolicyType struct") } fn visit_map>(self, map: V) -> Result { - LegalHoldsRemoveMembersType::internal_deserialize(map) + MicrosoftOfficeAddinChangePolicyType::internal_deserialize(map) } } - deserializer.deserialize_struct("LegalHoldsRemoveMembersType", LEGAL_HOLDS_REMOVE_MEMBERS_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("MicrosoftOfficeAddinChangePolicyType", MICROSOFT_OFFICE_ADDIN_CHANGE_POLICY_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for LegalHoldsRemoveMembersType { +impl ::serde::ser::Serialize for MicrosoftOfficeAddinChangePolicyType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("LegalHoldsRemoveMembersType", 1)?; + let mut s = serializer.serialize_struct("MicrosoftOfficeAddinChangePolicyType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Created a summary report for a hold. +/// Microsoft Office addin policy +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // variants may be added in the future +pub enum MicrosoftOfficeAddinPolicy { + Disabled, + Enabled, + /// Catch-all used for unrecognized values returned from the server. Encountering this value + /// typically indicates that this SDK version is out of date. + Other, +} + +impl<'de> ::serde::de::Deserialize<'de> for MicrosoftOfficeAddinPolicy { + fn deserialize>(deserializer: D) -> Result { + // union deserializer + use serde::de::{self, MapAccess, Visitor}; + struct EnumVisitor; + impl<'de> Visitor<'de> for EnumVisitor { + type Value = MicrosoftOfficeAddinPolicy; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a MicrosoftOfficeAddinPolicy structure") + } + fn visit_map>(self, mut map: V) -> Result { + let tag: &str = match map.next_key()? { + Some(".tag") => map.next_value()?, + _ => return Err(de::Error::missing_field(".tag")) + }; + let value = match tag { + "disabled" => MicrosoftOfficeAddinPolicy::Disabled, + "enabled" => MicrosoftOfficeAddinPolicy::Enabled, + _ => MicrosoftOfficeAddinPolicy::Other, + }; + crate::eat_json_fields(&mut map)?; + Ok(value) + } + } + const VARIANTS: &[&str] = &["disabled", + "enabled", + "other"]; + deserializer.deserialize_struct("MicrosoftOfficeAddinPolicy", VARIANTS, EnumVisitor) + } +} + +impl ::serde::ser::Serialize for MicrosoftOfficeAddinPolicy { + fn serialize(&self, serializer: S) -> Result { + // union serializer + use serde::ser::SerializeStruct; + match self { + MicrosoftOfficeAddinPolicy::Disabled => { + // unit + let mut s = serializer.serialize_struct("MicrosoftOfficeAddinPolicy", 1)?; + s.serialize_field(".tag", "disabled")?; + s.end() + } + MicrosoftOfficeAddinPolicy::Enabled => { + // unit + let mut s = serializer.serialize_struct("MicrosoftOfficeAddinPolicy", 1)?; + s.serialize_field(".tag", "enabled")?; + s.end() + } + MicrosoftOfficeAddinPolicy::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) + } + } +} + +/// An indication that an error occurred while retrieving the event. Some attributes of the event +/// may be omitted as a result. +#[derive(Debug, Clone, PartialEq, Eq, Default)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct MissingDetails { + /// All the data that could be retrieved and converted from the source event. + pub source_event_fields: Option, +} + +impl MissingDetails { + pub fn with_source_event_fields(mut self, value: String) -> Self { + self.source_event_fields = Some(value); + self + } +} + +const MISSING_DETAILS_FIELDS: &[&str] = &["source_event_fields"]; +impl MissingDetails { + // no _opt deserializer + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + ) -> Result { + let mut field_source_event_fields = None; + while let Some(key) = map.next_key::<&str>()? { + match key { + "source_event_fields" => { + if field_source_event_fields.is_some() { + return Err(::serde::de::Error::duplicate_field("source_event_fields")); + } + field_source_event_fields = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } + } + } + let result = MissingDetails { + source_event_fields: field_source_event_fields.and_then(Option::flatten), + }; + Ok(result) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + if let Some(val) = &self.source_event_fields { + s.serialize_field("source_event_fields", val)?; + } + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for MissingDetails { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = MissingDetails; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a MissingDetails struct") + } + fn visit_map>(self, map: V) -> Result { + MissingDetails::internal_deserialize(map) + } + } + deserializer.deserialize_struct("MissingDetails", MISSING_DETAILS_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for MissingDetails { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("MissingDetails", 1)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +/// Information about linked Dropbox mobile client sessions #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct LegalHoldsReportAHoldDetails { - /// Hold ID. - pub legal_hold_id: String, - /// Hold name. - pub name: String, +pub struct MobileDeviceSessionLogInfo { + /// The device name. + pub device_name: String, + /// The mobile application type. + pub client_type: crate::types::team::MobileClientPlatform, + /// The IP address of the last activity from this session. + pub ip_address: Option, + /// The time this session was created. + pub created: Option, + /// The time of the last activity from this session. + pub updated: Option, + /// Mobile session unique id. + pub session_info: Option, + /// The Dropbox client version. + pub client_version: Option, + /// The hosting OS version. + pub os_version: Option, + /// last carrier used by the device. + pub last_carrier: Option, } -impl LegalHoldsReportAHoldDetails { - pub fn new(legal_hold_id: String, name: String) -> Self { - LegalHoldsReportAHoldDetails { - legal_hold_id, - name, +impl MobileDeviceSessionLogInfo { + pub fn new( + device_name: String, + client_type: crate::types::team::MobileClientPlatform, + ) -> Self { + MobileDeviceSessionLogInfo { + device_name, + client_type, + ip_address: None, + created: None, + updated: None, + session_info: None, + client_version: None, + os_version: None, + last_carrier: None, } } + + pub fn with_ip_address(mut self, value: IpAddress) -> Self { + self.ip_address = Some(value); + self + } + + pub fn with_created(mut self, value: crate::types::common::DropboxTimestamp) -> Self { + self.created = Some(value); + self + } + + pub fn with_updated(mut self, value: crate::types::common::DropboxTimestamp) -> Self { + self.updated = Some(value); + self + } + + pub fn with_session_info(mut self, value: MobileSessionLogInfo) -> Self { + self.session_info = Some(value); + self + } + + pub fn with_client_version(mut self, value: String) -> Self { + self.client_version = Some(value); + self + } + + pub fn with_os_version(mut self, value: String) -> Self { + self.os_version = Some(value); + self + } + + pub fn with_last_carrier(mut self, value: String) -> Self { + self.last_carrier = Some(value); + self + } } -const LEGAL_HOLDS_REPORT_A_HOLD_DETAILS_FIELDS: &[&str] = &["legal_hold_id", - "name"]; -impl LegalHoldsReportAHoldDetails { +const MOBILE_DEVICE_SESSION_LOG_INFO_FIELDS: &[&str] = &["device_name", + "client_type", + "ip_address", + "created", + "updated", + "session_info", + "client_version", + "os_version", + "last_carrier"]; +impl MobileDeviceSessionLogInfo { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_legal_hold_id = None; - let mut field_name = None; + ) -> Result, V::Error> { + let mut field_device_name = None; + let mut field_client_type = None; + let mut field_ip_address = None; + let mut field_created = None; + let mut field_updated = None; + let mut field_session_info = None; + let mut field_client_version = None; + let mut field_os_version = None; + let mut field_last_carrier = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "legal_hold_id" => { - if field_legal_hold_id.is_some() { - return Err(::serde::de::Error::duplicate_field("legal_hold_id")); + "device_name" => { + if field_device_name.is_some() { + return Err(::serde::de::Error::duplicate_field("device_name")); } - field_legal_hold_id = Some(map.next_value()?); + field_device_name = Some(map.next_value()?); } - "name" => { - if field_name.is_some() { - return Err(::serde::de::Error::duplicate_field("name")); + "client_type" => { + if field_client_type.is_some() { + return Err(::serde::de::Error::duplicate_field("client_type")); } - field_name = Some(map.next_value()?); + field_client_type = Some(map.next_value()?); + } + "ip_address" => { + if field_ip_address.is_some() { + return Err(::serde::de::Error::duplicate_field("ip_address")); + } + field_ip_address = Some(map.next_value()?); + } + "created" => { + if field_created.is_some() { + return Err(::serde::de::Error::duplicate_field("created")); + } + field_created = Some(map.next_value()?); + } + "updated" => { + if field_updated.is_some() { + return Err(::serde::de::Error::duplicate_field("updated")); + } + field_updated = Some(map.next_value()?); + } + "session_info" => { + if field_session_info.is_some() { + return Err(::serde::de::Error::duplicate_field("session_info")); + } + field_session_info = Some(map.next_value()?); + } + "client_version" => { + if field_client_version.is_some() { + return Err(::serde::de::Error::duplicate_field("client_version")); + } + field_client_version = Some(map.next_value()?); + } + "os_version" => { + if field_os_version.is_some() { + return Err(::serde::de::Error::duplicate_field("os_version")); + } + field_os_version = Some(map.next_value()?); + } + "last_carrier" => { + if field_last_carrier.is_some() { + return Err(::serde::de::Error::duplicate_field("last_carrier")); + } + field_last_carrier = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -58487,9 +80450,16 @@ impl LegalHoldsReportAHoldDetails { if optional && nothing { return Ok(None); } - let result = LegalHoldsReportAHoldDetails { - legal_hold_id: field_legal_hold_id.ok_or_else(|| ::serde::de::Error::missing_field("legal_hold_id"))?, - name: field_name.ok_or_else(|| ::serde::de::Error::missing_field("name"))?, + let result = MobileDeviceSessionLogInfo { + device_name: field_device_name.ok_or_else(|| ::serde::de::Error::missing_field("device_name"))?, + client_type: field_client_type.ok_or_else(|| ::serde::de::Error::missing_field("client_type"))?, + ip_address: field_ip_address.and_then(Option::flatten), + created: field_created.and_then(Option::flatten), + updated: field_updated.and_then(Option::flatten), + session_info: field_session_info.and_then(Option::flatten), + client_version: field_client_version.and_then(Option::flatten), + os_version: field_os_version.and_then(Option::flatten), + last_carrier: field_last_carrier.and_then(Option::flatten), }; Ok(Some(result)) } @@ -58499,76 +80469,96 @@ impl LegalHoldsReportAHoldDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("legal_hold_id", &self.legal_hold_id)?; - s.serialize_field("name", &self.name)?; + s.serialize_field("device_name", &self.device_name)?; + s.serialize_field("client_type", &self.client_type)?; + if let Some(val) = &self.ip_address { + s.serialize_field("ip_address", val)?; + } + if let Some(val) = &self.created { + s.serialize_field("created", val)?; + } + if let Some(val) = &self.updated { + s.serialize_field("updated", val)?; + } + if let Some(val) = &self.session_info { + s.serialize_field("session_info", val)?; + } + if let Some(val) = &self.client_version { + s.serialize_field("client_version", val)?; + } + if let Some(val) = &self.os_version { + s.serialize_field("os_version", val)?; + } + if let Some(val) = &self.last_carrier { + s.serialize_field("last_carrier", val)?; + } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for LegalHoldsReportAHoldDetails { +impl<'de> ::serde::de::Deserialize<'de> for MobileDeviceSessionLogInfo { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = LegalHoldsReportAHoldDetails; + type Value = MobileDeviceSessionLogInfo; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a LegalHoldsReportAHoldDetails struct") + f.write_str("a MobileDeviceSessionLogInfo struct") } fn visit_map>(self, map: V) -> Result { - LegalHoldsReportAHoldDetails::internal_deserialize(map) + MobileDeviceSessionLogInfo::internal_deserialize(map) } } - deserializer.deserialize_struct("LegalHoldsReportAHoldDetails", LEGAL_HOLDS_REPORT_A_HOLD_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("MobileDeviceSessionLogInfo", MOBILE_DEVICE_SESSION_LOG_INFO_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for LegalHoldsReportAHoldDetails { +impl ::serde::ser::Serialize for MobileDeviceSessionLogInfo { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("LegalHoldsReportAHoldDetails", 2)?; + let mut s = serializer.serialize_struct("MobileDeviceSessionLogInfo", 9)?; self.internal_serialize::(&mut s)?; s.end() } } -#[derive(Debug, Clone, PartialEq, Eq)] +// struct extends polymorphic struct DeviceSessionLogInfo +impl From for DeviceSessionLogInfo { + fn from(subtype: MobileDeviceSessionLogInfo) -> Self { + DeviceSessionLogInfo::MobileDeviceSession(subtype) + } +} +/// Mobile session. +#[derive(Debug, Clone, PartialEq, Eq, Default)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct LegalHoldsReportAHoldType { - pub description: String, +pub struct MobileSessionLogInfo { + /// Session ID. + pub session_id: Option, } -impl LegalHoldsReportAHoldType { - pub fn new(description: String) -> Self { - LegalHoldsReportAHoldType { - description, - } +impl MobileSessionLogInfo { + pub fn with_session_id(mut self, value: crate::types::common::SessionId) -> Self { + self.session_id = Some(value); + self } } -const LEGAL_HOLDS_REPORT_A_HOLD_TYPE_FIELDS: &[&str] = &["description"]; -impl LegalHoldsReportAHoldType { +const MOBILE_SESSION_LOG_INFO_FIELDS: &[&str] = &["session_id"]; +impl MobileSessionLogInfo { + // no _opt deserializer pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( - map: V, - ) -> Result { - Self::internal_deserialize_opt(map, false).map(Option::unwrap) - } - - pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - optional: bool, - ) -> Result, V::Error> { - let mut field_description = None; - let mut nothing = true; + ) -> Result { + let mut field_session_id = None; while let Some(key) = map.next_key::<&str>()? { - nothing = false; match key { - "description" => { - if field_description.is_some() { - return Err(::serde::de::Error::duplicate_field("description")); + "session_id" => { + if field_session_id.is_some() { + return Err(::serde::de::Error::duplicate_field("session_id")); } - field_description = Some(map.next_value()?); + field_session_id = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -58576,13 +80566,10 @@ impl LegalHoldsReportAHoldType { } } } - if optional && nothing { - return Ok(None); - } - let result = LegalHoldsReportAHoldType { - description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + let result = MobileSessionLogInfo { + session_id: field_session_id.and_then(Option::flatten), }; - Ok(Some(result)) + Ok(result) } pub(crate) fn internal_serialize( @@ -58590,258 +80577,221 @@ impl LegalHoldsReportAHoldType { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("description", &self.description)?; + if let Some(val) = &self.session_id { + s.serialize_field("session_id", val)?; + } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for LegalHoldsReportAHoldType { +impl<'de> ::serde::de::Deserialize<'de> for MobileSessionLogInfo { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = LegalHoldsReportAHoldType; + type Value = MobileSessionLogInfo; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a LegalHoldsReportAHoldType struct") + f.write_str("a MobileSessionLogInfo struct") } fn visit_map>(self, map: V) -> Result { - LegalHoldsReportAHoldType::internal_deserialize(map) + MobileSessionLogInfo::internal_deserialize(map) } } - deserializer.deserialize_struct("LegalHoldsReportAHoldType", LEGAL_HOLDS_REPORT_A_HOLD_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("MobileSessionLogInfo", MOBILE_SESSION_LOG_INFO_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for LegalHoldsReportAHoldType { +impl ::serde::ser::Serialize for MobileSessionLogInfo { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("LegalHoldsReportAHoldType", 1)?; + let mut s = serializer.serialize_struct("MobileSessionLogInfo", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// The device sessions that user is linked to. -#[derive(Debug, Clone, PartialEq, Eq)] -#[non_exhaustive] // variants may be added in the future -pub enum LinkedDeviceLogInfo { - /// desktop device session's details. - DesktopDeviceSession(DesktopDeviceSessionLogInfo), - /// legacy device session's details. - LegacyDeviceSession(LegacyDeviceSessionLogInfo), - /// mobile device session's details. - MobileDeviceSession(MobileDeviceSessionLogInfo), - /// web device session's details. - WebDeviceSession(WebDeviceSessionLogInfo), - /// Catch-all used for unrecognized values returned from the server. Encountering this value - /// typically indicates that this SDK version is out of date. - Other, +// struct extends polymorphic struct SessionLogInfo +impl From for SessionLogInfo { + fn from(subtype: MobileSessionLogInfo) -> Self { + SessionLogInfo::Mobile(subtype) + } +} +/// Namespace relative path details. +#[derive(Debug, Clone, PartialEq, Eq, Default)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct NamespaceRelativePathLogInfo { + /// Namespace ID. + pub ns_id: Option, + /// A path relative to the specified namespace ID. + pub relative_path: Option, + /// True if the namespace is shared. + pub is_shared_namespace: Option, } -impl<'de> ::serde::de::Deserialize<'de> for LinkedDeviceLogInfo { - fn deserialize>(deserializer: D) -> Result { - // union deserializer - use serde::de::{self, MapAccess, Visitor}; - struct EnumVisitor; - impl<'de> Visitor<'de> for EnumVisitor { - type Value = LinkedDeviceLogInfo; - fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a LinkedDeviceLogInfo structure") - } - fn visit_map>(self, mut map: V) -> Result { - let tag: &str = match map.next_key()? { - Some(".tag") => map.next_value()?, - _ => return Err(de::Error::missing_field(".tag")) - }; - let value = match tag { - "desktop_device_session" => LinkedDeviceLogInfo::DesktopDeviceSession(DesktopDeviceSessionLogInfo::internal_deserialize(&mut map)?), - "legacy_device_session" => LinkedDeviceLogInfo::LegacyDeviceSession(LegacyDeviceSessionLogInfo::internal_deserialize(&mut map)?), - "mobile_device_session" => LinkedDeviceLogInfo::MobileDeviceSession(MobileDeviceSessionLogInfo::internal_deserialize(&mut map)?), - "web_device_session" => LinkedDeviceLogInfo::WebDeviceSession(WebDeviceSessionLogInfo::internal_deserialize(&mut map)?), - _ => LinkedDeviceLogInfo::Other, - }; - crate::eat_json_fields(&mut map)?; - Ok(value) - } - } - const VARIANTS: &[&str] = &["desktop_device_session", - "legacy_device_session", - "mobile_device_session", - "web_device_session", - "other"]; - deserializer.deserialize_struct("LinkedDeviceLogInfo", VARIANTS, EnumVisitor) +impl NamespaceRelativePathLogInfo { + pub fn with_ns_id(mut self, value: NamespaceId) -> Self { + self.ns_id = Some(value); + self + } + + pub fn with_relative_path(mut self, value: FilePath) -> Self { + self.relative_path = Some(value); + self + } + + pub fn with_is_shared_namespace(mut self, value: bool) -> Self { + self.is_shared_namespace = Some(value); + self } } -impl ::serde::ser::Serialize for LinkedDeviceLogInfo { - fn serialize(&self, serializer: S) -> Result { - // union serializer - use serde::ser::SerializeStruct; - match self { - LinkedDeviceLogInfo::DesktopDeviceSession(x) => { - // struct - let mut s = serializer.serialize_struct("LinkedDeviceLogInfo", 10)?; - s.serialize_field(".tag", "desktop_device_session")?; - x.internal_serialize::(&mut s)?; - s.end() - } - LinkedDeviceLogInfo::LegacyDeviceSession(x) => { - // struct - let mut s = serializer.serialize_struct("LinkedDeviceLogInfo", 13)?; - s.serialize_field(".tag", "legacy_device_session")?; - x.internal_serialize::(&mut s)?; - s.end() - } - LinkedDeviceLogInfo::MobileDeviceSession(x) => { - // struct - let mut s = serializer.serialize_struct("LinkedDeviceLogInfo", 10)?; - s.serialize_field(".tag", "mobile_device_session")?; - x.internal_serialize::(&mut s)?; - s.end() - } - LinkedDeviceLogInfo::WebDeviceSession(x) => { - // struct - let mut s = serializer.serialize_struct("LinkedDeviceLogInfo", 8)?; - s.serialize_field(".tag", "web_device_session")?; - x.internal_serialize::(&mut s)?; - s.end() +const NAMESPACE_RELATIVE_PATH_LOG_INFO_FIELDS: &[&str] = &["ns_id", + "relative_path", + "is_shared_namespace"]; +impl NamespaceRelativePathLogInfo { + // no _opt deserializer + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + ) -> Result { + let mut field_ns_id = None; + let mut field_relative_path = None; + let mut field_is_shared_namespace = None; + while let Some(key) = map.next_key::<&str>()? { + match key { + "ns_id" => { + if field_ns_id.is_some() { + return Err(::serde::de::Error::duplicate_field("ns_id")); + } + field_ns_id = Some(map.next_value()?); + } + "relative_path" => { + if field_relative_path.is_some() { + return Err(::serde::de::Error::duplicate_field("relative_path")); + } + field_relative_path = Some(map.next_value()?); + } + "is_shared_namespace" => { + if field_is_shared_namespace.is_some() { + return Err(::serde::de::Error::duplicate_field("is_shared_namespace")); + } + field_is_shared_namespace = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } } - LinkedDeviceLogInfo::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) } + let result = NamespaceRelativePathLogInfo { + ns_id: field_ns_id.and_then(Option::flatten), + relative_path: field_relative_path.and_then(Option::flatten), + is_shared_namespace: field_is_shared_namespace.and_then(Option::flatten), + }; + Ok(result) } -} -/// File lock status -#[derive(Debug, Clone, PartialEq, Eq)] -#[non_exhaustive] // variants may be added in the future -pub enum LockStatus { - Locked, - Unlocked, - /// Catch-all used for unrecognized values returned from the server. Encountering this value - /// typically indicates that this SDK version is out of date. - Other, + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + if let Some(val) = &self.ns_id { + s.serialize_field("ns_id", val)?; + } + if let Some(val) = &self.relative_path { + s.serialize_field("relative_path", val)?; + } + if let Some(val) = &self.is_shared_namespace { + s.serialize_field("is_shared_namespace", val)?; + } + Ok(()) + } } -impl<'de> ::serde::de::Deserialize<'de> for LockStatus { +impl<'de> ::serde::de::Deserialize<'de> for NamespaceRelativePathLogInfo { fn deserialize>(deserializer: D) -> Result { - // union deserializer - use serde::de::{self, MapAccess, Visitor}; - struct EnumVisitor; - impl<'de> Visitor<'de> for EnumVisitor { - type Value = LockStatus; + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = NamespaceRelativePathLogInfo; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a LockStatus structure") + f.write_str("a NamespaceRelativePathLogInfo struct") } - fn visit_map>(self, mut map: V) -> Result { - let tag: &str = match map.next_key()? { - Some(".tag") => map.next_value()?, - _ => return Err(de::Error::missing_field(".tag")) - }; - let value = match tag { - "locked" => LockStatus::Locked, - "unlocked" => LockStatus::Unlocked, - _ => LockStatus::Other, - }; - crate::eat_json_fields(&mut map)?; - Ok(value) + fn visit_map>(self, map: V) -> Result { + NamespaceRelativePathLogInfo::internal_deserialize(map) } } - const VARIANTS: &[&str] = &["locked", - "unlocked", - "other"]; - deserializer.deserialize_struct("LockStatus", VARIANTS, EnumVisitor) + deserializer.deserialize_struct("NamespaceRelativePathLogInfo", NAMESPACE_RELATIVE_PATH_LOG_INFO_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for LockStatus { +impl ::serde::ser::Serialize for NamespaceRelativePathLogInfo { fn serialize(&self, serializer: S) -> Result { - // union serializer + // struct serializer use serde::ser::SerializeStruct; - match self { - LockStatus::Locked => { - // unit - let mut s = serializer.serialize_struct("LockStatus", 1)?; - s.serialize_field(".tag", "locked")?; - s.end() - } - LockStatus::Unlocked => { - // unit - let mut s = serializer.serialize_struct("LockStatus", 1)?; - s.serialize_field(".tag", "unlocked")?; - s.end() - } - LockStatus::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) - } + let mut s = serializer.serialize_struct("NamespaceRelativePathLogInfo", 3)?; + self.internal_serialize::(&mut s)?; + s.end() } } -/// Failed to sign in. +/// Enabled/disabled network control. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct LoginFailDetails { - /// Login method. - pub login_method: LoginMethod, - /// Error details. - pub error_details: FailureDetailsLogInfo, - /// Tells if the login device is EMM managed. Might be missing due to historical data gap. - pub is_emm_managed: Option, +pub struct NetworkControlChangePolicyDetails { + /// New network control policy. + pub new_value: NetworkControlPolicy, + /// Previous network control policy. Might be missing due to historical data gap. + pub previous_value: Option, } -impl LoginFailDetails { - pub fn new(login_method: LoginMethod, error_details: FailureDetailsLogInfo) -> Self { - LoginFailDetails { - login_method, - error_details, - is_emm_managed: None, +impl NetworkControlChangePolicyDetails { + pub fn new(new_value: NetworkControlPolicy) -> Self { + NetworkControlChangePolicyDetails { + new_value, + previous_value: None, } } - pub fn with_is_emm_managed(mut self, value: bool) -> Self { - self.is_emm_managed = Some(value); + pub fn with_previous_value(mut self, value: NetworkControlPolicy) -> Self { + self.previous_value = Some(value); self } } -const LOGIN_FAIL_DETAILS_FIELDS: &[&str] = &["login_method", - "error_details", - "is_emm_managed"]; -impl LoginFailDetails { +const NETWORK_CONTROL_CHANGE_POLICY_DETAILS_FIELDS: &[&str] = &["new_value", + "previous_value"]; +impl NetworkControlChangePolicyDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_login_method = None; - let mut field_error_details = None; - let mut field_is_emm_managed = None; + ) -> Result, V::Error> { + let mut field_new_value = None; + let mut field_previous_value = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "login_method" => { - if field_login_method.is_some() { - return Err(::serde::de::Error::duplicate_field("login_method")); - } - field_login_method = Some(map.next_value()?); - } - "error_details" => { - if field_error_details.is_some() { - return Err(::serde::de::Error::duplicate_field("error_details")); + "new_value" => { + if field_new_value.is_some() { + return Err(::serde::de::Error::duplicate_field("new_value")); } - field_error_details = Some(map.next_value()?); + field_new_value = Some(map.next_value()?); } - "is_emm_managed" => { - if field_is_emm_managed.is_some() { - return Err(::serde::de::Error::duplicate_field("is_emm_managed")); + "previous_value" => { + if field_previous_value.is_some() { + return Err(::serde::de::Error::duplicate_field("previous_value")); } - field_is_emm_managed = Some(map.next_value()?); + field_previous_value = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -58852,10 +80802,9 @@ impl LoginFailDetails { if optional && nothing { return Ok(None); } - let result = LoginFailDetails { - login_method: field_login_method.ok_or_else(|| ::serde::de::Error::missing_field("login_method"))?, - error_details: field_error_details.ok_or_else(|| ::serde::de::Error::missing_field("error_details"))?, - is_emm_managed: field_is_emm_managed.and_then(Option::flatten), + let result = NetworkControlChangePolicyDetails { + new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, + previous_value: field_previous_value.and_then(Option::flatten), }; Ok(Some(result)) } @@ -58865,38 +80814,37 @@ impl LoginFailDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("login_method", &self.login_method)?; - s.serialize_field("error_details", &self.error_details)?; - if let Some(val) = &self.is_emm_managed { - s.serialize_field("is_emm_managed", val)?; + s.serialize_field("new_value", &self.new_value)?; + if let Some(val) = &self.previous_value { + s.serialize_field("previous_value", val)?; } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for LoginFailDetails { +impl<'de> ::serde::de::Deserialize<'de> for NetworkControlChangePolicyDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = LoginFailDetails; + type Value = NetworkControlChangePolicyDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a LoginFailDetails struct") + f.write_str("a NetworkControlChangePolicyDetails struct") } fn visit_map>(self, map: V) -> Result { - LoginFailDetails::internal_deserialize(map) + NetworkControlChangePolicyDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("LoginFailDetails", LOGIN_FAIL_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("NetworkControlChangePolicyDetails", NETWORK_CONTROL_CHANGE_POLICY_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for LoginFailDetails { +impl ::serde::ser::Serialize for NetworkControlChangePolicyDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("LoginFailDetails", 3)?; + let mut s = serializer.serialize_struct("NetworkControlChangePolicyDetails", 2)?; self.internal_serialize::(&mut s)?; s.end() } @@ -58904,30 +80852,30 @@ impl ::serde::ser::Serialize for LoginFailDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct LoginFailType { +pub struct NetworkControlChangePolicyType { pub description: String, } -impl LoginFailType { +impl NetworkControlChangePolicyType { pub fn new(description: String) -> Self { - LoginFailType { + NetworkControlChangePolicyType { description, } } } -const LOGIN_FAIL_TYPE_FIELDS: &[&str] = &["description"]; -impl LoginFailType { +const NETWORK_CONTROL_CHANGE_POLICY_TYPE_FIELDS: &[&str] = &["description"]; +impl NetworkControlChangePolicyType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -58948,7 +80896,7 @@ impl LoginFailType { if optional && nothing { return Ok(None); } - let result = LoginFailType { + let result = NetworkControlChangePolicyType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -58964,60 +80912,54 @@ impl LoginFailType { } } -impl<'de> ::serde::de::Deserialize<'de> for LoginFailType { +impl<'de> ::serde::de::Deserialize<'de> for NetworkControlChangePolicyType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = LoginFailType; + type Value = NetworkControlChangePolicyType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a LoginFailType struct") + f.write_str("a NetworkControlChangePolicyType struct") } fn visit_map>(self, map: V) -> Result { - LoginFailType::internal_deserialize(map) + NetworkControlChangePolicyType::internal_deserialize(map) } } - deserializer.deserialize_struct("LoginFailType", LOGIN_FAIL_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("NetworkControlChangePolicyType", NETWORK_CONTROL_CHANGE_POLICY_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for LoginFailType { +impl ::serde::ser::Serialize for NetworkControlChangePolicyType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("LoginFailType", 1)?; + let mut s = serializer.serialize_struct("NetworkControlChangePolicyType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } +/// Network control policy #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // variants may be added in the future -pub enum LoginMethod { - AppleOauth, - FirstPartyTokenExchange, - GoogleOauth, - LenovoOauth, - Password, - QrCode, - Saml, - TwoFactorAuthentication, - WebSession, +pub enum NetworkControlPolicy { + Disabled, + Enabled, /// Catch-all used for unrecognized values returned from the server. Encountering this value /// typically indicates that this SDK version is out of date. Other, } -impl<'de> ::serde::de::Deserialize<'de> for LoginMethod { +impl<'de> ::serde::de::Deserialize<'de> for NetworkControlPolicy { fn deserialize>(deserializer: D) -> Result { // union deserializer use serde::de::{self, MapAccess, Visitor}; struct EnumVisitor; impl<'de> Visitor<'de> for EnumVisitor { - type Value = LoginMethod; + type Value = NetworkControlPolicy; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a LoginMethod structure") + f.write_str("a NetworkControlPolicy structure") } fn visit_map>(self, mut map: V) -> Result { let tag: &str = match map.next_key()? { @@ -59025,153 +80967,95 @@ impl<'de> ::serde::de::Deserialize<'de> for LoginMethod { _ => return Err(de::Error::missing_field(".tag")) }; let value = match tag { - "apple_oauth" => LoginMethod::AppleOauth, - "first_party_token_exchange" => LoginMethod::FirstPartyTokenExchange, - "google_oauth" => LoginMethod::GoogleOauth, - "lenovo_oauth" => LoginMethod::LenovoOauth, - "password" => LoginMethod::Password, - "qr_code" => LoginMethod::QrCode, - "saml" => LoginMethod::Saml, - "two_factor_authentication" => LoginMethod::TwoFactorAuthentication, - "web_session" => LoginMethod::WebSession, - _ => LoginMethod::Other, + "disabled" => NetworkControlPolicy::Disabled, + "enabled" => NetworkControlPolicy::Enabled, + _ => NetworkControlPolicy::Other, }; crate::eat_json_fields(&mut map)?; Ok(value) } } - const VARIANTS: &[&str] = &["apple_oauth", - "first_party_token_exchange", - "google_oauth", - "lenovo_oauth", - "password", - "qr_code", - "saml", - "two_factor_authentication", - "web_session", + const VARIANTS: &[&str] = &["disabled", + "enabled", "other"]; - deserializer.deserialize_struct("LoginMethod", VARIANTS, EnumVisitor) + deserializer.deserialize_struct("NetworkControlPolicy", VARIANTS, EnumVisitor) } } -impl ::serde::ser::Serialize for LoginMethod { +impl ::serde::ser::Serialize for NetworkControlPolicy { fn serialize(&self, serializer: S) -> Result { // union serializer use serde::ser::SerializeStruct; match self { - LoginMethod::AppleOauth => { - // unit - let mut s = serializer.serialize_struct("LoginMethod", 1)?; - s.serialize_field(".tag", "apple_oauth")?; - s.end() - } - LoginMethod::FirstPartyTokenExchange => { - // unit - let mut s = serializer.serialize_struct("LoginMethod", 1)?; - s.serialize_field(".tag", "first_party_token_exchange")?; - s.end() - } - LoginMethod::GoogleOauth => { - // unit - let mut s = serializer.serialize_struct("LoginMethod", 1)?; - s.serialize_field(".tag", "google_oauth")?; - s.end() - } - LoginMethod::LenovoOauth => { - // unit - let mut s = serializer.serialize_struct("LoginMethod", 1)?; - s.serialize_field(".tag", "lenovo_oauth")?; - s.end() - } - LoginMethod::Password => { - // unit - let mut s = serializer.serialize_struct("LoginMethod", 1)?; - s.serialize_field(".tag", "password")?; - s.end() - } - LoginMethod::QrCode => { - // unit - let mut s = serializer.serialize_struct("LoginMethod", 1)?; - s.serialize_field(".tag", "qr_code")?; - s.end() - } - LoginMethod::Saml => { - // unit - let mut s = serializer.serialize_struct("LoginMethod", 1)?; - s.serialize_field(".tag", "saml")?; - s.end() - } - LoginMethod::TwoFactorAuthentication => { + NetworkControlPolicy::Disabled => { // unit - let mut s = serializer.serialize_struct("LoginMethod", 1)?; - s.serialize_field(".tag", "two_factor_authentication")?; + let mut s = serializer.serialize_struct("NetworkControlPolicy", 1)?; + s.serialize_field(".tag", "disabled")?; s.end() } - LoginMethod::WebSession => { + NetworkControlPolicy::Enabled => { // unit - let mut s = serializer.serialize_struct("LoginMethod", 1)?; - s.serialize_field(".tag", "web_session")?; + let mut s = serializer.serialize_struct("NetworkControlPolicy", 1)?; + s.serialize_field(".tag", "enabled")?; s.end() } - LoginMethod::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) + NetworkControlPolicy::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) } } } -/// Signed in. +/// Report created: Links created with no expiration. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct LoginSuccessDetails { - /// Login method. - pub login_method: LoginMethod, - /// Tells if the login device is EMM managed. Might be missing due to historical data gap. - pub is_emm_managed: Option, +pub struct NoExpirationLinkGenCreateReportDetails { + /// Report start date. + pub start_date: crate::types::common::DropboxTimestamp, + /// Report end date. + pub end_date: crate::types::common::DropboxTimestamp, } -impl LoginSuccessDetails { - pub fn new(login_method: LoginMethod) -> Self { - LoginSuccessDetails { - login_method, - is_emm_managed: None, +impl NoExpirationLinkGenCreateReportDetails { + pub fn new( + start_date: crate::types::common::DropboxTimestamp, + end_date: crate::types::common::DropboxTimestamp, + ) -> Self { + NoExpirationLinkGenCreateReportDetails { + start_date, + end_date, } } - - pub fn with_is_emm_managed(mut self, value: bool) -> Self { - self.is_emm_managed = Some(value); - self - } } -const LOGIN_SUCCESS_DETAILS_FIELDS: &[&str] = &["login_method", - "is_emm_managed"]; -impl LoginSuccessDetails { +const NO_EXPIRATION_LINK_GEN_CREATE_REPORT_DETAILS_FIELDS: &[&str] = &["start_date", + "end_date"]; +impl NoExpirationLinkGenCreateReportDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_login_method = None; - let mut field_is_emm_managed = None; + ) -> Result, V::Error> { + let mut field_start_date = None; + let mut field_end_date = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "login_method" => { - if field_login_method.is_some() { - return Err(::serde::de::Error::duplicate_field("login_method")); + "start_date" => { + if field_start_date.is_some() { + return Err(::serde::de::Error::duplicate_field("start_date")); } - field_login_method = Some(map.next_value()?); + field_start_date = Some(map.next_value()?); } - "is_emm_managed" => { - if field_is_emm_managed.is_some() { - return Err(::serde::de::Error::duplicate_field("is_emm_managed")); + "end_date" => { + if field_end_date.is_some() { + return Err(::serde::de::Error::duplicate_field("end_date")); } - field_is_emm_managed = Some(map.next_value()?); + field_end_date = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -59182,9 +81066,9 @@ impl LoginSuccessDetails { if optional && nothing { return Ok(None); } - let result = LoginSuccessDetails { - login_method: field_login_method.ok_or_else(|| ::serde::de::Error::missing_field("login_method"))?, - is_emm_managed: field_is_emm_managed.and_then(Option::flatten), + let result = NoExpirationLinkGenCreateReportDetails { + start_date: field_start_date.ok_or_else(|| ::serde::de::Error::missing_field("start_date"))?, + end_date: field_end_date.ok_or_else(|| ::serde::de::Error::missing_field("end_date"))?, }; Ok(Some(result)) } @@ -59194,37 +81078,35 @@ impl LoginSuccessDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("login_method", &self.login_method)?; - if let Some(val) = &self.is_emm_managed { - s.serialize_field("is_emm_managed", val)?; - } + s.serialize_field("start_date", &self.start_date)?; + s.serialize_field("end_date", &self.end_date)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for LoginSuccessDetails { +impl<'de> ::serde::de::Deserialize<'de> for NoExpirationLinkGenCreateReportDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = LoginSuccessDetails; + type Value = NoExpirationLinkGenCreateReportDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a LoginSuccessDetails struct") + f.write_str("a NoExpirationLinkGenCreateReportDetails struct") } fn visit_map>(self, map: V) -> Result { - LoginSuccessDetails::internal_deserialize(map) + NoExpirationLinkGenCreateReportDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("LoginSuccessDetails", LOGIN_SUCCESS_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("NoExpirationLinkGenCreateReportDetails", NO_EXPIRATION_LINK_GEN_CREATE_REPORT_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for LoginSuccessDetails { +impl ::serde::ser::Serialize for NoExpirationLinkGenCreateReportDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("LoginSuccessDetails", 2)?; + let mut s = serializer.serialize_struct("NoExpirationLinkGenCreateReportDetails", 2)?; self.internal_serialize::(&mut s)?; s.end() } @@ -59232,30 +81114,30 @@ impl ::serde::ser::Serialize for LoginSuccessDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct LoginSuccessType { +pub struct NoExpirationLinkGenCreateReportType { pub description: String, } -impl LoginSuccessType { +impl NoExpirationLinkGenCreateReportType { pub fn new(description: String) -> Self { - LoginSuccessType { + NoExpirationLinkGenCreateReportType { description, } } } -const LOGIN_SUCCESS_TYPE_FIELDS: &[&str] = &["description"]; -impl LoginSuccessType { +const NO_EXPIRATION_LINK_GEN_CREATE_REPORT_TYPE_FIELDS: &[&str] = &["description"]; +impl NoExpirationLinkGenCreateReportType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -59276,7 +81158,7 @@ impl LoginSuccessType { if optional && nothing { return Ok(None); } - let result = LoginSuccessType { + let result = NoExpirationLinkGenCreateReportType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -59292,63 +81174,72 @@ impl LoginSuccessType { } } -impl<'de> ::serde::de::Deserialize<'de> for LoginSuccessType { +impl<'de> ::serde::de::Deserialize<'de> for NoExpirationLinkGenCreateReportType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = LoginSuccessType; + type Value = NoExpirationLinkGenCreateReportType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a LoginSuccessType struct") + f.write_str("a NoExpirationLinkGenCreateReportType struct") } fn visit_map>(self, map: V) -> Result { - LoginSuccessType::internal_deserialize(map) + NoExpirationLinkGenCreateReportType::internal_deserialize(map) } } - deserializer.deserialize_struct("LoginSuccessType", LOGIN_SUCCESS_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("NoExpirationLinkGenCreateReportType", NO_EXPIRATION_LINK_GEN_CREATE_REPORT_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for LoginSuccessType { +impl ::serde::ser::Serialize for NoExpirationLinkGenCreateReportType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("LoginSuccessType", 1)?; + let mut s = serializer.serialize_struct("NoExpirationLinkGenCreateReportType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Signed out. -#[derive(Debug, Clone, PartialEq, Eq, Default)] +/// Couldn't create report: Links created with no expiration. +#[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct LogoutDetails { - /// Login session id. - pub login_id: Option, +pub struct NoExpirationLinkGenReportFailedDetails { + /// Failure reason. + pub failure_reason: crate::types::team::TeamReportFailureReason, } -impl LogoutDetails { - pub fn with_login_id(mut self, value: String) -> Self { - self.login_id = Some(value); - self +impl NoExpirationLinkGenReportFailedDetails { + pub fn new(failure_reason: crate::types::team::TeamReportFailureReason) -> Self { + NoExpirationLinkGenReportFailedDetails { + failure_reason, + } } } -const LOGOUT_DETAILS_FIELDS: &[&str] = &["login_id"]; -impl LogoutDetails { - // no _opt deserializer +const NO_EXPIRATION_LINK_GEN_REPORT_FAILED_DETAILS_FIELDS: &[&str] = &["failure_reason"]; +impl NoExpirationLinkGenReportFailedDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - ) -> Result { - let mut field_login_id = None; + optional: bool, + ) -> Result, V::Error> { + let mut field_failure_reason = None; + let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { + nothing = false; match key { - "login_id" => { - if field_login_id.is_some() { - return Err(::serde::de::Error::duplicate_field("login_id")); + "failure_reason" => { + if field_failure_reason.is_some() { + return Err(::serde::de::Error::duplicate_field("failure_reason")); } - field_login_id = Some(map.next_value()?); + field_failure_reason = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -59356,10 +81247,13 @@ impl LogoutDetails { } } } - let result = LogoutDetails { - login_id: field_login_id.and_then(Option::flatten), + if optional && nothing { + return Ok(None); + } + let result = NoExpirationLinkGenReportFailedDetails { + failure_reason: field_failure_reason.ok_or_else(|| ::serde::de::Error::missing_field("failure_reason"))?, }; - Ok(result) + Ok(Some(result)) } pub(crate) fn internal_serialize( @@ -59367,36 +81261,34 @@ impl LogoutDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - if let Some(val) = &self.login_id { - s.serialize_field("login_id", val)?; - } + s.serialize_field("failure_reason", &self.failure_reason)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for LogoutDetails { +impl<'de> ::serde::de::Deserialize<'de> for NoExpirationLinkGenReportFailedDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = LogoutDetails; + type Value = NoExpirationLinkGenReportFailedDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a LogoutDetails struct") + f.write_str("a NoExpirationLinkGenReportFailedDetails struct") } fn visit_map>(self, map: V) -> Result { - LogoutDetails::internal_deserialize(map) + NoExpirationLinkGenReportFailedDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("LogoutDetails", LOGOUT_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("NoExpirationLinkGenReportFailedDetails", NO_EXPIRATION_LINK_GEN_REPORT_FAILED_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for LogoutDetails { +impl ::serde::ser::Serialize for NoExpirationLinkGenReportFailedDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("LogoutDetails", 1)?; + let mut s = serializer.serialize_struct("NoExpirationLinkGenReportFailedDetails", 1)?; self.internal_serialize::(&mut s)?; s.end() } @@ -59404,30 +81296,30 @@ impl ::serde::ser::Serialize for LogoutDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct LogoutType { +pub struct NoExpirationLinkGenReportFailedType { pub description: String, } -impl LogoutType { +impl NoExpirationLinkGenReportFailedType { pub fn new(description: String) -> Self { - LogoutType { + NoExpirationLinkGenReportFailedType { description, } } } -const LOGOUT_TYPE_FIELDS: &[&str] = &["description"]; -impl LogoutType { +const NO_EXPIRATION_LINK_GEN_REPORT_FAILED_TYPE_FIELDS: &[&str] = &["description"]; +impl NoExpirationLinkGenReportFailedType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -59448,7 +81340,7 @@ impl LogoutType { if optional && nothing { return Ok(None); } - let result = LogoutType { + let result = NoExpirationLinkGenReportFailedType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -59464,72 +81356,86 @@ impl LogoutType { } } -impl<'de> ::serde::de::Deserialize<'de> for LogoutType { +impl<'de> ::serde::de::Deserialize<'de> for NoExpirationLinkGenReportFailedType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = LogoutType; + type Value = NoExpirationLinkGenReportFailedType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a LogoutType struct") + f.write_str("a NoExpirationLinkGenReportFailedType struct") } fn visit_map>(self, map: V) -> Result { - LogoutType::internal_deserialize(map) + NoExpirationLinkGenReportFailedType::internal_deserialize(map) } } - deserializer.deserialize_struct("LogoutType", LOGOUT_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("NoExpirationLinkGenReportFailedType", NO_EXPIRATION_LINK_GEN_REPORT_FAILED_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for LogoutType { +impl ::serde::ser::Serialize for NoExpirationLinkGenReportFailedType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("LogoutType", 1)?; + let mut s = serializer.serialize_struct("NoExpirationLinkGenReportFailedType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Added an external ID for team member. +/// Report created: Links created without passwords. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct MemberAddExternalIdDetails { - /// Current external id. - pub new_value: crate::types::team_common::MemberExternalId, +pub struct NoPasswordLinkGenCreateReportDetails { + /// Report start date. + pub start_date: crate::types::common::DropboxTimestamp, + /// Report end date. + pub end_date: crate::types::common::DropboxTimestamp, } -impl MemberAddExternalIdDetails { - pub fn new(new_value: crate::types::team_common::MemberExternalId) -> Self { - MemberAddExternalIdDetails { - new_value, +impl NoPasswordLinkGenCreateReportDetails { + pub fn new( + start_date: crate::types::common::DropboxTimestamp, + end_date: crate::types::common::DropboxTimestamp, + ) -> Self { + NoPasswordLinkGenCreateReportDetails { + start_date, + end_date, } } } -const MEMBER_ADD_EXTERNAL_ID_DETAILS_FIELDS: &[&str] = &["new_value"]; -impl MemberAddExternalIdDetails { +const NO_PASSWORD_LINK_GEN_CREATE_REPORT_DETAILS_FIELDS: &[&str] = &["start_date", + "end_date"]; +impl NoPasswordLinkGenCreateReportDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_new_value = None; + ) -> Result, V::Error> { + let mut field_start_date = None; + let mut field_end_date = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "new_value" => { - if field_new_value.is_some() { - return Err(::serde::de::Error::duplicate_field("new_value")); + "start_date" => { + if field_start_date.is_some() { + return Err(::serde::de::Error::duplicate_field("start_date")); } - field_new_value = Some(map.next_value()?); + field_start_date = Some(map.next_value()?); + } + "end_date" => { + if field_end_date.is_some() { + return Err(::serde::de::Error::duplicate_field("end_date")); + } + field_end_date = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -59540,8 +81446,9 @@ impl MemberAddExternalIdDetails { if optional && nothing { return Ok(None); } - let result = MemberAddExternalIdDetails { - new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, + let result = NoPasswordLinkGenCreateReportDetails { + start_date: field_start_date.ok_or_else(|| ::serde::de::Error::missing_field("start_date"))?, + end_date: field_end_date.ok_or_else(|| ::serde::de::Error::missing_field("end_date"))?, }; Ok(Some(result)) } @@ -59551,34 +81458,35 @@ impl MemberAddExternalIdDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("new_value", &self.new_value)?; + s.serialize_field("start_date", &self.start_date)?; + s.serialize_field("end_date", &self.end_date)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for MemberAddExternalIdDetails { +impl<'de> ::serde::de::Deserialize<'de> for NoPasswordLinkGenCreateReportDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = MemberAddExternalIdDetails; + type Value = NoPasswordLinkGenCreateReportDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a MemberAddExternalIdDetails struct") + f.write_str("a NoPasswordLinkGenCreateReportDetails struct") } fn visit_map>(self, map: V) -> Result { - MemberAddExternalIdDetails::internal_deserialize(map) + NoPasswordLinkGenCreateReportDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("MemberAddExternalIdDetails", MEMBER_ADD_EXTERNAL_ID_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("NoPasswordLinkGenCreateReportDetails", NO_PASSWORD_LINK_GEN_CREATE_REPORT_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for MemberAddExternalIdDetails { +impl ::serde::ser::Serialize for NoPasswordLinkGenCreateReportDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("MemberAddExternalIdDetails", 1)?; + let mut s = serializer.serialize_struct("NoPasswordLinkGenCreateReportDetails", 2)?; self.internal_serialize::(&mut s)?; s.end() } @@ -59586,30 +81494,30 @@ impl ::serde::ser::Serialize for MemberAddExternalIdDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct MemberAddExternalIdType { +pub struct NoPasswordLinkGenCreateReportType { pub description: String, } -impl MemberAddExternalIdType { +impl NoPasswordLinkGenCreateReportType { pub fn new(description: String) -> Self { - MemberAddExternalIdType { + NoPasswordLinkGenCreateReportType { description, } } } -const MEMBER_ADD_EXTERNAL_ID_TYPE_FIELDS: &[&str] = &["description"]; -impl MemberAddExternalIdType { +const NO_PASSWORD_LINK_GEN_CREATE_REPORT_TYPE_FIELDS: &[&str] = &["description"]; +impl NoPasswordLinkGenCreateReportType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -59630,7 +81538,7 @@ impl MemberAddExternalIdType { if optional && nothing { return Ok(None); } - let result = MemberAddExternalIdType { + let result = NoPasswordLinkGenCreateReportType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -59646,72 +81554,72 @@ impl MemberAddExternalIdType { } } -impl<'de> ::serde::de::Deserialize<'de> for MemberAddExternalIdType { +impl<'de> ::serde::de::Deserialize<'de> for NoPasswordLinkGenCreateReportType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = MemberAddExternalIdType; + type Value = NoPasswordLinkGenCreateReportType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a MemberAddExternalIdType struct") + f.write_str("a NoPasswordLinkGenCreateReportType struct") } fn visit_map>(self, map: V) -> Result { - MemberAddExternalIdType::internal_deserialize(map) + NoPasswordLinkGenCreateReportType::internal_deserialize(map) } } - deserializer.deserialize_struct("MemberAddExternalIdType", MEMBER_ADD_EXTERNAL_ID_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("NoPasswordLinkGenCreateReportType", NO_PASSWORD_LINK_GEN_CREATE_REPORT_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for MemberAddExternalIdType { +impl ::serde::ser::Serialize for NoPasswordLinkGenCreateReportType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("MemberAddExternalIdType", 1)?; + let mut s = serializer.serialize_struct("NoPasswordLinkGenCreateReportType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Added team member name. +/// Couldn't create report: Links created without passwords. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct MemberAddNameDetails { - /// New user's name. - pub new_value: UserNameLogInfo, +pub struct NoPasswordLinkGenReportFailedDetails { + /// Failure reason. + pub failure_reason: crate::types::team::TeamReportFailureReason, } -impl MemberAddNameDetails { - pub fn new(new_value: UserNameLogInfo) -> Self { - MemberAddNameDetails { - new_value, +impl NoPasswordLinkGenReportFailedDetails { + pub fn new(failure_reason: crate::types::team::TeamReportFailureReason) -> Self { + NoPasswordLinkGenReportFailedDetails { + failure_reason, } } } -const MEMBER_ADD_NAME_DETAILS_FIELDS: &[&str] = &["new_value"]; -impl MemberAddNameDetails { +const NO_PASSWORD_LINK_GEN_REPORT_FAILED_DETAILS_FIELDS: &[&str] = &["failure_reason"]; +impl NoPasswordLinkGenReportFailedDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_new_value = None; + ) -> Result, V::Error> { + let mut field_failure_reason = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "new_value" => { - if field_new_value.is_some() { - return Err(::serde::de::Error::duplicate_field("new_value")); + "failure_reason" => { + if field_failure_reason.is_some() { + return Err(::serde::de::Error::duplicate_field("failure_reason")); } - field_new_value = Some(map.next_value()?); + field_failure_reason = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -59722,8 +81630,8 @@ impl MemberAddNameDetails { if optional && nothing { return Ok(None); } - let result = MemberAddNameDetails { - new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, + let result = NoPasswordLinkGenReportFailedDetails { + failure_reason: field_failure_reason.ok_or_else(|| ::serde::de::Error::missing_field("failure_reason"))?, }; Ok(Some(result)) } @@ -59733,34 +81641,34 @@ impl MemberAddNameDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("new_value", &self.new_value)?; + s.serialize_field("failure_reason", &self.failure_reason)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for MemberAddNameDetails { +impl<'de> ::serde::de::Deserialize<'de> for NoPasswordLinkGenReportFailedDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = MemberAddNameDetails; + type Value = NoPasswordLinkGenReportFailedDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a MemberAddNameDetails struct") + f.write_str("a NoPasswordLinkGenReportFailedDetails struct") } fn visit_map>(self, map: V) -> Result { - MemberAddNameDetails::internal_deserialize(map) + NoPasswordLinkGenReportFailedDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("MemberAddNameDetails", MEMBER_ADD_NAME_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("NoPasswordLinkGenReportFailedDetails", NO_PASSWORD_LINK_GEN_REPORT_FAILED_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for MemberAddNameDetails { +impl ::serde::ser::Serialize for NoPasswordLinkGenReportFailedDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("MemberAddNameDetails", 1)?; + let mut s = serializer.serialize_struct("NoPasswordLinkGenReportFailedDetails", 1)?; self.internal_serialize::(&mut s)?; s.end() } @@ -59768,30 +81676,30 @@ impl ::serde::ser::Serialize for MemberAddNameDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct MemberAddNameType { +pub struct NoPasswordLinkGenReportFailedType { pub description: String, } -impl MemberAddNameType { +impl NoPasswordLinkGenReportFailedType { pub fn new(description: String) -> Self { - MemberAddNameType { + NoPasswordLinkGenReportFailedType { description, } } } -const MEMBER_ADD_NAME_TYPE_FIELDS: &[&str] = &["description"]; -impl MemberAddNameType { +const NO_PASSWORD_LINK_GEN_REPORT_FAILED_TYPE_FIELDS: &[&str] = &["description"]; +impl NoPasswordLinkGenReportFailedType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -59812,7 +81720,7 @@ impl MemberAddNameType { if optional && nothing { return Ok(None); } - let result = MemberAddNameType { + let result = NoPasswordLinkGenReportFailedType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -59828,80 +81736,86 @@ impl MemberAddNameType { } } -impl<'de> ::serde::de::Deserialize<'de> for MemberAddNameType { +impl<'de> ::serde::de::Deserialize<'de> for NoPasswordLinkGenReportFailedType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = MemberAddNameType; + type Value = NoPasswordLinkGenReportFailedType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a MemberAddNameType struct") + f.write_str("a NoPasswordLinkGenReportFailedType struct") } fn visit_map>(self, map: V) -> Result { - MemberAddNameType::internal_deserialize(map) + NoPasswordLinkGenReportFailedType::internal_deserialize(map) } } - deserializer.deserialize_struct("MemberAddNameType", MEMBER_ADD_NAME_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("NoPasswordLinkGenReportFailedType", NO_PASSWORD_LINK_GEN_REPORT_FAILED_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for MemberAddNameType { +impl ::serde::ser::Serialize for NoPasswordLinkGenReportFailedType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("MemberAddNameType", 1)?; + let mut s = serializer.serialize_struct("NoPasswordLinkGenReportFailedType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Changed team member admin role. -#[derive(Debug, Clone, PartialEq, Eq, Default)] +/// Report created: Views of links without passwords. +#[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct MemberChangeAdminRoleDetails { - /// New admin role. This field is relevant when the admin role is changed or whenthe user role - /// changes from no admin rights to with admin rights. - pub new_value: Option, - /// Previous admin role. This field is relevant when the admin role is changed or when the admin - /// role is removed. - pub previous_value: Option, +pub struct NoPasswordLinkViewCreateReportDetails { + /// Report start date. + pub start_date: crate::types::common::DropboxTimestamp, + /// Report end date. + pub end_date: crate::types::common::DropboxTimestamp, } -impl MemberChangeAdminRoleDetails { - pub fn with_new_value(mut self, value: AdminRole) -> Self { - self.new_value = Some(value); - self +impl NoPasswordLinkViewCreateReportDetails { + pub fn new( + start_date: crate::types::common::DropboxTimestamp, + end_date: crate::types::common::DropboxTimestamp, + ) -> Self { + NoPasswordLinkViewCreateReportDetails { + start_date, + end_date, + } } +} - pub fn with_previous_value(mut self, value: AdminRole) -> Self { - self.previous_value = Some(value); - self +const NO_PASSWORD_LINK_VIEW_CREATE_REPORT_DETAILS_FIELDS: &[&str] = &["start_date", + "end_date"]; +impl NoPasswordLinkViewCreateReportDetails { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) } -} -const MEMBER_CHANGE_ADMIN_ROLE_DETAILS_FIELDS: &[&str] = &["new_value", - "previous_value"]; -impl MemberChangeAdminRoleDetails { - // no _opt deserializer - pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - ) -> Result { - let mut field_new_value = None; - let mut field_previous_value = None; + optional: bool, + ) -> Result, V::Error> { + let mut field_start_date = None; + let mut field_end_date = None; + let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { + nothing = false; match key { - "new_value" => { - if field_new_value.is_some() { - return Err(::serde::de::Error::duplicate_field("new_value")); + "start_date" => { + if field_start_date.is_some() { + return Err(::serde::de::Error::duplicate_field("start_date")); } - field_new_value = Some(map.next_value()?); + field_start_date = Some(map.next_value()?); } - "previous_value" => { - if field_previous_value.is_some() { - return Err(::serde::de::Error::duplicate_field("previous_value")); + "end_date" => { + if field_end_date.is_some() { + return Err(::serde::de::Error::duplicate_field("end_date")); } - field_previous_value = Some(map.next_value()?); + field_end_date = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -59909,11 +81823,14 @@ impl MemberChangeAdminRoleDetails { } } } - let result = MemberChangeAdminRoleDetails { - new_value: field_new_value.and_then(Option::flatten), - previous_value: field_previous_value.and_then(Option::flatten), + if optional && nothing { + return Ok(None); + } + let result = NoPasswordLinkViewCreateReportDetails { + start_date: field_start_date.ok_or_else(|| ::serde::de::Error::missing_field("start_date"))?, + end_date: field_end_date.ok_or_else(|| ::serde::de::Error::missing_field("end_date"))?, }; - Ok(result) + Ok(Some(result)) } pub(crate) fn internal_serialize( @@ -59921,39 +81838,35 @@ impl MemberChangeAdminRoleDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - if let Some(val) = &self.new_value { - s.serialize_field("new_value", val)?; - } - if let Some(val) = &self.previous_value { - s.serialize_field("previous_value", val)?; - } + s.serialize_field("start_date", &self.start_date)?; + s.serialize_field("end_date", &self.end_date)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for MemberChangeAdminRoleDetails { +impl<'de> ::serde::de::Deserialize<'de> for NoPasswordLinkViewCreateReportDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = MemberChangeAdminRoleDetails; + type Value = NoPasswordLinkViewCreateReportDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a MemberChangeAdminRoleDetails struct") + f.write_str("a NoPasswordLinkViewCreateReportDetails struct") } fn visit_map>(self, map: V) -> Result { - MemberChangeAdminRoleDetails::internal_deserialize(map) + NoPasswordLinkViewCreateReportDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("MemberChangeAdminRoleDetails", MEMBER_CHANGE_ADMIN_ROLE_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("NoPasswordLinkViewCreateReportDetails", NO_PASSWORD_LINK_VIEW_CREATE_REPORT_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for MemberChangeAdminRoleDetails { +impl ::serde::ser::Serialize for NoPasswordLinkViewCreateReportDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("MemberChangeAdminRoleDetails", 2)?; + let mut s = serializer.serialize_struct("NoPasswordLinkViewCreateReportDetails", 2)?; self.internal_serialize::(&mut s)?; s.end() } @@ -59961,30 +81874,30 @@ impl ::serde::ser::Serialize for MemberChangeAdminRoleDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct MemberChangeAdminRoleType { +pub struct NoPasswordLinkViewCreateReportType { pub description: String, } -impl MemberChangeAdminRoleType { +impl NoPasswordLinkViewCreateReportType { pub fn new(description: String) -> Self { - MemberChangeAdminRoleType { + NoPasswordLinkViewCreateReportType { description, } } } -const MEMBER_CHANGE_ADMIN_ROLE_TYPE_FIELDS: &[&str] = &["description"]; -impl MemberChangeAdminRoleType { +const NO_PASSWORD_LINK_VIEW_CREATE_REPORT_TYPE_FIELDS: &[&str] = &["description"]; +impl NoPasswordLinkViewCreateReportType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -60005,7 +81918,7 @@ impl MemberChangeAdminRoleType { if optional && nothing { return Ok(None); } - let result = MemberChangeAdminRoleType { + let result = NoPasswordLinkViewCreateReportType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -60021,88 +81934,72 @@ impl MemberChangeAdminRoleType { } } -impl<'de> ::serde::de::Deserialize<'de> for MemberChangeAdminRoleType { +impl<'de> ::serde::de::Deserialize<'de> for NoPasswordLinkViewCreateReportType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = MemberChangeAdminRoleType; + type Value = NoPasswordLinkViewCreateReportType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a MemberChangeAdminRoleType struct") + f.write_str("a NoPasswordLinkViewCreateReportType struct") } fn visit_map>(self, map: V) -> Result { - MemberChangeAdminRoleType::internal_deserialize(map) + NoPasswordLinkViewCreateReportType::internal_deserialize(map) } } - deserializer.deserialize_struct("MemberChangeAdminRoleType", MEMBER_CHANGE_ADMIN_ROLE_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("NoPasswordLinkViewCreateReportType", NO_PASSWORD_LINK_VIEW_CREATE_REPORT_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for MemberChangeAdminRoleType { +impl ::serde::ser::Serialize for NoPasswordLinkViewCreateReportType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("MemberChangeAdminRoleType", 1)?; + let mut s = serializer.serialize_struct("NoPasswordLinkViewCreateReportType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Changed team member email. +/// Couldn't create report: Views of links without passwords. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct MemberChangeEmailDetails { - /// New email. - pub new_value: EmailAddress, - /// Previous email. Might be missing due to historical data gap. - pub previous_value: Option, +pub struct NoPasswordLinkViewReportFailedDetails { + /// Failure reason. + pub failure_reason: crate::types::team::TeamReportFailureReason, } -impl MemberChangeEmailDetails { - pub fn new(new_value: EmailAddress) -> Self { - MemberChangeEmailDetails { - new_value, - previous_value: None, +impl NoPasswordLinkViewReportFailedDetails { + pub fn new(failure_reason: crate::types::team::TeamReportFailureReason) -> Self { + NoPasswordLinkViewReportFailedDetails { + failure_reason, } } - - pub fn with_previous_value(mut self, value: EmailAddress) -> Self { - self.previous_value = Some(value); - self - } } -const MEMBER_CHANGE_EMAIL_DETAILS_FIELDS: &[&str] = &["new_value", - "previous_value"]; -impl MemberChangeEmailDetails { +const NO_PASSWORD_LINK_VIEW_REPORT_FAILED_DETAILS_FIELDS: &[&str] = &["failure_reason"]; +impl NoPasswordLinkViewReportFailedDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_new_value = None; - let mut field_previous_value = None; + ) -> Result, V::Error> { + let mut field_failure_reason = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "new_value" => { - if field_new_value.is_some() { - return Err(::serde::de::Error::duplicate_field("new_value")); - } - field_new_value = Some(map.next_value()?); - } - "previous_value" => { - if field_previous_value.is_some() { - return Err(::serde::de::Error::duplicate_field("previous_value")); + "failure_reason" => { + if field_failure_reason.is_some() { + return Err(::serde::de::Error::duplicate_field("failure_reason")); } - field_previous_value = Some(map.next_value()?); + field_failure_reason = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -60113,9 +82010,8 @@ impl MemberChangeEmailDetails { if optional && nothing { return Ok(None); } - let result = MemberChangeEmailDetails { - new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, - previous_value: field_previous_value.and_then(Option::flatten), + let result = NoPasswordLinkViewReportFailedDetails { + failure_reason: field_failure_reason.ok_or_else(|| ::serde::de::Error::missing_field("failure_reason"))?, }; Ok(Some(result)) } @@ -60125,37 +82021,34 @@ impl MemberChangeEmailDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("new_value", &self.new_value)?; - if let Some(val) = &self.previous_value { - s.serialize_field("previous_value", val)?; - } + s.serialize_field("failure_reason", &self.failure_reason)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for MemberChangeEmailDetails { +impl<'de> ::serde::de::Deserialize<'de> for NoPasswordLinkViewReportFailedDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = MemberChangeEmailDetails; + type Value = NoPasswordLinkViewReportFailedDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a MemberChangeEmailDetails struct") + f.write_str("a NoPasswordLinkViewReportFailedDetails struct") } fn visit_map>(self, map: V) -> Result { - MemberChangeEmailDetails::internal_deserialize(map) + NoPasswordLinkViewReportFailedDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("MemberChangeEmailDetails", MEMBER_CHANGE_EMAIL_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("NoPasswordLinkViewReportFailedDetails", NO_PASSWORD_LINK_VIEW_REPORT_FAILED_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for MemberChangeEmailDetails { +impl ::serde::ser::Serialize for NoPasswordLinkViewReportFailedDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("MemberChangeEmailDetails", 2)?; + let mut s = serializer.serialize_struct("NoPasswordLinkViewReportFailedDetails", 1)?; self.internal_serialize::(&mut s)?; s.end() } @@ -60163,30 +82056,30 @@ impl ::serde::ser::Serialize for MemberChangeEmailDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct MemberChangeEmailType { +pub struct NoPasswordLinkViewReportFailedType { pub description: String, } -impl MemberChangeEmailType { +impl NoPasswordLinkViewReportFailedType { pub fn new(description: String) -> Self { - MemberChangeEmailType { + NoPasswordLinkViewReportFailedType { description, } } } -const MEMBER_CHANGE_EMAIL_TYPE_FIELDS: &[&str] = &["description"]; -impl MemberChangeEmailType { +const NO_PASSWORD_LINK_VIEW_REPORT_FAILED_TYPE_FIELDS: &[&str] = &["description"]; +impl NoPasswordLinkViewReportFailedType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -60207,7 +82100,7 @@ impl MemberChangeEmailType { if optional && nothing { return Ok(None); } - let result = MemberChangeEmailType { + let result = NoPasswordLinkViewReportFailedType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -60223,86 +82116,93 @@ impl MemberChangeEmailType { } } -impl<'de> ::serde::de::Deserialize<'de> for MemberChangeEmailType { +impl<'de> ::serde::de::Deserialize<'de> for NoPasswordLinkViewReportFailedType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = MemberChangeEmailType; + type Value = NoPasswordLinkViewReportFailedType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a MemberChangeEmailType struct") + f.write_str("a NoPasswordLinkViewReportFailedType struct") } fn visit_map>(self, map: V) -> Result { - MemberChangeEmailType::internal_deserialize(map) + NoPasswordLinkViewReportFailedType::internal_deserialize(map) } } - deserializer.deserialize_struct("MemberChangeEmailType", MEMBER_CHANGE_EMAIL_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("NoPasswordLinkViewReportFailedType", NO_PASSWORD_LINK_VIEW_REPORT_FAILED_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for MemberChangeEmailType { +impl ::serde::ser::Serialize for NoPasswordLinkViewReportFailedType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("MemberChangeEmailType", 1)?; + let mut s = serializer.serialize_struct("NoPasswordLinkViewReportFailedType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Changed the external ID for team member. -#[derive(Debug, Clone, PartialEq, Eq)] +/// Non team member's logged information. +#[derive(Debug, Clone, PartialEq, Eq, Default)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct MemberChangeExternalIdDetails { - /// Current external id. - pub new_value: crate::types::team_common::MemberExternalId, - /// Old external id. - pub previous_value: crate::types::team_common::MemberExternalId, +pub struct NonTeamMemberLogInfo { + /// User unique ID. + pub account_id: Option, + /// User display name. + pub display_name: Option, + /// User email address. + pub email: Option, } -impl MemberChangeExternalIdDetails { - pub fn new( - new_value: crate::types::team_common::MemberExternalId, - previous_value: crate::types::team_common::MemberExternalId, - ) -> Self { - MemberChangeExternalIdDetails { - new_value, - previous_value, - } +impl NonTeamMemberLogInfo { + pub fn with_account_id(mut self, value: crate::types::users_common::AccountId) -> Self { + self.account_id = Some(value); + self } -} -const MEMBER_CHANGE_EXTERNAL_ID_DETAILS_FIELDS: &[&str] = &["new_value", - "previous_value"]; -impl MemberChangeExternalIdDetails { - pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( - map: V, - ) -> Result { - Self::internal_deserialize_opt(map, false).map(Option::unwrap) + pub fn with_display_name(mut self, value: crate::types::common::DisplayNameLegacy) -> Self { + self.display_name = Some(value); + self } - pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + pub fn with_email(mut self, value: EmailAddress) -> Self { + self.email = Some(value); + self + } +} + +const NON_TEAM_MEMBER_LOG_INFO_FIELDS: &[&str] = &["account_id", + "display_name", + "email"]; +impl NonTeamMemberLogInfo { + // no _opt deserializer + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - optional: bool, - ) -> Result, V::Error> { - let mut field_new_value = None; - let mut field_previous_value = None; - let mut nothing = true; + ) -> Result { + let mut field_account_id = None; + let mut field_display_name = None; + let mut field_email = None; while let Some(key) = map.next_key::<&str>()? { - nothing = false; match key { - "new_value" => { - if field_new_value.is_some() { - return Err(::serde::de::Error::duplicate_field("new_value")); + "account_id" => { + if field_account_id.is_some() { + return Err(::serde::de::Error::duplicate_field("account_id")); } - field_new_value = Some(map.next_value()?); + field_account_id = Some(map.next_value()?); } - "previous_value" => { - if field_previous_value.is_some() { - return Err(::serde::de::Error::duplicate_field("previous_value")); + "display_name" => { + if field_display_name.is_some() { + return Err(::serde::de::Error::duplicate_field("display_name")); } - field_previous_value = Some(map.next_value()?); + field_display_name = Some(map.next_value()?); + } + "email" => { + if field_email.is_some() { + return Err(::serde::de::Error::duplicate_field("email")); + } + field_email = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -60310,14 +82210,12 @@ impl MemberChangeExternalIdDetails { } } } - if optional && nothing { - return Ok(None); - } - let result = MemberChangeExternalIdDetails { - new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, - previous_value: field_previous_value.ok_or_else(|| ::serde::de::Error::missing_field("previous_value"))?, + let result = NonTeamMemberLogInfo { + account_id: field_account_id.and_then(Option::flatten), + display_name: field_display_name.and_then(Option::flatten), + email: field_email.and_then(Option::flatten), }; - Ok(Some(result)) + Ok(result) } pub(crate) fn internal_serialize( @@ -60325,76 +82223,91 @@ impl MemberChangeExternalIdDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("new_value", &self.new_value)?; - s.serialize_field("previous_value", &self.previous_value)?; + if let Some(val) = &self.account_id { + s.serialize_field("account_id", val)?; + } + if let Some(val) = &self.display_name { + s.serialize_field("display_name", val)?; + } + if let Some(val) = &self.email { + s.serialize_field("email", val)?; + } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for MemberChangeExternalIdDetails { +impl<'de> ::serde::de::Deserialize<'de> for NonTeamMemberLogInfo { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = MemberChangeExternalIdDetails; + type Value = NonTeamMemberLogInfo; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a MemberChangeExternalIdDetails struct") + f.write_str("a NonTeamMemberLogInfo struct") } fn visit_map>(self, map: V) -> Result { - MemberChangeExternalIdDetails::internal_deserialize(map) + NonTeamMemberLogInfo::internal_deserialize(map) } } - deserializer.deserialize_struct("MemberChangeExternalIdDetails", MEMBER_CHANGE_EXTERNAL_ID_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("NonTeamMemberLogInfo", NON_TEAM_MEMBER_LOG_INFO_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for MemberChangeExternalIdDetails { +impl ::serde::ser::Serialize for NonTeamMemberLogInfo { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("MemberChangeExternalIdDetails", 2)?; + let mut s = serializer.serialize_struct("NonTeamMemberLogInfo", 3)?; self.internal_serialize::(&mut s)?; s.end() } } +// struct extends polymorphic struct UserLogInfo +impl From for UserLogInfo { + fn from(subtype: NonTeamMemberLogInfo) -> Self { + UserLogInfo::NonTeamMember(subtype) + } +} +/// The email to which the request was sent #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct MemberChangeExternalIdType { - pub description: String, +pub struct NonTrustedTeamDetails { + /// The email to which the request was sent. + pub team: String, } -impl MemberChangeExternalIdType { - pub fn new(description: String) -> Self { - MemberChangeExternalIdType { - description, +impl NonTrustedTeamDetails { + pub fn new(team: String) -> Self { + NonTrustedTeamDetails { + team, } } } -const MEMBER_CHANGE_EXTERNAL_ID_TYPE_FIELDS: &[&str] = &["description"]; -impl MemberChangeExternalIdType { +const NON_TRUSTED_TEAM_DETAILS_FIELDS: &[&str] = &["team"]; +impl NonTrustedTeamDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_description = None; + ) -> Result, V::Error> { + let mut field_team = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "description" => { - if field_description.is_some() { - return Err(::serde::de::Error::duplicate_field("description")); + "team" => { + if field_team.is_some() { + return Err(::serde::de::Error::duplicate_field("team")); } - field_description = Some(map.next_value()?); + field_team = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -60405,8 +82318,8 @@ impl MemberChangeExternalIdType { if optional && nothing { return Ok(None); } - let result = MemberChangeExternalIdType { - description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + let result = NonTrustedTeamDetails { + team: field_team.ok_or_else(|| ::serde::de::Error::missing_field("team"))?, }; Ok(Some(result)) } @@ -60416,88 +82329,119 @@ impl MemberChangeExternalIdType { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("description", &self.description)?; + s.serialize_field("team", &self.team)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for MemberChangeExternalIdType { +impl<'de> ::serde::de::Deserialize<'de> for NonTrustedTeamDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = MemberChangeExternalIdType; + type Value = NonTrustedTeamDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a MemberChangeExternalIdType struct") + f.write_str("a NonTrustedTeamDetails struct") } fn visit_map>(self, map: V) -> Result { - MemberChangeExternalIdType::internal_deserialize(map) + NonTrustedTeamDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("MemberChangeExternalIdType", MEMBER_CHANGE_EXTERNAL_ID_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("NonTrustedTeamDetails", NON_TRUSTED_TEAM_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for MemberChangeExternalIdType { +impl ::serde::ser::Serialize for NonTrustedTeamDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("MemberChangeExternalIdType", 1)?; + let mut s = serializer.serialize_struct("NonTrustedTeamDetails", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Changed membership type (limited/full) of member. +/// Changed Paper doc to invite-only. +#[derive(Debug, Clone, PartialEq, Eq, Default)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct NoteAclInviteOnlyDetails { +} + +const NOTE_ACL_INVITE_ONLY_DETAILS_FIELDS: &[&str] = &[]; +impl NoteAclInviteOnlyDetails { + // no _opt deserializer + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + ) -> Result { + // ignore any fields found; none are presently recognized + crate::eat_json_fields(&mut map)?; + Ok(NoteAclInviteOnlyDetails {}) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for NoteAclInviteOnlyDetails { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = NoteAclInviteOnlyDetails; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a NoteAclInviteOnlyDetails struct") + } + fn visit_map>(self, map: V) -> Result { + NoteAclInviteOnlyDetails::internal_deserialize(map) + } + } + deserializer.deserialize_struct("NoteAclInviteOnlyDetails", NOTE_ACL_INVITE_ONLY_DETAILS_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for NoteAclInviteOnlyDetails { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + serializer.serialize_struct("NoteAclInviteOnlyDetails", 0)?.end() + } +} + #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct MemberChangeMembershipTypeDetails { - /// Previous membership type. - pub prev_value: TeamMembershipType, - /// New membership type. - pub new_value: TeamMembershipType, +pub struct NoteAclInviteOnlyType { + pub description: String, } -impl MemberChangeMembershipTypeDetails { - pub fn new(prev_value: TeamMembershipType, new_value: TeamMembershipType) -> Self { - MemberChangeMembershipTypeDetails { - prev_value, - new_value, +impl NoteAclInviteOnlyType { + pub fn new(description: String) -> Self { + NoteAclInviteOnlyType { + description, } } } -const MEMBER_CHANGE_MEMBERSHIP_TYPE_DETAILS_FIELDS: &[&str] = &["prev_value", - "new_value"]; -impl MemberChangeMembershipTypeDetails { +const NOTE_ACL_INVITE_ONLY_TYPE_FIELDS: &[&str] = &["description"]; +impl NoteAclInviteOnlyType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_prev_value = None; - let mut field_new_value = None; + ) -> Result, V::Error> { + let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "prev_value" => { - if field_prev_value.is_some() { - return Err(::serde::de::Error::duplicate_field("prev_value")); - } - field_prev_value = Some(map.next_value()?); - } - "new_value" => { - if field_new_value.is_some() { - return Err(::serde::de::Error::duplicate_field("new_value")); + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); } - field_new_value = Some(map.next_value()?); + field_description = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -60508,78 +82452,120 @@ impl MemberChangeMembershipTypeDetails { if optional && nothing { return Ok(None); } - let result = MemberChangeMembershipTypeDetails { - prev_value: field_prev_value.ok_or_else(|| ::serde::de::Error::missing_field("prev_value"))?, - new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, + let result = NoteAclInviteOnlyType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) } - pub(crate) fn internal_serialize( - &self, - s: &mut S::SerializeStruct, - ) -> Result<(), S::Error> { - use serde::ser::SerializeStruct; - s.serialize_field("prev_value", &self.prev_value)?; - s.serialize_field("new_value", &self.new_value)?; - Ok(()) + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("description", &self.description)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for NoteAclInviteOnlyType { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = NoteAclInviteOnlyType; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a NoteAclInviteOnlyType struct") + } + fn visit_map>(self, map: V) -> Result { + NoteAclInviteOnlyType::internal_deserialize(map) + } + } + deserializer.deserialize_struct("NoteAclInviteOnlyType", NOTE_ACL_INVITE_ONLY_TYPE_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for NoteAclInviteOnlyType { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("NoteAclInviteOnlyType", 1)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +/// Changed Paper doc to link-accessible. +#[derive(Debug, Clone, PartialEq, Eq, Default)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct NoteAclLinkDetails { +} + +const NOTE_ACL_LINK_DETAILS_FIELDS: &[&str] = &[]; +impl NoteAclLinkDetails { + // no _opt deserializer + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + ) -> Result { + // ignore any fields found; none are presently recognized + crate::eat_json_fields(&mut map)?; + Ok(NoteAclLinkDetails {}) } } -impl<'de> ::serde::de::Deserialize<'de> for MemberChangeMembershipTypeDetails { +impl<'de> ::serde::de::Deserialize<'de> for NoteAclLinkDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = MemberChangeMembershipTypeDetails; + type Value = NoteAclLinkDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a MemberChangeMembershipTypeDetails struct") + f.write_str("a NoteAclLinkDetails struct") } fn visit_map>(self, map: V) -> Result { - MemberChangeMembershipTypeDetails::internal_deserialize(map) + NoteAclLinkDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("MemberChangeMembershipTypeDetails", MEMBER_CHANGE_MEMBERSHIP_TYPE_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("NoteAclLinkDetails", NOTE_ACL_LINK_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for MemberChangeMembershipTypeDetails { +impl ::serde::ser::Serialize for NoteAclLinkDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("MemberChangeMembershipTypeDetails", 2)?; - self.internal_serialize::(&mut s)?; - s.end() + serializer.serialize_struct("NoteAclLinkDetails", 0)?.end() } } #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct MemberChangeMembershipTypeType { +pub struct NoteAclLinkType { pub description: String, } -impl MemberChangeMembershipTypeType { +impl NoteAclLinkType { pub fn new(description: String) -> Self { - MemberChangeMembershipTypeType { + NoteAclLinkType { description, } } } -const MEMBER_CHANGE_MEMBERSHIP_TYPE_TYPE_FIELDS: &[&str] = &["description"]; -impl MemberChangeMembershipTypeType { +const NOTE_ACL_LINK_TYPE_FIELDS: &[&str] = &["description"]; +impl NoteAclLinkType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -60600,7 +82586,7 @@ impl MemberChangeMembershipTypeType { if optional && nothing { return Ok(None); } - let result = MemberChangeMembershipTypeType { + let result = NoteAclLinkType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -60616,88 +82602,114 @@ impl MemberChangeMembershipTypeType { } } -impl<'de> ::serde::de::Deserialize<'de> for MemberChangeMembershipTypeType { +impl<'de> ::serde::de::Deserialize<'de> for NoteAclLinkType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = MemberChangeMembershipTypeType; + type Value = NoteAclLinkType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a MemberChangeMembershipTypeType struct") + f.write_str("a NoteAclLinkType struct") } fn visit_map>(self, map: V) -> Result { - MemberChangeMembershipTypeType::internal_deserialize(map) + NoteAclLinkType::internal_deserialize(map) } } - deserializer.deserialize_struct("MemberChangeMembershipTypeType", MEMBER_CHANGE_MEMBERSHIP_TYPE_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("NoteAclLinkType", NOTE_ACL_LINK_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for MemberChangeMembershipTypeType { +impl ::serde::ser::Serialize for NoteAclLinkType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("MemberChangeMembershipTypeType", 1)?; + let mut s = serializer.serialize_struct("NoteAclLinkType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Changed team member name. -#[derive(Debug, Clone, PartialEq, Eq)] +/// Changed Paper doc to link-accessible for team. +#[derive(Debug, Clone, PartialEq, Eq, Default)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct MemberChangeNameDetails { - /// New user's name. - pub new_value: UserNameLogInfo, - /// Previous user's name. Might be missing due to historical data gap. - pub previous_value: Option, +pub struct NoteAclTeamLinkDetails { } -impl MemberChangeNameDetails { - pub fn new(new_value: UserNameLogInfo) -> Self { - MemberChangeNameDetails { - new_value, - previous_value: None, +const NOTE_ACL_TEAM_LINK_DETAILS_FIELDS: &[&str] = &[]; +impl NoteAclTeamLinkDetails { + // no _opt deserializer + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + ) -> Result { + // ignore any fields found; none are presently recognized + crate::eat_json_fields(&mut map)?; + Ok(NoteAclTeamLinkDetails {}) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for NoteAclTeamLinkDetails { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = NoteAclTeamLinkDetails; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a NoteAclTeamLinkDetails struct") + } + fn visit_map>(self, map: V) -> Result { + NoteAclTeamLinkDetails::internal_deserialize(map) + } } + deserializer.deserialize_struct("NoteAclTeamLinkDetails", NOTE_ACL_TEAM_LINK_DETAILS_FIELDS, StructVisitor) } +} - pub fn with_previous_value(mut self, value: UserNameLogInfo) -> Self { - self.previous_value = Some(value); - self +impl ::serde::ser::Serialize for NoteAclTeamLinkDetails { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + serializer.serialize_struct("NoteAclTeamLinkDetails", 0)?.end() } } -const MEMBER_CHANGE_NAME_DETAILS_FIELDS: &[&str] = &["new_value", - "previous_value"]; -impl MemberChangeNameDetails { +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct NoteAclTeamLinkType { + pub description: String, +} + +impl NoteAclTeamLinkType { + pub fn new(description: String) -> Self { + NoteAclTeamLinkType { + description, + } + } +} + +const NOTE_ACL_TEAM_LINK_TYPE_FIELDS: &[&str] = &["description"]; +impl NoteAclTeamLinkType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_new_value = None; - let mut field_previous_value = None; + ) -> Result, V::Error> { + let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "new_value" => { - if field_new_value.is_some() { - return Err(::serde::de::Error::duplicate_field("new_value")); - } - field_new_value = Some(map.next_value()?); - } - "previous_value" => { - if field_previous_value.is_some() { - return Err(::serde::de::Error::duplicate_field("previous_value")); + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); } - field_previous_value = Some(map.next_value()?); + field_description = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -60708,9 +82720,8 @@ impl MemberChangeNameDetails { if optional && nothing { return Ok(None); } - let result = MemberChangeNameDetails { - new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, - previous_value: field_previous_value.and_then(Option::flatten), + let result = NoteAclTeamLinkType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) } @@ -60720,68 +82731,109 @@ impl MemberChangeNameDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("new_value", &self.new_value)?; - if let Some(val) = &self.previous_value { - s.serialize_field("previous_value", val)?; - } + s.serialize_field("description", &self.description)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for MemberChangeNameDetails { +impl<'de> ::serde::de::Deserialize<'de> for NoteAclTeamLinkType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = MemberChangeNameDetails; + type Value = NoteAclTeamLinkType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a MemberChangeNameDetails struct") + f.write_str("a NoteAclTeamLinkType struct") } fn visit_map>(self, map: V) -> Result { - MemberChangeNameDetails::internal_deserialize(map) + NoteAclTeamLinkType::internal_deserialize(map) } } - deserializer.deserialize_struct("MemberChangeNameDetails", MEMBER_CHANGE_NAME_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("NoteAclTeamLinkType", NOTE_ACL_TEAM_LINK_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for MemberChangeNameDetails { +impl ::serde::ser::Serialize for NoteAclTeamLinkType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("MemberChangeNameDetails", 2)?; + let mut s = serializer.serialize_struct("NoteAclTeamLinkType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } +/// Shared received Paper doc. +#[derive(Debug, Clone, PartialEq, Eq, Default)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct NoteShareReceiveDetails { +} + +const NOTE_SHARE_RECEIVE_DETAILS_FIELDS: &[&str] = &[]; +impl NoteShareReceiveDetails { + // no _opt deserializer + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + ) -> Result { + // ignore any fields found; none are presently recognized + crate::eat_json_fields(&mut map)?; + Ok(NoteShareReceiveDetails {}) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for NoteShareReceiveDetails { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = NoteShareReceiveDetails; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a NoteShareReceiveDetails struct") + } + fn visit_map>(self, map: V) -> Result { + NoteShareReceiveDetails::internal_deserialize(map) + } + } + deserializer.deserialize_struct("NoteShareReceiveDetails", NOTE_SHARE_RECEIVE_DETAILS_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for NoteShareReceiveDetails { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + serializer.serialize_struct("NoteShareReceiveDetails", 0)?.end() + } +} + #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct MemberChangeNameType { +pub struct NoteShareReceiveType { pub description: String, } -impl MemberChangeNameType { +impl NoteShareReceiveType { pub fn new(description: String) -> Self { - MemberChangeNameType { + NoteShareReceiveType { description, } } } -const MEMBER_CHANGE_NAME_TYPE_FIELDS: &[&str] = &["description"]; -impl MemberChangeNameType { +const NOTE_SHARE_RECEIVE_TYPE_FIELDS: &[&str] = &["description"]; +impl NoteShareReceiveType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -60802,7 +82854,7 @@ impl MemberChangeNameType { if optional && nothing { return Ok(None); } - let result = MemberChangeNameType { + let result = NoteShareReceiveType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -60818,166 +82870,104 @@ impl MemberChangeNameType { } } -impl<'de> ::serde::de::Deserialize<'de> for MemberChangeNameType { +impl<'de> ::serde::de::Deserialize<'de> for NoteShareReceiveType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = MemberChangeNameType; + type Value = NoteShareReceiveType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a MemberChangeNameType struct") + f.write_str("a NoteShareReceiveType struct") } fn visit_map>(self, map: V) -> Result { - MemberChangeNameType::internal_deserialize(map) + NoteShareReceiveType::internal_deserialize(map) } } - deserializer.deserialize_struct("MemberChangeNameType", MEMBER_CHANGE_NAME_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("NoteShareReceiveType", NOTE_SHARE_RECEIVE_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for MemberChangeNameType { +impl ::serde::ser::Serialize for NoteShareReceiveType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("MemberChangeNameType", 1)?; + let mut s = serializer.serialize_struct("NoteShareReceiveType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Changed team member reseller role. -#[derive(Debug, Clone, PartialEq, Eq)] +/// Shared Paper doc. +#[derive(Debug, Clone, PartialEq, Eq, Default)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct MemberChangeResellerRoleDetails { - /// New reseller role. This field is relevant when the reseller role is changed. - pub new_value: ResellerRole, - /// Previous reseller role. This field is relevant when the reseller role is changed or when the - /// reseller role is removed. - pub previous_value: ResellerRole, -} - -impl MemberChangeResellerRoleDetails { - pub fn new(new_value: ResellerRole, previous_value: ResellerRole) -> Self { - MemberChangeResellerRoleDetails { - new_value, - previous_value, - } - } +pub struct NoteSharedDetails { } -const MEMBER_CHANGE_RESELLER_ROLE_DETAILS_FIELDS: &[&str] = &["new_value", - "previous_value"]; -impl MemberChangeResellerRoleDetails { +const NOTE_SHARED_DETAILS_FIELDS: &[&str] = &[]; +impl NoteSharedDetails { + // no _opt deserializer pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( - map: V, - ) -> Result { - Self::internal_deserialize_opt(map, false).map(Option::unwrap) - } - - pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - optional: bool, - ) -> Result, V::Error> { - let mut field_new_value = None; - let mut field_previous_value = None; - let mut nothing = true; - while let Some(key) = map.next_key::<&str>()? { - nothing = false; - match key { - "new_value" => { - if field_new_value.is_some() { - return Err(::serde::de::Error::duplicate_field("new_value")); - } - field_new_value = Some(map.next_value()?); - } - "previous_value" => { - if field_previous_value.is_some() { - return Err(::serde::de::Error::duplicate_field("previous_value")); - } - field_previous_value = Some(map.next_value()?); - } - _ => { - // unknown field allowed and ignored - map.next_value::<::serde_json::Value>()?; - } - } - } - if optional && nothing { - return Ok(None); - } - let result = MemberChangeResellerRoleDetails { - new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, - previous_value: field_previous_value.ok_or_else(|| ::serde::de::Error::missing_field("previous_value"))?, - }; - Ok(Some(result)) - } - - pub(crate) fn internal_serialize( - &self, - s: &mut S::SerializeStruct, - ) -> Result<(), S::Error> { - use serde::ser::SerializeStruct; - s.serialize_field("new_value", &self.new_value)?; - s.serialize_field("previous_value", &self.previous_value)?; - Ok(()) + ) -> Result { + // ignore any fields found; none are presently recognized + crate::eat_json_fields(&mut map)?; + Ok(NoteSharedDetails {}) } } -impl<'de> ::serde::de::Deserialize<'de> for MemberChangeResellerRoleDetails { +impl<'de> ::serde::de::Deserialize<'de> for NoteSharedDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = MemberChangeResellerRoleDetails; + type Value = NoteSharedDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a MemberChangeResellerRoleDetails struct") + f.write_str("a NoteSharedDetails struct") } fn visit_map>(self, map: V) -> Result { - MemberChangeResellerRoleDetails::internal_deserialize(map) + NoteSharedDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("MemberChangeResellerRoleDetails", MEMBER_CHANGE_RESELLER_ROLE_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("NoteSharedDetails", NOTE_SHARED_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for MemberChangeResellerRoleDetails { +impl ::serde::ser::Serialize for NoteSharedDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("MemberChangeResellerRoleDetails", 2)?; - self.internal_serialize::(&mut s)?; - s.end() + serializer.serialize_struct("NoteSharedDetails", 0)?.end() } } #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct MemberChangeResellerRoleType { +pub struct NoteSharedType { pub description: String, } -impl MemberChangeResellerRoleType { +impl NoteSharedType { pub fn new(description: String) -> Self { - MemberChangeResellerRoleType { + NoteSharedType { description, } } } -const MEMBER_CHANGE_RESELLER_ROLE_TYPE_FIELDS: &[&str] = &["description"]; -impl MemberChangeResellerRoleType { +const NOTE_SHARED_TYPE_FIELDS: &[&str] = &["description"]; +impl NoteSharedType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -60998,7 +82988,7 @@ impl MemberChangeResellerRoleType { if optional && nothing { return Ok(None); } - let result = MemberChangeResellerRoleType { + let result = NoteSharedType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -61014,137 +83004,72 @@ impl MemberChangeResellerRoleType { } } -impl<'de> ::serde::de::Deserialize<'de> for MemberChangeResellerRoleType { +impl<'de> ::serde::de::Deserialize<'de> for NoteSharedType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = MemberChangeResellerRoleType; + type Value = NoteSharedType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a MemberChangeResellerRoleType struct") + f.write_str("a NoteSharedType struct") } fn visit_map>(self, map: V) -> Result { - MemberChangeResellerRoleType::internal_deserialize(map) + NoteSharedType::internal_deserialize(map) } } - deserializer.deserialize_struct("MemberChangeResellerRoleType", MEMBER_CHANGE_RESELLER_ROLE_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("NoteSharedType", NOTE_SHARED_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for MemberChangeResellerRoleType { +impl ::serde::ser::Serialize for NoteSharedType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("MemberChangeResellerRoleType", 1)?; + let mut s = serializer.serialize_struct("NoteSharedType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Changed member status (invited, joined, suspended, etc.). +/// Added a label. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct MemberChangeStatusDetails { - /// New member status. - pub new_value: MemberStatus, - /// Previous member status. Might be missing due to historical data gap. - pub previous_value: Option, - /// Additional information indicating the action taken that caused status change. - pub action: Option, - /// The user's new team name. This field is relevant when the user is transferred off the team. - pub new_team: Option, - /// The user's previous team name. This field is relevant when the user is transferred onto the - /// team. - pub previous_team: Option, +pub struct ObjectLabelAddedDetails { + /// Labels mark a file or folder. + pub label_type: LabelType, } -impl MemberChangeStatusDetails { - pub fn new(new_value: MemberStatus) -> Self { - MemberChangeStatusDetails { - new_value, - previous_value: None, - action: None, - new_team: None, - previous_team: None, +impl ObjectLabelAddedDetails { + pub fn new(label_type: LabelType) -> Self { + ObjectLabelAddedDetails { + label_type, } } - - pub fn with_previous_value(mut self, value: MemberStatus) -> Self { - self.previous_value = Some(value); - self - } - - pub fn with_action(mut self, value: ActionDetails) -> Self { - self.action = Some(value); - self - } - - pub fn with_new_team(mut self, value: String) -> Self { - self.new_team = Some(value); - self - } - - pub fn with_previous_team(mut self, value: String) -> Self { - self.previous_team = Some(value); - self - } } -const MEMBER_CHANGE_STATUS_DETAILS_FIELDS: &[&str] = &["new_value", - "previous_value", - "action", - "new_team", - "previous_team"]; -impl MemberChangeStatusDetails { +const OBJECT_LABEL_ADDED_DETAILS_FIELDS: &[&str] = &["label_type"]; +impl ObjectLabelAddedDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_new_value = None; - let mut field_previous_value = None; - let mut field_action = None; - let mut field_new_team = None; - let mut field_previous_team = None; + ) -> Result, V::Error> { + let mut field_label_type = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "new_value" => { - if field_new_value.is_some() { - return Err(::serde::de::Error::duplicate_field("new_value")); - } - field_new_value = Some(map.next_value()?); - } - "previous_value" => { - if field_previous_value.is_some() { - return Err(::serde::de::Error::duplicate_field("previous_value")); - } - field_previous_value = Some(map.next_value()?); - } - "action" => { - if field_action.is_some() { - return Err(::serde::de::Error::duplicate_field("action")); - } - field_action = Some(map.next_value()?); - } - "new_team" => { - if field_new_team.is_some() { - return Err(::serde::de::Error::duplicate_field("new_team")); - } - field_new_team = Some(map.next_value()?); - } - "previous_team" => { - if field_previous_team.is_some() { - return Err(::serde::de::Error::duplicate_field("previous_team")); + "label_type" => { + if field_label_type.is_some() { + return Err(::serde::de::Error::duplicate_field("label_type")); } - field_previous_team = Some(map.next_value()?); + field_label_type = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -61155,61 +83080,45 @@ impl MemberChangeStatusDetails { if optional && nothing { return Ok(None); } - let result = MemberChangeStatusDetails { - new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, - previous_value: field_previous_value.and_then(Option::flatten), - action: field_action.and_then(Option::flatten), - new_team: field_new_team.and_then(Option::flatten), - previous_team: field_previous_team.and_then(Option::flatten), - }; - Ok(Some(result)) - } - - pub(crate) fn internal_serialize( - &self, - s: &mut S::SerializeStruct, - ) -> Result<(), S::Error> { - use serde::ser::SerializeStruct; - s.serialize_field("new_value", &self.new_value)?; - if let Some(val) = &self.previous_value { - s.serialize_field("previous_value", val)?; - } - if let Some(val) = &self.action { - s.serialize_field("action", val)?; - } - if let Some(val) = &self.new_team { - s.serialize_field("new_team", val)?; - } - if let Some(val) = &self.previous_team { - s.serialize_field("previous_team", val)?; - } + let result = ObjectLabelAddedDetails { + label_type: field_label_type.ok_or_else(|| ::serde::de::Error::missing_field("label_type"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("label_type", &self.label_type)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for MemberChangeStatusDetails { +impl<'de> ::serde::de::Deserialize<'de> for ObjectLabelAddedDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = MemberChangeStatusDetails; + type Value = ObjectLabelAddedDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a MemberChangeStatusDetails struct") + f.write_str("a ObjectLabelAddedDetails struct") } fn visit_map>(self, map: V) -> Result { - MemberChangeStatusDetails::internal_deserialize(map) + ObjectLabelAddedDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("MemberChangeStatusDetails", MEMBER_CHANGE_STATUS_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("ObjectLabelAddedDetails", OBJECT_LABEL_ADDED_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for MemberChangeStatusDetails { +impl ::serde::ser::Serialize for ObjectLabelAddedDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("MemberChangeStatusDetails", 5)?; + let mut s = serializer.serialize_struct("ObjectLabelAddedDetails", 1)?; self.internal_serialize::(&mut s)?; s.end() } @@ -61217,30 +83126,30 @@ impl ::serde::ser::Serialize for MemberChangeStatusDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct MemberChangeStatusType { +pub struct ObjectLabelAddedType { pub description: String, } -impl MemberChangeStatusType { +impl ObjectLabelAddedType { pub fn new(description: String) -> Self { - MemberChangeStatusType { + ObjectLabelAddedType { description, } } } -const MEMBER_CHANGE_STATUS_TYPE_FIELDS: &[&str] = &["description"]; -impl MemberChangeStatusType { +const OBJECT_LABEL_ADDED_TYPE_FIELDS: &[&str] = &["description"]; +impl ObjectLabelAddedType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -61261,7 +83170,7 @@ impl MemberChangeStatusType { if optional && nothing { return Ok(None); } - let result = MemberChangeStatusType { + let result = ObjectLabelAddedType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -61277,114 +83186,72 @@ impl MemberChangeStatusType { } } -impl<'de> ::serde::de::Deserialize<'de> for MemberChangeStatusType { +impl<'de> ::serde::de::Deserialize<'de> for ObjectLabelAddedType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = MemberChangeStatusType; + type Value = ObjectLabelAddedType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a MemberChangeStatusType struct") + f.write_str("a ObjectLabelAddedType struct") } fn visit_map>(self, map: V) -> Result { - MemberChangeStatusType::internal_deserialize(map) + ObjectLabelAddedType::internal_deserialize(map) } } - deserializer.deserialize_struct("MemberChangeStatusType", MEMBER_CHANGE_STATUS_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("ObjectLabelAddedType", OBJECT_LABEL_ADDED_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for MemberChangeStatusType { +impl ::serde::ser::Serialize for ObjectLabelAddedType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("MemberChangeStatusType", 1)?; + let mut s = serializer.serialize_struct("ObjectLabelAddedType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Cleared manually added contacts. -#[derive(Debug, Clone, PartialEq, Eq, Default)] -#[non_exhaustive] // structs may have more fields added in the future. -pub struct MemberDeleteManualContactsDetails { -} - -const MEMBER_DELETE_MANUAL_CONTACTS_DETAILS_FIELDS: &[&str] = &[]; -impl MemberDeleteManualContactsDetails { - // no _opt deserializer - pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( - mut map: V, - ) -> Result { - // ignore any fields found; none are presently recognized - crate::eat_json_fields(&mut map)?; - Ok(MemberDeleteManualContactsDetails {}) - } -} - -impl<'de> ::serde::de::Deserialize<'de> for MemberDeleteManualContactsDetails { - fn deserialize>(deserializer: D) -> Result { - // struct deserializer - use serde::de::{MapAccess, Visitor}; - struct StructVisitor; - impl<'de> Visitor<'de> for StructVisitor { - type Value = MemberDeleteManualContactsDetails; - fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a MemberDeleteManualContactsDetails struct") - } - fn visit_map>(self, map: V) -> Result { - MemberDeleteManualContactsDetails::internal_deserialize(map) - } - } - deserializer.deserialize_struct("MemberDeleteManualContactsDetails", MEMBER_DELETE_MANUAL_CONTACTS_DETAILS_FIELDS, StructVisitor) - } -} - -impl ::serde::ser::Serialize for MemberDeleteManualContactsDetails { - fn serialize(&self, serializer: S) -> Result { - // struct serializer - use serde::ser::SerializeStruct; - serializer.serialize_struct("MemberDeleteManualContactsDetails", 0)?.end() - } -} - +/// Removed a label. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct MemberDeleteManualContactsType { - pub description: String, +pub struct ObjectLabelRemovedDetails { + /// Labels mark a file or folder. + pub label_type: LabelType, } -impl MemberDeleteManualContactsType { - pub fn new(description: String) -> Self { - MemberDeleteManualContactsType { - description, +impl ObjectLabelRemovedDetails { + pub fn new(label_type: LabelType) -> Self { + ObjectLabelRemovedDetails { + label_type, } } } -const MEMBER_DELETE_MANUAL_CONTACTS_TYPE_FIELDS: &[&str] = &["description"]; -impl MemberDeleteManualContactsType { +const OBJECT_LABEL_REMOVED_DETAILS_FIELDS: &[&str] = &["label_type"]; +impl ObjectLabelRemovedDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_description = None; + ) -> Result, V::Error> { + let mut field_label_type = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "description" => { - if field_description.is_some() { - return Err(::serde::de::Error::duplicate_field("description")); + "label_type" => { + if field_label_type.is_some() { + return Err(::serde::de::Error::duplicate_field("label_type")); } - field_description = Some(map.next_value()?); + field_label_type = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -61395,8 +83262,8 @@ impl MemberDeleteManualContactsType { if optional && nothing { return Ok(None); } - let result = MemberDeleteManualContactsType { - description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + let result = ObjectLabelRemovedDetails { + label_type: field_label_type.ok_or_else(|| ::serde::de::Error::missing_field("label_type"))?, }; Ok(Some(result)) } @@ -61406,109 +83273,65 @@ impl MemberDeleteManualContactsType { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("description", &self.description)?; + s.serialize_field("label_type", &self.label_type)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for MemberDeleteManualContactsType { +impl<'de> ::serde::de::Deserialize<'de> for ObjectLabelRemovedDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = MemberDeleteManualContactsType; + type Value = ObjectLabelRemovedDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a MemberDeleteManualContactsType struct") + f.write_str("a ObjectLabelRemovedDetails struct") } fn visit_map>(self, map: V) -> Result { - MemberDeleteManualContactsType::internal_deserialize(map) + ObjectLabelRemovedDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("MemberDeleteManualContactsType", MEMBER_DELETE_MANUAL_CONTACTS_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("ObjectLabelRemovedDetails", OBJECT_LABEL_REMOVED_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for MemberDeleteManualContactsType { +impl ::serde::ser::Serialize for ObjectLabelRemovedDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("MemberDeleteManualContactsType", 1)?; + let mut s = serializer.serialize_struct("ObjectLabelRemovedDetails", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Deleted team member profile photo. -#[derive(Debug, Clone, PartialEq, Eq, Default)] -#[non_exhaustive] // structs may have more fields added in the future. -pub struct MemberDeleteProfilePhotoDetails { -} - -const MEMBER_DELETE_PROFILE_PHOTO_DETAILS_FIELDS: &[&str] = &[]; -impl MemberDeleteProfilePhotoDetails { - // no _opt deserializer - pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( - mut map: V, - ) -> Result { - // ignore any fields found; none are presently recognized - crate::eat_json_fields(&mut map)?; - Ok(MemberDeleteProfilePhotoDetails {}) - } -} - -impl<'de> ::serde::de::Deserialize<'de> for MemberDeleteProfilePhotoDetails { - fn deserialize>(deserializer: D) -> Result { - // struct deserializer - use serde::de::{MapAccess, Visitor}; - struct StructVisitor; - impl<'de> Visitor<'de> for StructVisitor { - type Value = MemberDeleteProfilePhotoDetails; - fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a MemberDeleteProfilePhotoDetails struct") - } - fn visit_map>(self, map: V) -> Result { - MemberDeleteProfilePhotoDetails::internal_deserialize(map) - } - } - deserializer.deserialize_struct("MemberDeleteProfilePhotoDetails", MEMBER_DELETE_PROFILE_PHOTO_DETAILS_FIELDS, StructVisitor) - } -} - -impl ::serde::ser::Serialize for MemberDeleteProfilePhotoDetails { - fn serialize(&self, serializer: S) -> Result { - // struct serializer - use serde::ser::SerializeStruct; - serializer.serialize_struct("MemberDeleteProfilePhotoDetails", 0)?.end() - } -} - #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct MemberDeleteProfilePhotoType { +pub struct ObjectLabelRemovedType { pub description: String, } -impl MemberDeleteProfilePhotoType { +impl ObjectLabelRemovedType { pub fn new(description: String) -> Self { - MemberDeleteProfilePhotoType { + ObjectLabelRemovedType { description, } } } -const MEMBER_DELETE_PROFILE_PHOTO_TYPE_FIELDS: &[&str] = &["description"]; -impl MemberDeleteProfilePhotoType { +const OBJECT_LABEL_REMOVED_TYPE_FIELDS: &[&str] = &["description"]; +impl ObjectLabelRemovedType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -61529,7 +83352,7 @@ impl MemberDeleteProfilePhotoType { if optional && nothing { return Ok(None); } - let result = MemberDeleteProfilePhotoType { + let result = ObjectLabelRemovedType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -61545,104 +83368,152 @@ impl MemberDeleteProfilePhotoType { } } -impl<'de> ::serde::de::Deserialize<'de> for MemberDeleteProfilePhotoType { +impl<'de> ::serde::de::Deserialize<'de> for ObjectLabelRemovedType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = MemberDeleteProfilePhotoType; + type Value = ObjectLabelRemovedType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a MemberDeleteProfilePhotoType struct") + f.write_str("a ObjectLabelRemovedType struct") } fn visit_map>(self, map: V) -> Result { - MemberDeleteProfilePhotoType::internal_deserialize(map) + ObjectLabelRemovedType::internal_deserialize(map) } } - deserializer.deserialize_struct("MemberDeleteProfilePhotoType", MEMBER_DELETE_PROFILE_PHOTO_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("ObjectLabelRemovedType", OBJECT_LABEL_REMOVED_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for MemberDeleteProfilePhotoType { +impl ::serde::ser::Serialize for ObjectLabelRemovedType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("MemberDeleteProfilePhotoType", 1)?; + let mut s = serializer.serialize_struct("ObjectLabelRemovedType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Permanently deleted contents of deleted team member account. -#[derive(Debug, Clone, PartialEq, Eq, Default)] +/// Updated a label's value. +#[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct MemberPermanentlyDeleteAccountContentsDetails { +pub struct ObjectLabelUpdatedValueDetails { + /// Labels mark a file or folder. + pub label_type: LabelType, } -const MEMBER_PERMANENTLY_DELETE_ACCOUNT_CONTENTS_DETAILS_FIELDS: &[&str] = &[]; -impl MemberPermanentlyDeleteAccountContentsDetails { - // no _opt deserializer +impl ObjectLabelUpdatedValueDetails { + pub fn new(label_type: LabelType) -> Self { + ObjectLabelUpdatedValueDetails { + label_type, + } + } +} + +const OBJECT_LABEL_UPDATED_VALUE_DETAILS_FIELDS: &[&str] = &["label_type"]; +impl ObjectLabelUpdatedValueDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - ) -> Result { - // ignore any fields found; none are presently recognized - crate::eat_json_fields(&mut map)?; - Ok(MemberPermanentlyDeleteAccountContentsDetails {}) + optional: bool, + ) -> Result, V::Error> { + let mut field_label_type = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "label_type" => { + if field_label_type.is_some() { + return Err(::serde::de::Error::duplicate_field("label_type")); + } + field_label_type = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } + } + } + if optional && nothing { + return Ok(None); + } + let result = ObjectLabelUpdatedValueDetails { + label_type: field_label_type.ok_or_else(|| ::serde::de::Error::missing_field("label_type"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("label_type", &self.label_type)?; + Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for MemberPermanentlyDeleteAccountContentsDetails { +impl<'de> ::serde::de::Deserialize<'de> for ObjectLabelUpdatedValueDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = MemberPermanentlyDeleteAccountContentsDetails; + type Value = ObjectLabelUpdatedValueDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a MemberPermanentlyDeleteAccountContentsDetails struct") + f.write_str("a ObjectLabelUpdatedValueDetails struct") } fn visit_map>(self, map: V) -> Result { - MemberPermanentlyDeleteAccountContentsDetails::internal_deserialize(map) + ObjectLabelUpdatedValueDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("MemberPermanentlyDeleteAccountContentsDetails", MEMBER_PERMANENTLY_DELETE_ACCOUNT_CONTENTS_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("ObjectLabelUpdatedValueDetails", OBJECT_LABEL_UPDATED_VALUE_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for MemberPermanentlyDeleteAccountContentsDetails { +impl ::serde::ser::Serialize for ObjectLabelUpdatedValueDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - serializer.serialize_struct("MemberPermanentlyDeleteAccountContentsDetails", 0)?.end() + let mut s = serializer.serialize_struct("ObjectLabelUpdatedValueDetails", 1)?; + self.internal_serialize::(&mut s)?; + s.end() } } #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct MemberPermanentlyDeleteAccountContentsType { +pub struct ObjectLabelUpdatedValueType { pub description: String, } -impl MemberPermanentlyDeleteAccountContentsType { +impl ObjectLabelUpdatedValueType { pub fn new(description: String) -> Self { - MemberPermanentlyDeleteAccountContentsType { + ObjectLabelUpdatedValueType { description, } } } -const MEMBER_PERMANENTLY_DELETE_ACCOUNT_CONTENTS_TYPE_FIELDS: &[&str] = &["description"]; -impl MemberPermanentlyDeleteAccountContentsType { +const OBJECT_LABEL_UPDATED_VALUE_TYPE_FIELDS: &[&str] = &["description"]; +impl ObjectLabelUpdatedValueType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -61663,7 +83534,7 @@ impl MemberPermanentlyDeleteAccountContentsType { if optional && nothing { return Ok(None); } - let result = MemberPermanentlyDeleteAccountContentsType { + let result = ObjectLabelUpdatedValueType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -61679,153 +83550,114 @@ impl MemberPermanentlyDeleteAccountContentsType { } } -impl<'de> ::serde::de::Deserialize<'de> for MemberPermanentlyDeleteAccountContentsType { +impl<'de> ::serde::de::Deserialize<'de> for ObjectLabelUpdatedValueType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = MemberPermanentlyDeleteAccountContentsType; + type Value = ObjectLabelUpdatedValueType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a MemberPermanentlyDeleteAccountContentsType struct") + f.write_str("a ObjectLabelUpdatedValueType struct") } fn visit_map>(self, map: V) -> Result { - MemberPermanentlyDeleteAccountContentsType::internal_deserialize(map) + ObjectLabelUpdatedValueType::internal_deserialize(map) } } - deserializer.deserialize_struct("MemberPermanentlyDeleteAccountContentsType", MEMBER_PERMANENTLY_DELETE_ACCOUNT_CONTENTS_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("ObjectLabelUpdatedValueType", OBJECT_LABEL_UPDATED_VALUE_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for MemberPermanentlyDeleteAccountContentsType { +impl ::serde::ser::Serialize for ObjectLabelUpdatedValueType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("MemberPermanentlyDeleteAccountContentsType", 1)?; + let mut s = serializer.serialize_struct("ObjectLabelUpdatedValueType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -#[derive(Debug, Clone, PartialEq, Eq)] -#[non_exhaustive] // variants may be added in the future -pub enum MemberRemoveActionType { - Delete, - Leave, - Offboard, - OffboardAndRetainTeamFolders, - /// Catch-all used for unrecognized values returned from the server. Encountering this value - /// typically indicates that this SDK version is out of date. - Other, +/// Opened shared Paper doc. +#[derive(Debug, Clone, PartialEq, Eq, Default)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct OpenNoteSharedDetails { } -impl<'de> ::serde::de::Deserialize<'de> for MemberRemoveActionType { +const OPEN_NOTE_SHARED_DETAILS_FIELDS: &[&str] = &[]; +impl OpenNoteSharedDetails { + // no _opt deserializer + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + ) -> Result { + // ignore any fields found; none are presently recognized + crate::eat_json_fields(&mut map)?; + Ok(OpenNoteSharedDetails {}) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for OpenNoteSharedDetails { fn deserialize>(deserializer: D) -> Result { - // union deserializer - use serde::de::{self, MapAccess, Visitor}; - struct EnumVisitor; - impl<'de> Visitor<'de> for EnumVisitor { - type Value = MemberRemoveActionType; + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = OpenNoteSharedDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a MemberRemoveActionType structure") + f.write_str("a OpenNoteSharedDetails struct") } - fn visit_map>(self, mut map: V) -> Result { - let tag: &str = match map.next_key()? { - Some(".tag") => map.next_value()?, - _ => return Err(de::Error::missing_field(".tag")) - }; - let value = match tag { - "delete" => MemberRemoveActionType::Delete, - "leave" => MemberRemoveActionType::Leave, - "offboard" => MemberRemoveActionType::Offboard, - "offboard_and_retain_team_folders" => MemberRemoveActionType::OffboardAndRetainTeamFolders, - _ => MemberRemoveActionType::Other, - }; - crate::eat_json_fields(&mut map)?; - Ok(value) + fn visit_map>(self, map: V) -> Result { + OpenNoteSharedDetails::internal_deserialize(map) } } - const VARIANTS: &[&str] = &["delete", - "leave", - "offboard", - "offboard_and_retain_team_folders", - "other"]; - deserializer.deserialize_struct("MemberRemoveActionType", VARIANTS, EnumVisitor) + deserializer.deserialize_struct("OpenNoteSharedDetails", OPEN_NOTE_SHARED_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for MemberRemoveActionType { +impl ::serde::ser::Serialize for OpenNoteSharedDetails { fn serialize(&self, serializer: S) -> Result { - // union serializer + // struct serializer use serde::ser::SerializeStruct; - match self { - MemberRemoveActionType::Delete => { - // unit - let mut s = serializer.serialize_struct("MemberRemoveActionType", 1)?; - s.serialize_field(".tag", "delete")?; - s.end() - } - MemberRemoveActionType::Leave => { - // unit - let mut s = serializer.serialize_struct("MemberRemoveActionType", 1)?; - s.serialize_field(".tag", "leave")?; - s.end() - } - MemberRemoveActionType::Offboard => { - // unit - let mut s = serializer.serialize_struct("MemberRemoveActionType", 1)?; - s.serialize_field(".tag", "offboard")?; - s.end() - } - MemberRemoveActionType::OffboardAndRetainTeamFolders => { - // unit - let mut s = serializer.serialize_struct("MemberRemoveActionType", 1)?; - s.serialize_field(".tag", "offboard_and_retain_team_folders")?; - s.end() - } - MemberRemoveActionType::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) - } + serializer.serialize_struct("OpenNoteSharedDetails", 0)?.end() } } -/// Removed the external ID for team member. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct MemberRemoveExternalIdDetails { - /// Old external id. - pub previous_value: crate::types::team_common::MemberExternalId, +pub struct OpenNoteSharedType { + pub description: String, } -impl MemberRemoveExternalIdDetails { - pub fn new(previous_value: crate::types::team_common::MemberExternalId) -> Self { - MemberRemoveExternalIdDetails { - previous_value, +impl OpenNoteSharedType { + pub fn new(description: String) -> Self { + OpenNoteSharedType { + description, } } } -const MEMBER_REMOVE_EXTERNAL_ID_DETAILS_FIELDS: &[&str] = &["previous_value"]; -impl MemberRemoveExternalIdDetails { +const OPEN_NOTE_SHARED_TYPE_FIELDS: &[&str] = &["description"]; +impl OpenNoteSharedType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_previous_value = None; + ) -> Result, V::Error> { + let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "previous_value" => { - if field_previous_value.is_some() { - return Err(::serde::de::Error::duplicate_field("previous_value")); + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); } - field_previous_value = Some(map.next_value()?); + field_description = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -61836,8 +83668,8 @@ impl MemberRemoveExternalIdDetails { if optional && nothing { return Ok(None); } - let result = MemberRemoveExternalIdDetails { - previous_value: field_previous_value.ok_or_else(|| ::serde::de::Error::missing_field("previous_value"))?, + let result = OpenNoteSharedType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) } @@ -61847,75 +83679,77 @@ impl MemberRemoveExternalIdDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("previous_value", &self.previous_value)?; + s.serialize_field("description", &self.description)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for MemberRemoveExternalIdDetails { +impl<'de> ::serde::de::Deserialize<'de> for OpenNoteSharedType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = MemberRemoveExternalIdDetails; + type Value = OpenNoteSharedType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a MemberRemoveExternalIdDetails struct") + f.write_str("a OpenNoteSharedType struct") } fn visit_map>(self, map: V) -> Result { - MemberRemoveExternalIdDetails::internal_deserialize(map) + OpenNoteSharedType::internal_deserialize(map) } } - deserializer.deserialize_struct("MemberRemoveExternalIdDetails", MEMBER_REMOVE_EXTERNAL_ID_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("OpenNoteSharedType", OPEN_NOTE_SHARED_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for MemberRemoveExternalIdDetails { +impl ::serde::ser::Serialize for OpenNoteSharedType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("MemberRemoveExternalIdDetails", 1)?; + let mut s = serializer.serialize_struct("OpenNoteSharedType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } +/// More details about the organization. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct MemberRemoveExternalIdType { - pub description: String, +pub struct OrganizationDetails { + /// The name of the organization. + pub organization: String, } -impl MemberRemoveExternalIdType { - pub fn new(description: String) -> Self { - MemberRemoveExternalIdType { - description, +impl OrganizationDetails { + pub fn new(organization: String) -> Self { + OrganizationDetails { + organization, } } } -const MEMBER_REMOVE_EXTERNAL_ID_TYPE_FIELDS: &[&str] = &["description"]; -impl MemberRemoveExternalIdType { +const ORGANIZATION_DETAILS_FIELDS: &[&str] = &["organization"]; +impl OrganizationDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_description = None; + ) -> Result, V::Error> { + let mut field_organization = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; - match key { - "description" => { - if field_description.is_some() { - return Err(::serde::de::Error::duplicate_field("description")); + match key { + "organization" => { + if field_organization.is_some() { + return Err(::serde::de::Error::duplicate_field("organization")); } - field_description = Some(map.next_value()?); + field_organization = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -61926,8 +83760,8 @@ impl MemberRemoveExternalIdType { if optional && nothing { return Ok(None); } - let result = MemberRemoveExternalIdType { - description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + let result = OrganizationDetails { + organization: field_organization.ok_or_else(|| ::serde::de::Error::missing_field("organization"))?, }; Ok(Some(result)) } @@ -61937,93 +83771,77 @@ impl MemberRemoveExternalIdType { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("description", &self.description)?; + s.serialize_field("organization", &self.organization)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for MemberRemoveExternalIdType { +impl<'de> ::serde::de::Deserialize<'de> for OrganizationDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = MemberRemoveExternalIdType; + type Value = OrganizationDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a MemberRemoveExternalIdType struct") + f.write_str("a OrganizationDetails struct") } fn visit_map>(self, map: V) -> Result { - MemberRemoveExternalIdType::internal_deserialize(map) + OrganizationDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("MemberRemoveExternalIdType", MEMBER_REMOVE_EXTERNAL_ID_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("OrganizationDetails", ORGANIZATION_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for MemberRemoveExternalIdType { +impl ::serde::ser::Serialize for OrganizationDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("MemberRemoveExternalIdType", 1)?; + let mut s = serializer.serialize_struct("OrganizationDetails", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Changed whether users can find team when not invited. +/// The name of the organization #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct MemberRequestsChangePolicyDetails { - /// New member change requests policy. - pub new_value: MemberRequestsPolicy, - /// Previous member change requests policy. Might be missing due to historical data gap. - pub previous_value: Option, +pub struct OrganizationName { + /// The name of the organization. + pub organization: String, } -impl MemberRequestsChangePolicyDetails { - pub fn new(new_value: MemberRequestsPolicy) -> Self { - MemberRequestsChangePolicyDetails { - new_value, - previous_value: None, +impl OrganizationName { + pub fn new(organization: String) -> Self { + OrganizationName { + organization, } } - - pub fn with_previous_value(mut self, value: MemberRequestsPolicy) -> Self { - self.previous_value = Some(value); - self - } } -const MEMBER_REQUESTS_CHANGE_POLICY_DETAILS_FIELDS: &[&str] = &["new_value", - "previous_value"]; -impl MemberRequestsChangePolicyDetails { +const ORGANIZATION_NAME_FIELDS: &[&str] = &["organization"]; +impl OrganizationName { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_new_value = None; - let mut field_previous_value = None; + ) -> Result, V::Error> { + let mut field_organization = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "new_value" => { - if field_new_value.is_some() { - return Err(::serde::de::Error::duplicate_field("new_value")); - } - field_new_value = Some(map.next_value()?); - } - "previous_value" => { - if field_previous_value.is_some() { - return Err(::serde::de::Error::duplicate_field("previous_value")); + "organization" => { + if field_organization.is_some() { + return Err(::serde::de::Error::duplicate_field("organization")); } - field_previous_value = Some(map.next_value()?); + field_organization = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -62034,9 +83852,8 @@ impl MemberRequestsChangePolicyDetails { if optional && nothing { return Ok(None); } - let result = MemberRequestsChangePolicyDetails { - new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, - previous_value: field_previous_value.and_then(Option::flatten), + let result = OrganizationName { + organization: field_organization.ok_or_else(|| ::serde::de::Error::missing_field("organization"))?, }; Ok(Some(result)) } @@ -62046,68 +83863,109 @@ impl MemberRequestsChangePolicyDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("new_value", &self.new_value)?; - if let Some(val) = &self.previous_value { - s.serialize_field("previous_value", val)?; - } + s.serialize_field("organization", &self.organization)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for MemberRequestsChangePolicyDetails { +impl<'de> ::serde::de::Deserialize<'de> for OrganizationName { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = MemberRequestsChangePolicyDetails; + type Value = OrganizationName; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a MemberRequestsChangePolicyDetails struct") + f.write_str("a OrganizationName struct") } fn visit_map>(self, map: V) -> Result { - MemberRequestsChangePolicyDetails::internal_deserialize(map) + OrganizationName::internal_deserialize(map) } } - deserializer.deserialize_struct("MemberRequestsChangePolicyDetails", MEMBER_REQUESTS_CHANGE_POLICY_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("OrganizationName", ORGANIZATION_NAME_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for MemberRequestsChangePolicyDetails { +impl ::serde::ser::Serialize for OrganizationName { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("MemberRequestsChangePolicyDetails", 2)?; + let mut s = serializer.serialize_struct("OrganizationName", 1)?; self.internal_serialize::(&mut s)?; s.end() } } +/// Organized a folder with multi-file organize. +#[derive(Debug, Clone, PartialEq, Eq, Default)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct OrganizeFolderWithTidyDetails { +} + +const ORGANIZE_FOLDER_WITH_TIDY_DETAILS_FIELDS: &[&str] = &[]; +impl OrganizeFolderWithTidyDetails { + // no _opt deserializer + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + ) -> Result { + // ignore any fields found; none are presently recognized + crate::eat_json_fields(&mut map)?; + Ok(OrganizeFolderWithTidyDetails {}) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for OrganizeFolderWithTidyDetails { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = OrganizeFolderWithTidyDetails; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a OrganizeFolderWithTidyDetails struct") + } + fn visit_map>(self, map: V) -> Result { + OrganizeFolderWithTidyDetails::internal_deserialize(map) + } + } + deserializer.deserialize_struct("OrganizeFolderWithTidyDetails", ORGANIZE_FOLDER_WITH_TIDY_DETAILS_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for OrganizeFolderWithTidyDetails { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + serializer.serialize_struct("OrganizeFolderWithTidyDetails", 0)?.end() + } +} + #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct MemberRequestsChangePolicyType { +pub struct OrganizeFolderWithTidyType { pub description: String, } -impl MemberRequestsChangePolicyType { +impl OrganizeFolderWithTidyType { pub fn new(description: String) -> Self { - MemberRequestsChangePolicyType { + OrganizeFolderWithTidyType { description, } } } -const MEMBER_REQUESTS_CHANGE_POLICY_TYPE_FIELDS: &[&str] = &["description"]; -impl MemberRequestsChangePolicyType { +const ORGANIZE_FOLDER_WITH_TIDY_TYPE_FIELDS: &[&str] = &["description"]; +impl OrganizeFolderWithTidyType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -62128,7 +83986,7 @@ impl MemberRequestsChangePolicyType { if optional && nothing { return Ok(None); } - let result = MemberRequestsChangePolicyType { + let result = OrganizeFolderWithTidyType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -62144,228 +84002,88 @@ impl MemberRequestsChangePolicyType { } } -impl<'de> ::serde::de::Deserialize<'de> for MemberRequestsChangePolicyType { +impl<'de> ::serde::de::Deserialize<'de> for OrganizeFolderWithTidyType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = MemberRequestsChangePolicyType; + type Value = OrganizeFolderWithTidyType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a MemberRequestsChangePolicyType struct") + f.write_str("a OrganizeFolderWithTidyType struct") } fn visit_map>(self, map: V) -> Result { - MemberRequestsChangePolicyType::internal_deserialize(map) + OrganizeFolderWithTidyType::internal_deserialize(map) } } - deserializer.deserialize_struct("MemberRequestsChangePolicyType", MEMBER_REQUESTS_CHANGE_POLICY_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("OrganizeFolderWithTidyType", ORGANIZE_FOLDER_WITH_TIDY_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for MemberRequestsChangePolicyType { +impl ::serde::ser::Serialize for OrganizeFolderWithTidyType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("MemberRequestsChangePolicyType", 1)?; + let mut s = serializer.serialize_struct("OrganizeFolderWithTidyType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } +/// The origin from which the actor performed the action. #[derive(Debug, Clone, PartialEq, Eq)] -#[non_exhaustive] // variants may be added in the future -pub enum MemberRequestsPolicy { - AutoAccept, - Disabled, - RequireApproval, - /// Catch-all used for unrecognized values returned from the server. Encountering this value - /// typically indicates that this SDK version is out of date. - Other, -} - -impl<'de> ::serde::de::Deserialize<'de> for MemberRequestsPolicy { - fn deserialize>(deserializer: D) -> Result { - // union deserializer - use serde::de::{self, MapAccess, Visitor}; - struct EnumVisitor; - impl<'de> Visitor<'de> for EnumVisitor { - type Value = MemberRequestsPolicy; - fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a MemberRequestsPolicy structure") - } - fn visit_map>(self, mut map: V) -> Result { - let tag: &str = match map.next_key()? { - Some(".tag") => map.next_value()?, - _ => return Err(de::Error::missing_field(".tag")) - }; - let value = match tag { - "auto_accept" => MemberRequestsPolicy::AutoAccept, - "disabled" => MemberRequestsPolicy::Disabled, - "require_approval" => MemberRequestsPolicy::RequireApproval, - _ => MemberRequestsPolicy::Other, - }; - crate::eat_json_fields(&mut map)?; - Ok(value) - } - } - const VARIANTS: &[&str] = &["auto_accept", - "disabled", - "require_approval", - "other"]; - deserializer.deserialize_struct("MemberRequestsPolicy", VARIANTS, EnumVisitor) - } -} - -impl ::serde::ser::Serialize for MemberRequestsPolicy { - fn serialize(&self, serializer: S) -> Result { - // union serializer - use serde::ser::SerializeStruct; - match self { - MemberRequestsPolicy::AutoAccept => { - // unit - let mut s = serializer.serialize_struct("MemberRequestsPolicy", 1)?; - s.serialize_field(".tag", "auto_accept")?; - s.end() - } - MemberRequestsPolicy::Disabled => { - // unit - let mut s = serializer.serialize_struct("MemberRequestsPolicy", 1)?; - s.serialize_field(".tag", "disabled")?; - s.end() - } - MemberRequestsPolicy::RequireApproval => { - // unit - let mut s = serializer.serialize_struct("MemberRequestsPolicy", 1)?; - s.serialize_field(".tag", "require_approval")?; - s.end() - } - MemberRequestsPolicy::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) - } - } -} - -/// Policy for controlling whether team members can send team invites -#[derive(Debug, Clone, PartialEq, Eq)] -#[non_exhaustive] // variants may be added in the future -pub enum MemberSendInvitePolicy { - Disabled, - Everyone, - SpecificMembers, - /// Catch-all used for unrecognized values returned from the server. Encountering this value - /// typically indicates that this SDK version is out of date. - Other, -} - -impl<'de> ::serde::de::Deserialize<'de> for MemberSendInvitePolicy { - fn deserialize>(deserializer: D) -> Result { - // union deserializer - use serde::de::{self, MapAccess, Visitor}; - struct EnumVisitor; - impl<'de> Visitor<'de> for EnumVisitor { - type Value = MemberSendInvitePolicy; - fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a MemberSendInvitePolicy structure") - } - fn visit_map>(self, mut map: V) -> Result { - let tag: &str = match map.next_key()? { - Some(".tag") => map.next_value()?, - _ => return Err(de::Error::missing_field(".tag")) - }; - let value = match tag { - "disabled" => MemberSendInvitePolicy::Disabled, - "everyone" => MemberSendInvitePolicy::Everyone, - "specific_members" => MemberSendInvitePolicy::SpecificMembers, - _ => MemberSendInvitePolicy::Other, - }; - crate::eat_json_fields(&mut map)?; - Ok(value) - } - } - const VARIANTS: &[&str] = &["disabled", - "everyone", - "specific_members", - "other"]; - deserializer.deserialize_struct("MemberSendInvitePolicy", VARIANTS, EnumVisitor) - } +#[non_exhaustive] // structs may have more fields added in the future. +pub struct OriginLogInfo { + /// The method that was used to perform the action. + pub access_method: AccessMethodLogInfo, + /// Geographic location details. + pub geo_location: Option, } -impl ::serde::ser::Serialize for MemberSendInvitePolicy { - fn serialize(&self, serializer: S) -> Result { - // union serializer - use serde::ser::SerializeStruct; - match self { - MemberSendInvitePolicy::Disabled => { - // unit - let mut s = serializer.serialize_struct("MemberSendInvitePolicy", 1)?; - s.serialize_field(".tag", "disabled")?; - s.end() - } - MemberSendInvitePolicy::Everyone => { - // unit - let mut s = serializer.serialize_struct("MemberSendInvitePolicy", 1)?; - s.serialize_field(".tag", "everyone")?; - s.end() - } - MemberSendInvitePolicy::SpecificMembers => { - // unit - let mut s = serializer.serialize_struct("MemberSendInvitePolicy", 1)?; - s.serialize_field(".tag", "specific_members")?; - s.end() - } - MemberSendInvitePolicy::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) +impl OriginLogInfo { + pub fn new(access_method: AccessMethodLogInfo) -> Self { + OriginLogInfo { + access_method, + geo_location: None, } } -} - -/// Changed member send invite policy for team. -#[derive(Debug, Clone, PartialEq, Eq)] -#[non_exhaustive] // structs may have more fields added in the future. -pub struct MemberSendInvitePolicyChangedDetails { - /// New team member send invite policy. - pub new_value: MemberSendInvitePolicy, - /// Previous team member send invite policy. - pub previous_value: MemberSendInvitePolicy, -} -impl MemberSendInvitePolicyChangedDetails { - pub fn new(new_value: MemberSendInvitePolicy, previous_value: MemberSendInvitePolicy) -> Self { - MemberSendInvitePolicyChangedDetails { - new_value, - previous_value, - } + pub fn with_geo_location(mut self, value: GeoLocationLogInfo) -> Self { + self.geo_location = Some(value); + self } } -const MEMBER_SEND_INVITE_POLICY_CHANGED_DETAILS_FIELDS: &[&str] = &["new_value", - "previous_value"]; -impl MemberSendInvitePolicyChangedDetails { +const ORIGIN_LOG_INFO_FIELDS: &[&str] = &["access_method", + "geo_location"]; +impl OriginLogInfo { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_new_value = None; - let mut field_previous_value = None; + ) -> Result, V::Error> { + let mut field_access_method = None; + let mut field_geo_location = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "new_value" => { - if field_new_value.is_some() { - return Err(::serde::de::Error::duplicate_field("new_value")); + "access_method" => { + if field_access_method.is_some() { + return Err(::serde::de::Error::duplicate_field("access_method")); } - field_new_value = Some(map.next_value()?); + field_access_method = Some(map.next_value()?); } - "previous_value" => { - if field_previous_value.is_some() { - return Err(::serde::de::Error::duplicate_field("previous_value")); + "geo_location" => { + if field_geo_location.is_some() { + return Err(::serde::de::Error::duplicate_field("geo_location")); } - field_previous_value = Some(map.next_value()?); + field_geo_location = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -62376,9 +84094,9 @@ impl MemberSendInvitePolicyChangedDetails { if optional && nothing { return Ok(None); } - let result = MemberSendInvitePolicyChangedDetails { - new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, - previous_value: field_previous_value.ok_or_else(|| ::serde::de::Error::missing_field("previous_value"))?, + let result = OriginLogInfo { + access_method: field_access_method.ok_or_else(|| ::serde::de::Error::missing_field("access_method"))?, + geo_location: field_geo_location.and_then(Option::flatten), }; Ok(Some(result)) } @@ -62388,76 +84106,94 @@ impl MemberSendInvitePolicyChangedDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("new_value", &self.new_value)?; - s.serialize_field("previous_value", &self.previous_value)?; + s.serialize_field("access_method", &self.access_method)?; + if let Some(val) = &self.geo_location { + s.serialize_field("geo_location", val)?; + } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for MemberSendInvitePolicyChangedDetails { +impl<'de> ::serde::de::Deserialize<'de> for OriginLogInfo { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = MemberSendInvitePolicyChangedDetails; + type Value = OriginLogInfo; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a MemberSendInvitePolicyChangedDetails struct") + f.write_str("a OriginLogInfo struct") } fn visit_map>(self, map: V) -> Result { - MemberSendInvitePolicyChangedDetails::internal_deserialize(map) + OriginLogInfo::internal_deserialize(map) } } - deserializer.deserialize_struct("MemberSendInvitePolicyChangedDetails", MEMBER_SEND_INVITE_POLICY_CHANGED_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("OriginLogInfo", ORIGIN_LOG_INFO_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for MemberSendInvitePolicyChangedDetails { +impl ::serde::ser::Serialize for OriginLogInfo { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("MemberSendInvitePolicyChangedDetails", 2)?; + let mut s = serializer.serialize_struct("OriginLogInfo", 2)?; self.internal_serialize::(&mut s)?; s.end() } } +/// Report created: Views of old links. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct MemberSendInvitePolicyChangedType { - pub description: String, +pub struct OutdatedLinkViewCreateReportDetails { + /// Report start date. + pub start_date: crate::types::common::DropboxTimestamp, + /// Report end date. + pub end_date: crate::types::common::DropboxTimestamp, } -impl MemberSendInvitePolicyChangedType { - pub fn new(description: String) -> Self { - MemberSendInvitePolicyChangedType { - description, +impl OutdatedLinkViewCreateReportDetails { + pub fn new( + start_date: crate::types::common::DropboxTimestamp, + end_date: crate::types::common::DropboxTimestamp, + ) -> Self { + OutdatedLinkViewCreateReportDetails { + start_date, + end_date, } } } -const MEMBER_SEND_INVITE_POLICY_CHANGED_TYPE_FIELDS: &[&str] = &["description"]; -impl MemberSendInvitePolicyChangedType { +const OUTDATED_LINK_VIEW_CREATE_REPORT_DETAILS_FIELDS: &[&str] = &["start_date", + "end_date"]; +impl OutdatedLinkViewCreateReportDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_description = None; + ) -> Result, V::Error> { + let mut field_start_date = None; + let mut field_end_date = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "description" => { - if field_description.is_some() { - return Err(::serde::de::Error::duplicate_field("description")); + "start_date" => { + if field_start_date.is_some() { + return Err(::serde::de::Error::duplicate_field("start_date")); } - field_description = Some(map.next_value()?); + field_start_date = Some(map.next_value()?); + } + "end_date" => { + if field_end_date.is_some() { + return Err(::serde::de::Error::duplicate_field("end_date")); + } + field_end_date = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -62468,8 +84204,9 @@ impl MemberSendInvitePolicyChangedType { if optional && nothing { return Ok(None); } - let result = MemberSendInvitePolicyChangedType { - description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + let result = OutdatedLinkViewCreateReportDetails { + start_date: field_start_date.ok_or_else(|| ::serde::de::Error::missing_field("start_date"))?, + end_date: field_end_date.ok_or_else(|| ::serde::de::Error::missing_field("end_date"))?, }; Ok(Some(result)) } @@ -62479,109 +84216,66 @@ impl MemberSendInvitePolicyChangedType { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("description", &self.description)?; + s.serialize_field("start_date", &self.start_date)?; + s.serialize_field("end_date", &self.end_date)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for MemberSendInvitePolicyChangedType { - fn deserialize>(deserializer: D) -> Result { - // struct deserializer - use serde::de::{MapAccess, Visitor}; - struct StructVisitor; - impl<'de> Visitor<'de> for StructVisitor { - type Value = MemberSendInvitePolicyChangedType; - fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a MemberSendInvitePolicyChangedType struct") - } - fn visit_map>(self, map: V) -> Result { - MemberSendInvitePolicyChangedType::internal_deserialize(map) - } - } - deserializer.deserialize_struct("MemberSendInvitePolicyChangedType", MEMBER_SEND_INVITE_POLICY_CHANGED_TYPE_FIELDS, StructVisitor) - } -} - -impl ::serde::ser::Serialize for MemberSendInvitePolicyChangedType { - fn serialize(&self, serializer: S) -> Result { - // struct serializer - use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("MemberSendInvitePolicyChangedType", 1)?; - self.internal_serialize::(&mut s)?; - s.end() - } -} - -/// Set team member profile photo. -#[derive(Debug, Clone, PartialEq, Eq, Default)] -#[non_exhaustive] // structs may have more fields added in the future. -pub struct MemberSetProfilePhotoDetails { -} - -const MEMBER_SET_PROFILE_PHOTO_DETAILS_FIELDS: &[&str] = &[]; -impl MemberSetProfilePhotoDetails { - // no _opt deserializer - pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( - mut map: V, - ) -> Result { - // ignore any fields found; none are presently recognized - crate::eat_json_fields(&mut map)?; - Ok(MemberSetProfilePhotoDetails {}) - } -} - -impl<'de> ::serde::de::Deserialize<'de> for MemberSetProfilePhotoDetails { +impl<'de> ::serde::de::Deserialize<'de> for OutdatedLinkViewCreateReportDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = MemberSetProfilePhotoDetails; + type Value = OutdatedLinkViewCreateReportDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a MemberSetProfilePhotoDetails struct") + f.write_str("a OutdatedLinkViewCreateReportDetails struct") } fn visit_map>(self, map: V) -> Result { - MemberSetProfilePhotoDetails::internal_deserialize(map) + OutdatedLinkViewCreateReportDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("MemberSetProfilePhotoDetails", MEMBER_SET_PROFILE_PHOTO_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("OutdatedLinkViewCreateReportDetails", OUTDATED_LINK_VIEW_CREATE_REPORT_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for MemberSetProfilePhotoDetails { +impl ::serde::ser::Serialize for OutdatedLinkViewCreateReportDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - serializer.serialize_struct("MemberSetProfilePhotoDetails", 0)?.end() + let mut s = serializer.serialize_struct("OutdatedLinkViewCreateReportDetails", 2)?; + self.internal_serialize::(&mut s)?; + s.end() } } #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct MemberSetProfilePhotoType { +pub struct OutdatedLinkViewCreateReportType { pub description: String, } -impl MemberSetProfilePhotoType { +impl OutdatedLinkViewCreateReportType { pub fn new(description: String) -> Self { - MemberSetProfilePhotoType { + OutdatedLinkViewCreateReportType { description, } } } -const MEMBER_SET_PROFILE_PHOTO_TYPE_FIELDS: &[&str] = &["description"]; -impl MemberSetProfilePhotoType { +const OUTDATED_LINK_VIEW_CREATE_REPORT_TYPE_FIELDS: &[&str] = &["description"]; +impl OutdatedLinkViewCreateReportType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -62602,7 +84296,7 @@ impl MemberSetProfilePhotoType { if optional && nothing { return Ok(None); } - let result = MemberSetProfilePhotoType { + let result = OutdatedLinkViewCreateReportType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -62618,72 +84312,72 @@ impl MemberSetProfilePhotoType { } } -impl<'de> ::serde::de::Deserialize<'de> for MemberSetProfilePhotoType { +impl<'de> ::serde::de::Deserialize<'de> for OutdatedLinkViewCreateReportType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = MemberSetProfilePhotoType; + type Value = OutdatedLinkViewCreateReportType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a MemberSetProfilePhotoType struct") + f.write_str("a OutdatedLinkViewCreateReportType struct") } fn visit_map>(self, map: V) -> Result { - MemberSetProfilePhotoType::internal_deserialize(map) + OutdatedLinkViewCreateReportType::internal_deserialize(map) } } - deserializer.deserialize_struct("MemberSetProfilePhotoType", MEMBER_SET_PROFILE_PHOTO_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("OutdatedLinkViewCreateReportType", OUTDATED_LINK_VIEW_CREATE_REPORT_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for MemberSetProfilePhotoType { +impl ::serde::ser::Serialize for OutdatedLinkViewCreateReportType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("MemberSetProfilePhotoType", 1)?; + let mut s = serializer.serialize_struct("OutdatedLinkViewCreateReportType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Set custom member space limit. +/// Couldn't create report: Views of old links. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct MemberSpaceLimitsAddCustomQuotaDetails { - /// New custom quota value in bytes. - pub new_value: u64, +pub struct OutdatedLinkViewReportFailedDetails { + /// Failure reason. + pub failure_reason: crate::types::team::TeamReportFailureReason, } -impl MemberSpaceLimitsAddCustomQuotaDetails { - pub fn new(new_value: u64) -> Self { - MemberSpaceLimitsAddCustomQuotaDetails { - new_value, +impl OutdatedLinkViewReportFailedDetails { + pub fn new(failure_reason: crate::types::team::TeamReportFailureReason) -> Self { + OutdatedLinkViewReportFailedDetails { + failure_reason, } } } -const MEMBER_SPACE_LIMITS_ADD_CUSTOM_QUOTA_DETAILS_FIELDS: &[&str] = &["new_value"]; -impl MemberSpaceLimitsAddCustomQuotaDetails { +const OUTDATED_LINK_VIEW_REPORT_FAILED_DETAILS_FIELDS: &[&str] = &["failure_reason"]; +impl OutdatedLinkViewReportFailedDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_new_value = None; + ) -> Result, V::Error> { + let mut field_failure_reason = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "new_value" => { - if field_new_value.is_some() { - return Err(::serde::de::Error::duplicate_field("new_value")); + "failure_reason" => { + if field_failure_reason.is_some() { + return Err(::serde::de::Error::duplicate_field("failure_reason")); } - field_new_value = Some(map.next_value()?); + field_failure_reason = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -62694,8 +84388,8 @@ impl MemberSpaceLimitsAddCustomQuotaDetails { if optional && nothing { return Ok(None); } - let result = MemberSpaceLimitsAddCustomQuotaDetails { - new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, + let result = OutdatedLinkViewReportFailedDetails { + failure_reason: field_failure_reason.ok_or_else(|| ::serde::de::Error::missing_field("failure_reason"))?, }; Ok(Some(result)) } @@ -62705,34 +84399,34 @@ impl MemberSpaceLimitsAddCustomQuotaDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("new_value", &self.new_value)?; + s.serialize_field("failure_reason", &self.failure_reason)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for MemberSpaceLimitsAddCustomQuotaDetails { +impl<'de> ::serde::de::Deserialize<'de> for OutdatedLinkViewReportFailedDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = MemberSpaceLimitsAddCustomQuotaDetails; + type Value = OutdatedLinkViewReportFailedDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a MemberSpaceLimitsAddCustomQuotaDetails struct") + f.write_str("a OutdatedLinkViewReportFailedDetails struct") } fn visit_map>(self, map: V) -> Result { - MemberSpaceLimitsAddCustomQuotaDetails::internal_deserialize(map) + OutdatedLinkViewReportFailedDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("MemberSpaceLimitsAddCustomQuotaDetails", MEMBER_SPACE_LIMITS_ADD_CUSTOM_QUOTA_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("OutdatedLinkViewReportFailedDetails", OUTDATED_LINK_VIEW_REPORT_FAILED_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for MemberSpaceLimitsAddCustomQuotaDetails { +impl ::serde::ser::Serialize for OutdatedLinkViewReportFailedDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("MemberSpaceLimitsAddCustomQuotaDetails", 1)?; + let mut s = serializer.serialize_struct("OutdatedLinkViewReportFailedDetails", 1)?; self.internal_serialize::(&mut s)?; s.end() } @@ -62740,30 +84434,30 @@ impl ::serde::ser::Serialize for MemberSpaceLimitsAddCustomQuotaDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct MemberSpaceLimitsAddCustomQuotaType { +pub struct OutdatedLinkViewReportFailedType { pub description: String, } -impl MemberSpaceLimitsAddCustomQuotaType { +impl OutdatedLinkViewReportFailedType { pub fn new(description: String) -> Self { - MemberSpaceLimitsAddCustomQuotaType { + OutdatedLinkViewReportFailedType { description, } } } -const MEMBER_SPACE_LIMITS_ADD_CUSTOM_QUOTA_TYPE_FIELDS: &[&str] = &["description"]; -impl MemberSpaceLimitsAddCustomQuotaType { +const OUTDATED_LINK_VIEW_REPORT_FAILED_TYPE_FIELDS: &[&str] = &["description"]; +impl OutdatedLinkViewReportFailedType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -62784,7 +84478,7 @@ impl MemberSpaceLimitsAddCustomQuotaType { if optional && nothing { return Ok(None); } - let result = MemberSpaceLimitsAddCustomQuotaType { + let result = OutdatedLinkViewReportFailedType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -62800,104 +84494,176 @@ impl MemberSpaceLimitsAddCustomQuotaType { } } -impl<'de> ::serde::de::Deserialize<'de> for MemberSpaceLimitsAddCustomQuotaType { +impl<'de> ::serde::de::Deserialize<'de> for OutdatedLinkViewReportFailedType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = MemberSpaceLimitsAddCustomQuotaType; + type Value = OutdatedLinkViewReportFailedType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a MemberSpaceLimitsAddCustomQuotaType struct") + f.write_str("a OutdatedLinkViewReportFailedType struct") } fn visit_map>(self, map: V) -> Result { - MemberSpaceLimitsAddCustomQuotaType::internal_deserialize(map) + OutdatedLinkViewReportFailedType::internal_deserialize(map) } } - deserializer.deserialize_struct("MemberSpaceLimitsAddCustomQuotaType", MEMBER_SPACE_LIMITS_ADD_CUSTOM_QUOTA_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("OutdatedLinkViewReportFailedType", OUTDATED_LINK_VIEW_REPORT_FAILED_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for MemberSpaceLimitsAddCustomQuotaType { +impl ::serde::ser::Serialize for OutdatedLinkViewReportFailedType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("MemberSpaceLimitsAddCustomQuotaType", 1)?; + let mut s = serializer.serialize_struct("OutdatedLinkViewReportFailedType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Added members to member space limit exception list. +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // variants may be added in the future +pub enum PaperAccessType { + Commenter, + Editor, + Viewer, + /// Catch-all used for unrecognized values returned from the server. Encountering this value + /// typically indicates that this SDK version is out of date. + Other, +} + +impl<'de> ::serde::de::Deserialize<'de> for PaperAccessType { + fn deserialize>(deserializer: D) -> Result { + // union deserializer + use serde::de::{self, MapAccess, Visitor}; + struct EnumVisitor; + impl<'de> Visitor<'de> for EnumVisitor { + type Value = PaperAccessType; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a PaperAccessType structure") + } + fn visit_map>(self, mut map: V) -> Result { + let tag: &str = match map.next_key()? { + Some(".tag") => map.next_value()?, + _ => return Err(de::Error::missing_field(".tag")) + }; + let value = match tag { + "commenter" => PaperAccessType::Commenter, + "editor" => PaperAccessType::Editor, + "viewer" => PaperAccessType::Viewer, + _ => PaperAccessType::Other, + }; + crate::eat_json_fields(&mut map)?; + Ok(value) + } + } + const VARIANTS: &[&str] = &["commenter", + "editor", + "viewer", + "other"]; + deserializer.deserialize_struct("PaperAccessType", VARIANTS, EnumVisitor) + } +} + +impl ::serde::ser::Serialize for PaperAccessType { + fn serialize(&self, serializer: S) -> Result { + // union serializer + use serde::ser::SerializeStruct; + match self { + PaperAccessType::Commenter => { + // unit + let mut s = serializer.serialize_struct("PaperAccessType", 1)?; + s.serialize_field(".tag", "commenter")?; + s.end() + } + PaperAccessType::Editor => { + // unit + let mut s = serializer.serialize_struct("PaperAccessType", 1)?; + s.serialize_field(".tag", "editor")?; + s.end() + } + PaperAccessType::Viewer => { + // unit + let mut s = serializer.serialize_struct("PaperAccessType", 1)?; + s.serialize_field(".tag", "viewer")?; + s.end() + } + PaperAccessType::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) + } + } +} + +/// Exported all team Paper docs. #[derive(Debug, Clone, PartialEq, Eq, Default)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct MemberSpaceLimitsAddExceptionDetails { +pub struct PaperAdminExportStartDetails { } -const MEMBER_SPACE_LIMITS_ADD_EXCEPTION_DETAILS_FIELDS: &[&str] = &[]; -impl MemberSpaceLimitsAddExceptionDetails { +const PAPER_ADMIN_EXPORT_START_DETAILS_FIELDS: &[&str] = &[]; +impl PaperAdminExportStartDetails { // no _opt deserializer pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - ) -> Result { + ) -> Result { // ignore any fields found; none are presently recognized crate::eat_json_fields(&mut map)?; - Ok(MemberSpaceLimitsAddExceptionDetails {}) + Ok(PaperAdminExportStartDetails {}) } } -impl<'de> ::serde::de::Deserialize<'de> for MemberSpaceLimitsAddExceptionDetails { +impl<'de> ::serde::de::Deserialize<'de> for PaperAdminExportStartDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = MemberSpaceLimitsAddExceptionDetails; + type Value = PaperAdminExportStartDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a MemberSpaceLimitsAddExceptionDetails struct") + f.write_str("a PaperAdminExportStartDetails struct") } fn visit_map>(self, map: V) -> Result { - MemberSpaceLimitsAddExceptionDetails::internal_deserialize(map) + PaperAdminExportStartDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("MemberSpaceLimitsAddExceptionDetails", MEMBER_SPACE_LIMITS_ADD_EXCEPTION_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("PaperAdminExportStartDetails", PAPER_ADMIN_EXPORT_START_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for MemberSpaceLimitsAddExceptionDetails { +impl ::serde::ser::Serialize for PaperAdminExportStartDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - serializer.serialize_struct("MemberSpaceLimitsAddExceptionDetails", 0)?.end() + serializer.serialize_struct("PaperAdminExportStartDetails", 0)?.end() } } #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct MemberSpaceLimitsAddExceptionType { +pub struct PaperAdminExportStartType { pub description: String, } -impl MemberSpaceLimitsAddExceptionType { +impl PaperAdminExportStartType { pub fn new(description: String) -> Self { - MemberSpaceLimitsAddExceptionType { + PaperAdminExportStartType { description, } } } -const MEMBER_SPACE_LIMITS_ADD_EXCEPTION_TYPE_FIELDS: &[&str] = &["description"]; -impl MemberSpaceLimitsAddExceptionType { +const PAPER_ADMIN_EXPORT_START_TYPE_FIELDS: &[&str] = &["description"]; +impl PaperAdminExportStartType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -62918,7 +84684,7 @@ impl MemberSpaceLimitsAddExceptionType { if optional && nothing { return Ok(None); } - let result = MemberSpaceLimitsAddExceptionType { + let result = PaperAdminExportStartType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -62934,84 +84700,92 @@ impl MemberSpaceLimitsAddExceptionType { } } -impl<'de> ::serde::de::Deserialize<'de> for MemberSpaceLimitsAddExceptionType { +impl<'de> ::serde::de::Deserialize<'de> for PaperAdminExportStartType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = MemberSpaceLimitsAddExceptionType; + type Value = PaperAdminExportStartType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a MemberSpaceLimitsAddExceptionType struct") + f.write_str("a PaperAdminExportStartType struct") } fn visit_map>(self, map: V) -> Result { - MemberSpaceLimitsAddExceptionType::internal_deserialize(map) + PaperAdminExportStartType::internal_deserialize(map) } } - deserializer.deserialize_struct("MemberSpaceLimitsAddExceptionType", MEMBER_SPACE_LIMITS_ADD_EXCEPTION_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("PaperAdminExportStartType", PAPER_ADMIN_EXPORT_START_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for MemberSpaceLimitsAddExceptionType { +impl ::serde::ser::Serialize for PaperAdminExportStartType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("MemberSpaceLimitsAddExceptionType", 1)?; + let mut s = serializer.serialize_struct("PaperAdminExportStartType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Changed member space limit type for team. +/// Changed whether Dropbox Paper, when enabled, is deployed to all members or to specific members. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct MemberSpaceLimitsChangeCapsTypePolicyDetails { - /// Previous space limit type. - pub previous_value: SpaceCapsType, - /// New space limit type. - pub new_value: SpaceCapsType, +pub struct PaperChangeDeploymentPolicyDetails { + /// New Dropbox Paper deployment policy. + pub new_value: crate::types::team_policies::PaperDeploymentPolicy, + /// Previous Dropbox Paper deployment policy. Might be missing due to historical data gap. + pub previous_value: Option, } -impl MemberSpaceLimitsChangeCapsTypePolicyDetails { - pub fn new(previous_value: SpaceCapsType, new_value: SpaceCapsType) -> Self { - MemberSpaceLimitsChangeCapsTypePolicyDetails { - previous_value, +impl PaperChangeDeploymentPolicyDetails { + pub fn new(new_value: crate::types::team_policies::PaperDeploymentPolicy) -> Self { + PaperChangeDeploymentPolicyDetails { new_value, + previous_value: None, } } + + pub fn with_previous_value( + mut self, + value: crate::types::team_policies::PaperDeploymentPolicy, + ) -> Self { + self.previous_value = Some(value); + self + } } -const MEMBER_SPACE_LIMITS_CHANGE_CAPS_TYPE_POLICY_DETAILS_FIELDS: &[&str] = &["previous_value", - "new_value"]; -impl MemberSpaceLimitsChangeCapsTypePolicyDetails { +const PAPER_CHANGE_DEPLOYMENT_POLICY_DETAILS_FIELDS: &[&str] = &["new_value", + "previous_value"]; +impl PaperChangeDeploymentPolicyDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_previous_value = None; + ) -> Result, V::Error> { let mut field_new_value = None; + let mut field_previous_value = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "previous_value" => { - if field_previous_value.is_some() { - return Err(::serde::de::Error::duplicate_field("previous_value")); - } - field_previous_value = Some(map.next_value()?); - } "new_value" => { if field_new_value.is_some() { return Err(::serde::de::Error::duplicate_field("new_value")); } field_new_value = Some(map.next_value()?); } + "previous_value" => { + if field_previous_value.is_some() { + return Err(::serde::de::Error::duplicate_field("previous_value")); + } + field_previous_value = Some(map.next_value()?); + } _ => { // unknown field allowed and ignored map.next_value::<::serde_json::Value>()?; @@ -63021,9 +84795,9 @@ impl MemberSpaceLimitsChangeCapsTypePolicyDetails { if optional && nothing { return Ok(None); } - let result = MemberSpaceLimitsChangeCapsTypePolicyDetails { - previous_value: field_previous_value.ok_or_else(|| ::serde::de::Error::missing_field("previous_value"))?, + let result = PaperChangeDeploymentPolicyDetails { new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, + previous_value: field_previous_value.and_then(Option::flatten), }; Ok(Some(result)) } @@ -63033,35 +84807,37 @@ impl MemberSpaceLimitsChangeCapsTypePolicyDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("previous_value", &self.previous_value)?; s.serialize_field("new_value", &self.new_value)?; + if let Some(val) = &self.previous_value { + s.serialize_field("previous_value", val)?; + } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for MemberSpaceLimitsChangeCapsTypePolicyDetails { +impl<'de> ::serde::de::Deserialize<'de> for PaperChangeDeploymentPolicyDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = MemberSpaceLimitsChangeCapsTypePolicyDetails; + type Value = PaperChangeDeploymentPolicyDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a MemberSpaceLimitsChangeCapsTypePolicyDetails struct") + f.write_str("a PaperChangeDeploymentPolicyDetails struct") } fn visit_map>(self, map: V) -> Result { - MemberSpaceLimitsChangeCapsTypePolicyDetails::internal_deserialize(map) + PaperChangeDeploymentPolicyDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("MemberSpaceLimitsChangeCapsTypePolicyDetails", MEMBER_SPACE_LIMITS_CHANGE_CAPS_TYPE_POLICY_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("PaperChangeDeploymentPolicyDetails", PAPER_CHANGE_DEPLOYMENT_POLICY_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for MemberSpaceLimitsChangeCapsTypePolicyDetails { +impl ::serde::ser::Serialize for PaperChangeDeploymentPolicyDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("MemberSpaceLimitsChangeCapsTypePolicyDetails", 2)?; + let mut s = serializer.serialize_struct("PaperChangeDeploymentPolicyDetails", 2)?; self.internal_serialize::(&mut s)?; s.end() } @@ -63069,30 +84845,30 @@ impl ::serde::ser::Serialize for MemberSpaceLimitsChangeCapsTypePolicyDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct MemberSpaceLimitsChangeCapsTypePolicyType { +pub struct PaperChangeDeploymentPolicyType { pub description: String, } -impl MemberSpaceLimitsChangeCapsTypePolicyType { +impl PaperChangeDeploymentPolicyType { pub fn new(description: String) -> Self { - MemberSpaceLimitsChangeCapsTypePolicyType { + PaperChangeDeploymentPolicyType { description, } } } -const MEMBER_SPACE_LIMITS_CHANGE_CAPS_TYPE_POLICY_TYPE_FIELDS: &[&str] = &["description"]; -impl MemberSpaceLimitsChangeCapsTypePolicyType { +const PAPER_CHANGE_DEPLOYMENT_POLICY_TYPE_FIELDS: &[&str] = &["description"]; +impl PaperChangeDeploymentPolicyType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -63113,7 +84889,7 @@ impl MemberSpaceLimitsChangeCapsTypePolicyType { if optional && nothing { return Ok(None); } - let result = MemberSpaceLimitsChangeCapsTypePolicyType { + let result = PaperChangeDeploymentPolicyType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -63129,78 +84905,67 @@ impl MemberSpaceLimitsChangeCapsTypePolicyType { } } -impl<'de> ::serde::de::Deserialize<'de> for MemberSpaceLimitsChangeCapsTypePolicyType { +impl<'de> ::serde::de::Deserialize<'de> for PaperChangeDeploymentPolicyType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = MemberSpaceLimitsChangeCapsTypePolicyType; + type Value = PaperChangeDeploymentPolicyType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a MemberSpaceLimitsChangeCapsTypePolicyType struct") + f.write_str("a PaperChangeDeploymentPolicyType struct") } fn visit_map>(self, map: V) -> Result { - MemberSpaceLimitsChangeCapsTypePolicyType::internal_deserialize(map) + PaperChangeDeploymentPolicyType::internal_deserialize(map) } } - deserializer.deserialize_struct("MemberSpaceLimitsChangeCapsTypePolicyType", MEMBER_SPACE_LIMITS_CHANGE_CAPS_TYPE_POLICY_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("PaperChangeDeploymentPolicyType", PAPER_CHANGE_DEPLOYMENT_POLICY_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for MemberSpaceLimitsChangeCapsTypePolicyType { +impl ::serde::ser::Serialize for PaperChangeDeploymentPolicyType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("MemberSpaceLimitsChangeCapsTypePolicyType", 1)?; + let mut s = serializer.serialize_struct("PaperChangeDeploymentPolicyType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Changed custom member space limit. +/// Changed whether non-members can view Paper docs with link. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct MemberSpaceLimitsChangeCustomQuotaDetails { - /// Previous custom quota value in bytes. - pub previous_value: u64, - /// New custom quota value in bytes. - pub new_value: u64, +pub struct PaperChangeMemberLinkPolicyDetails { + /// New paper external link accessibility policy. + pub new_value: PaperMemberPolicy, } -impl MemberSpaceLimitsChangeCustomQuotaDetails { - pub fn new(previous_value: u64, new_value: u64) -> Self { - MemberSpaceLimitsChangeCustomQuotaDetails { - previous_value, +impl PaperChangeMemberLinkPolicyDetails { + pub fn new(new_value: PaperMemberPolicy) -> Self { + PaperChangeMemberLinkPolicyDetails { new_value, } } } -const MEMBER_SPACE_LIMITS_CHANGE_CUSTOM_QUOTA_DETAILS_FIELDS: &[&str] = &["previous_value", - "new_value"]; -impl MemberSpaceLimitsChangeCustomQuotaDetails { +const PAPER_CHANGE_MEMBER_LINK_POLICY_DETAILS_FIELDS: &[&str] = &["new_value"]; +impl PaperChangeMemberLinkPolicyDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_previous_value = None; + ) -> Result, V::Error> { let mut field_new_value = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "previous_value" => { - if field_previous_value.is_some() { - return Err(::serde::de::Error::duplicate_field("previous_value")); - } - field_previous_value = Some(map.next_value()?); - } "new_value" => { if field_new_value.is_some() { return Err(::serde::de::Error::duplicate_field("new_value")); @@ -63216,8 +84981,7 @@ impl MemberSpaceLimitsChangeCustomQuotaDetails { if optional && nothing { return Ok(None); } - let result = MemberSpaceLimitsChangeCustomQuotaDetails { - previous_value: field_previous_value.ok_or_else(|| ::serde::de::Error::missing_field("previous_value"))?, + let result = PaperChangeMemberLinkPolicyDetails { new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, }; Ok(Some(result)) @@ -63228,35 +84992,34 @@ impl MemberSpaceLimitsChangeCustomQuotaDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("previous_value", &self.previous_value)?; s.serialize_field("new_value", &self.new_value)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for MemberSpaceLimitsChangeCustomQuotaDetails { +impl<'de> ::serde::de::Deserialize<'de> for PaperChangeMemberLinkPolicyDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = MemberSpaceLimitsChangeCustomQuotaDetails; + type Value = PaperChangeMemberLinkPolicyDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a MemberSpaceLimitsChangeCustomQuotaDetails struct") + f.write_str("a PaperChangeMemberLinkPolicyDetails struct") } fn visit_map>(self, map: V) -> Result { - MemberSpaceLimitsChangeCustomQuotaDetails::internal_deserialize(map) + PaperChangeMemberLinkPolicyDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("MemberSpaceLimitsChangeCustomQuotaDetails", MEMBER_SPACE_LIMITS_CHANGE_CUSTOM_QUOTA_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("PaperChangeMemberLinkPolicyDetails", PAPER_CHANGE_MEMBER_LINK_POLICY_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for MemberSpaceLimitsChangeCustomQuotaDetails { +impl ::serde::ser::Serialize for PaperChangeMemberLinkPolicyDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("MemberSpaceLimitsChangeCustomQuotaDetails", 2)?; + let mut s = serializer.serialize_struct("PaperChangeMemberLinkPolicyDetails", 1)?; self.internal_serialize::(&mut s)?; s.end() } @@ -63264,30 +85027,30 @@ impl ::serde::ser::Serialize for MemberSpaceLimitsChangeCustomQuotaDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct MemberSpaceLimitsChangeCustomQuotaType { +pub struct PaperChangeMemberLinkPolicyType { pub description: String, } -impl MemberSpaceLimitsChangeCustomQuotaType { +impl PaperChangeMemberLinkPolicyType { pub fn new(description: String) -> Self { - MemberSpaceLimitsChangeCustomQuotaType { + PaperChangeMemberLinkPolicyType { description, } } } -const MEMBER_SPACE_LIMITS_CHANGE_CUSTOM_QUOTA_TYPE_FIELDS: &[&str] = &["description"]; -impl MemberSpaceLimitsChangeCustomQuotaType { +const PAPER_CHANGE_MEMBER_LINK_POLICY_TYPE_FIELDS: &[&str] = &["description"]; +impl PaperChangeMemberLinkPolicyType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -63308,7 +85071,7 @@ impl MemberSpaceLimitsChangeCustomQuotaType { if optional && nothing { return Ok(None); } - let result = MemberSpaceLimitsChangeCustomQuotaType { + let result = PaperChangeMemberLinkPolicyType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -63324,90 +85087,104 @@ impl MemberSpaceLimitsChangeCustomQuotaType { } } -impl<'de> ::serde::de::Deserialize<'de> for MemberSpaceLimitsChangeCustomQuotaType { +impl<'de> ::serde::de::Deserialize<'de> for PaperChangeMemberLinkPolicyType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = MemberSpaceLimitsChangeCustomQuotaType; + type Value = PaperChangeMemberLinkPolicyType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a MemberSpaceLimitsChangeCustomQuotaType struct") + f.write_str("a PaperChangeMemberLinkPolicyType struct") } fn visit_map>(self, map: V) -> Result { - MemberSpaceLimitsChangeCustomQuotaType::internal_deserialize(map) + PaperChangeMemberLinkPolicyType::internal_deserialize(map) } } - deserializer.deserialize_struct("MemberSpaceLimitsChangeCustomQuotaType", MEMBER_SPACE_LIMITS_CHANGE_CUSTOM_QUOTA_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("PaperChangeMemberLinkPolicyType", PAPER_CHANGE_MEMBER_LINK_POLICY_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for MemberSpaceLimitsChangeCustomQuotaType { +impl ::serde::ser::Serialize for PaperChangeMemberLinkPolicyType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("MemberSpaceLimitsChangeCustomQuotaType", 1)?; + let mut s = serializer.serialize_struct("PaperChangeMemberLinkPolicyType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Changed team default member space limit. -#[derive(Debug, Clone, PartialEq, Eq, Default)] +/// Changed whether members can share Paper docs outside team, and if docs are accessible only by +/// team members or anyone by default. +#[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct MemberSpaceLimitsChangePolicyDetails { - /// Previous team default limit value in bytes. Might be missing due to historical data gap. - pub previous_value: Option, - /// New team default limit value in bytes. Might be missing due to historical data gap. - pub new_value: Option, +pub struct PaperChangeMemberPolicyDetails { + /// New paper external accessibility policy. + pub new_value: PaperMemberPolicy, + /// Previous paper external accessibility policy. Might be missing due to historical data gap. + pub previous_value: Option, } -impl MemberSpaceLimitsChangePolicyDetails { - pub fn with_previous_value(mut self, value: u64) -> Self { - self.previous_value = Some(value); - self +impl PaperChangeMemberPolicyDetails { + pub fn new(new_value: PaperMemberPolicy) -> Self { + PaperChangeMemberPolicyDetails { + new_value, + previous_value: None, + } } - pub fn with_new_value(mut self, value: u64) -> Self { - self.new_value = Some(value); + pub fn with_previous_value(mut self, value: PaperMemberPolicy) -> Self { + self.previous_value = Some(value); self } } -const MEMBER_SPACE_LIMITS_CHANGE_POLICY_DETAILS_FIELDS: &[&str] = &["previous_value", - "new_value"]; -impl MemberSpaceLimitsChangePolicyDetails { - // no _opt deserializer +const PAPER_CHANGE_MEMBER_POLICY_DETAILS_FIELDS: &[&str] = &["new_value", + "previous_value"]; +impl PaperChangeMemberPolicyDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - ) -> Result { - let mut field_previous_value = None; + optional: bool, + ) -> Result, V::Error> { let mut field_new_value = None; + let mut field_previous_value = None; + let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { + nothing = false; match key { - "previous_value" => { - if field_previous_value.is_some() { - return Err(::serde::de::Error::duplicate_field("previous_value")); - } - field_previous_value = Some(map.next_value()?); - } "new_value" => { if field_new_value.is_some() { return Err(::serde::de::Error::duplicate_field("new_value")); } field_new_value = Some(map.next_value()?); } + "previous_value" => { + if field_previous_value.is_some() { + return Err(::serde::de::Error::duplicate_field("previous_value")); + } + field_previous_value = Some(map.next_value()?); + } _ => { // unknown field allowed and ignored map.next_value::<::serde_json::Value>()?; } } } - let result = MemberSpaceLimitsChangePolicyDetails { + if optional && nothing { + return Ok(None); + } + let result = PaperChangeMemberPolicyDetails { + new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, previous_value: field_previous_value.and_then(Option::flatten), - new_value: field_new_value.and_then(Option::flatten), }; - Ok(result) + Ok(Some(result)) } pub(crate) fn internal_serialize( @@ -63415,39 +85192,37 @@ impl MemberSpaceLimitsChangePolicyDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; + s.serialize_field("new_value", &self.new_value)?; if let Some(val) = &self.previous_value { s.serialize_field("previous_value", val)?; } - if let Some(val) = &self.new_value { - s.serialize_field("new_value", val)?; - } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for MemberSpaceLimitsChangePolicyDetails { +impl<'de> ::serde::de::Deserialize<'de> for PaperChangeMemberPolicyDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = MemberSpaceLimitsChangePolicyDetails; + type Value = PaperChangeMemberPolicyDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a MemberSpaceLimitsChangePolicyDetails struct") + f.write_str("a PaperChangeMemberPolicyDetails struct") } fn visit_map>(self, map: V) -> Result { - MemberSpaceLimitsChangePolicyDetails::internal_deserialize(map) + PaperChangeMemberPolicyDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("MemberSpaceLimitsChangePolicyDetails", MEMBER_SPACE_LIMITS_CHANGE_POLICY_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("PaperChangeMemberPolicyDetails", PAPER_CHANGE_MEMBER_POLICY_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for MemberSpaceLimitsChangePolicyDetails { +impl ::serde::ser::Serialize for PaperChangeMemberPolicyDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("MemberSpaceLimitsChangePolicyDetails", 2)?; + let mut s = serializer.serialize_struct("PaperChangeMemberPolicyDetails", 2)?; self.internal_serialize::(&mut s)?; s.end() } @@ -63455,30 +85230,30 @@ impl ::serde::ser::Serialize for MemberSpaceLimitsChangePolicyDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct MemberSpaceLimitsChangePolicyType { +pub struct PaperChangeMemberPolicyType { pub description: String, } -impl MemberSpaceLimitsChangePolicyType { +impl PaperChangeMemberPolicyType { pub fn new(description: String) -> Self { - MemberSpaceLimitsChangePolicyType { + PaperChangeMemberPolicyType { description, } } } -const MEMBER_SPACE_LIMITS_CHANGE_POLICY_TYPE_FIELDS: &[&str] = &["description"]; -impl MemberSpaceLimitsChangePolicyType { +const PAPER_CHANGE_MEMBER_POLICY_TYPE_FIELDS: &[&str] = &["description"]; +impl PaperChangeMemberPolicyType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -63499,7 +85274,7 @@ impl MemberSpaceLimitsChangePolicyType { if optional && nothing { return Ok(None); } - let result = MemberSpaceLimitsChangePolicyType { + let result = PaperChangeMemberPolicyType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -63515,84 +85290,92 @@ impl MemberSpaceLimitsChangePolicyType { } } -impl<'de> ::serde::de::Deserialize<'de> for MemberSpaceLimitsChangePolicyType { +impl<'de> ::serde::de::Deserialize<'de> for PaperChangeMemberPolicyType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = MemberSpaceLimitsChangePolicyType; + type Value = PaperChangeMemberPolicyType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a MemberSpaceLimitsChangePolicyType struct") + f.write_str("a PaperChangeMemberPolicyType struct") } fn visit_map>(self, map: V) -> Result { - MemberSpaceLimitsChangePolicyType::internal_deserialize(map) + PaperChangeMemberPolicyType::internal_deserialize(map) } } - deserializer.deserialize_struct("MemberSpaceLimitsChangePolicyType", MEMBER_SPACE_LIMITS_CHANGE_POLICY_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("PaperChangeMemberPolicyType", PAPER_CHANGE_MEMBER_POLICY_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for MemberSpaceLimitsChangePolicyType { +impl ::serde::ser::Serialize for PaperChangeMemberPolicyType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("MemberSpaceLimitsChangePolicyType", 1)?; + let mut s = serializer.serialize_struct("PaperChangeMemberPolicyType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Changed space limit status. +/// Enabled/disabled Dropbox Paper for team. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct MemberSpaceLimitsChangeStatusDetails { - /// Previous storage quota status. - pub previous_value: SpaceLimitsStatus, - /// New storage quota status. - pub new_value: SpaceLimitsStatus, +pub struct PaperChangePolicyDetails { + /// New Dropbox Paper policy. + pub new_value: crate::types::team_policies::PaperEnabledPolicy, + /// Previous Dropbox Paper policy. Might be missing due to historical data gap. + pub previous_value: Option, } -impl MemberSpaceLimitsChangeStatusDetails { - pub fn new(previous_value: SpaceLimitsStatus, new_value: SpaceLimitsStatus) -> Self { - MemberSpaceLimitsChangeStatusDetails { - previous_value, +impl PaperChangePolicyDetails { + pub fn new(new_value: crate::types::team_policies::PaperEnabledPolicy) -> Self { + PaperChangePolicyDetails { new_value, + previous_value: None, } } + + pub fn with_previous_value( + mut self, + value: crate::types::team_policies::PaperEnabledPolicy, + ) -> Self { + self.previous_value = Some(value); + self + } } -const MEMBER_SPACE_LIMITS_CHANGE_STATUS_DETAILS_FIELDS: &[&str] = &["previous_value", - "new_value"]; -impl MemberSpaceLimitsChangeStatusDetails { +const PAPER_CHANGE_POLICY_DETAILS_FIELDS: &[&str] = &["new_value", + "previous_value"]; +impl PaperChangePolicyDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_previous_value = None; + ) -> Result, V::Error> { let mut field_new_value = None; + let mut field_previous_value = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "previous_value" => { - if field_previous_value.is_some() { - return Err(::serde::de::Error::duplicate_field("previous_value")); - } - field_previous_value = Some(map.next_value()?); - } "new_value" => { if field_new_value.is_some() { return Err(::serde::de::Error::duplicate_field("new_value")); } field_new_value = Some(map.next_value()?); } + "previous_value" => { + if field_previous_value.is_some() { + return Err(::serde::de::Error::duplicate_field("previous_value")); + } + field_previous_value = Some(map.next_value()?); + } _ => { // unknown field allowed and ignored map.next_value::<::serde_json::Value>()?; @@ -63602,9 +85385,9 @@ impl MemberSpaceLimitsChangeStatusDetails { if optional && nothing { return Ok(None); } - let result = MemberSpaceLimitsChangeStatusDetails { - previous_value: field_previous_value.ok_or_else(|| ::serde::de::Error::missing_field("previous_value"))?, + let result = PaperChangePolicyDetails { new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, + previous_value: field_previous_value.and_then(Option::flatten), }; Ok(Some(result)) } @@ -63614,35 +85397,37 @@ impl MemberSpaceLimitsChangeStatusDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("previous_value", &self.previous_value)?; s.serialize_field("new_value", &self.new_value)?; + if let Some(val) = &self.previous_value { + s.serialize_field("previous_value", val)?; + } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for MemberSpaceLimitsChangeStatusDetails { +impl<'de> ::serde::de::Deserialize<'de> for PaperChangePolicyDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = MemberSpaceLimitsChangeStatusDetails; + type Value = PaperChangePolicyDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a MemberSpaceLimitsChangeStatusDetails struct") + f.write_str("a PaperChangePolicyDetails struct") } fn visit_map>(self, map: V) -> Result { - MemberSpaceLimitsChangeStatusDetails::internal_deserialize(map) + PaperChangePolicyDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("MemberSpaceLimitsChangeStatusDetails", MEMBER_SPACE_LIMITS_CHANGE_STATUS_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("PaperChangePolicyDetails", PAPER_CHANGE_POLICY_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for MemberSpaceLimitsChangeStatusDetails { +impl ::serde::ser::Serialize for PaperChangePolicyDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("MemberSpaceLimitsChangeStatusDetails", 2)?; + let mut s = serializer.serialize_struct("PaperChangePolicyDetails", 2)?; self.internal_serialize::(&mut s)?; s.end() } @@ -63650,30 +85435,30 @@ impl ::serde::ser::Serialize for MemberSpaceLimitsChangeStatusDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct MemberSpaceLimitsChangeStatusType { +pub struct PaperChangePolicyType { pub description: String, } -impl MemberSpaceLimitsChangeStatusType { +impl PaperChangePolicyType { pub fn new(description: String) -> Self { - MemberSpaceLimitsChangeStatusType { + PaperChangePolicyType { description, } } } -const MEMBER_SPACE_LIMITS_CHANGE_STATUS_TYPE_FIELDS: &[&str] = &["description"]; -impl MemberSpaceLimitsChangeStatusType { +const PAPER_CHANGE_POLICY_TYPE_FIELDS: &[&str] = &["description"]; +impl PaperChangePolicyType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -63694,7 +85479,7 @@ impl MemberSpaceLimitsChangeStatusType { if optional && nothing { return Ok(None); } - let result = MemberSpaceLimitsChangeStatusType { + let result = PaperChangePolicyType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -63710,114 +85495,72 @@ impl MemberSpaceLimitsChangeStatusType { } } -impl<'de> ::serde::de::Deserialize<'de> for MemberSpaceLimitsChangeStatusType { +impl<'de> ::serde::de::Deserialize<'de> for PaperChangePolicyType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = MemberSpaceLimitsChangeStatusType; + type Value = PaperChangePolicyType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a MemberSpaceLimitsChangeStatusType struct") + f.write_str("a PaperChangePolicyType struct") } fn visit_map>(self, map: V) -> Result { - MemberSpaceLimitsChangeStatusType::internal_deserialize(map) + PaperChangePolicyType::internal_deserialize(map) } } - deserializer.deserialize_struct("MemberSpaceLimitsChangeStatusType", MEMBER_SPACE_LIMITS_CHANGE_STATUS_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("PaperChangePolicyType", PAPER_CHANGE_POLICY_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for MemberSpaceLimitsChangeStatusType { +impl ::serde::ser::Serialize for PaperChangePolicyType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("MemberSpaceLimitsChangeStatusType", 1)?; + let mut s = serializer.serialize_struct("PaperChangePolicyType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Removed custom member space limit. -#[derive(Debug, Clone, PartialEq, Eq, Default)] -#[non_exhaustive] // structs may have more fields added in the future. -pub struct MemberSpaceLimitsRemoveCustomQuotaDetails { -} - -const MEMBER_SPACE_LIMITS_REMOVE_CUSTOM_QUOTA_DETAILS_FIELDS: &[&str] = &[]; -impl MemberSpaceLimitsRemoveCustomQuotaDetails { - // no _opt deserializer - pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( - mut map: V, - ) -> Result { - // ignore any fields found; none are presently recognized - crate::eat_json_fields(&mut map)?; - Ok(MemberSpaceLimitsRemoveCustomQuotaDetails {}) - } -} - -impl<'de> ::serde::de::Deserialize<'de> for MemberSpaceLimitsRemoveCustomQuotaDetails { - fn deserialize>(deserializer: D) -> Result { - // struct deserializer - use serde::de::{MapAccess, Visitor}; - struct StructVisitor; - impl<'de> Visitor<'de> for StructVisitor { - type Value = MemberSpaceLimitsRemoveCustomQuotaDetails; - fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a MemberSpaceLimitsRemoveCustomQuotaDetails struct") - } - fn visit_map>(self, map: V) -> Result { - MemberSpaceLimitsRemoveCustomQuotaDetails::internal_deserialize(map) - } - } - deserializer.deserialize_struct("MemberSpaceLimitsRemoveCustomQuotaDetails", MEMBER_SPACE_LIMITS_REMOVE_CUSTOM_QUOTA_DETAILS_FIELDS, StructVisitor) - } -} - -impl ::serde::ser::Serialize for MemberSpaceLimitsRemoveCustomQuotaDetails { - fn serialize(&self, serializer: S) -> Result { - // struct serializer - use serde::ser::SerializeStruct; - serializer.serialize_struct("MemberSpaceLimitsRemoveCustomQuotaDetails", 0)?.end() - } -} - +/// Added users and/or groups to Paper doc/folder. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct MemberSpaceLimitsRemoveCustomQuotaType { - pub description: String, +pub struct PaperContentAddMemberDetails { + /// Event unique identifier. + pub event_uuid: String, } -impl MemberSpaceLimitsRemoveCustomQuotaType { - pub fn new(description: String) -> Self { - MemberSpaceLimitsRemoveCustomQuotaType { - description, +impl PaperContentAddMemberDetails { + pub fn new(event_uuid: String) -> Self { + PaperContentAddMemberDetails { + event_uuid, } } } -const MEMBER_SPACE_LIMITS_REMOVE_CUSTOM_QUOTA_TYPE_FIELDS: &[&str] = &["description"]; -impl MemberSpaceLimitsRemoveCustomQuotaType { +const PAPER_CONTENT_ADD_MEMBER_DETAILS_FIELDS: &[&str] = &["event_uuid"]; +impl PaperContentAddMemberDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_description = None; + ) -> Result, V::Error> { + let mut field_event_uuid = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "description" => { - if field_description.is_some() { - return Err(::serde::de::Error::duplicate_field("description")); + "event_uuid" => { + if field_event_uuid.is_some() { + return Err(::serde::de::Error::duplicate_field("event_uuid")); } - field_description = Some(map.next_value()?); + field_event_uuid = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -63828,8 +85571,8 @@ impl MemberSpaceLimitsRemoveCustomQuotaType { if optional && nothing { return Ok(None); } - let result = MemberSpaceLimitsRemoveCustomQuotaType { - description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + let result = PaperContentAddMemberDetails { + event_uuid: field_event_uuid.ok_or_else(|| ::serde::de::Error::missing_field("event_uuid"))?, }; Ok(Some(result)) } @@ -63839,109 +85582,65 @@ impl MemberSpaceLimitsRemoveCustomQuotaType { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("description", &self.description)?; + s.serialize_field("event_uuid", &self.event_uuid)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for MemberSpaceLimitsRemoveCustomQuotaType { +impl<'de> ::serde::de::Deserialize<'de> for PaperContentAddMemberDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = MemberSpaceLimitsRemoveCustomQuotaType; + type Value = PaperContentAddMemberDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a MemberSpaceLimitsRemoveCustomQuotaType struct") + f.write_str("a PaperContentAddMemberDetails struct") } fn visit_map>(self, map: V) -> Result { - MemberSpaceLimitsRemoveCustomQuotaType::internal_deserialize(map) + PaperContentAddMemberDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("MemberSpaceLimitsRemoveCustomQuotaType", MEMBER_SPACE_LIMITS_REMOVE_CUSTOM_QUOTA_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("PaperContentAddMemberDetails", PAPER_CONTENT_ADD_MEMBER_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for MemberSpaceLimitsRemoveCustomQuotaType { +impl ::serde::ser::Serialize for PaperContentAddMemberDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("MemberSpaceLimitsRemoveCustomQuotaType", 1)?; + let mut s = serializer.serialize_struct("PaperContentAddMemberDetails", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Removed members from member space limit exception list. -#[derive(Debug, Clone, PartialEq, Eq, Default)] -#[non_exhaustive] // structs may have more fields added in the future. -pub struct MemberSpaceLimitsRemoveExceptionDetails { -} - -const MEMBER_SPACE_LIMITS_REMOVE_EXCEPTION_DETAILS_FIELDS: &[&str] = &[]; -impl MemberSpaceLimitsRemoveExceptionDetails { - // no _opt deserializer - pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( - mut map: V, - ) -> Result { - // ignore any fields found; none are presently recognized - crate::eat_json_fields(&mut map)?; - Ok(MemberSpaceLimitsRemoveExceptionDetails {}) - } -} - -impl<'de> ::serde::de::Deserialize<'de> for MemberSpaceLimitsRemoveExceptionDetails { - fn deserialize>(deserializer: D) -> Result { - // struct deserializer - use serde::de::{MapAccess, Visitor}; - struct StructVisitor; - impl<'de> Visitor<'de> for StructVisitor { - type Value = MemberSpaceLimitsRemoveExceptionDetails; - fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a MemberSpaceLimitsRemoveExceptionDetails struct") - } - fn visit_map>(self, map: V) -> Result { - MemberSpaceLimitsRemoveExceptionDetails::internal_deserialize(map) - } - } - deserializer.deserialize_struct("MemberSpaceLimitsRemoveExceptionDetails", MEMBER_SPACE_LIMITS_REMOVE_EXCEPTION_DETAILS_FIELDS, StructVisitor) - } -} - -impl ::serde::ser::Serialize for MemberSpaceLimitsRemoveExceptionDetails { - fn serialize(&self, serializer: S) -> Result { - // struct serializer - use serde::ser::SerializeStruct; - serializer.serialize_struct("MemberSpaceLimitsRemoveExceptionDetails", 0)?.end() - } -} - #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct MemberSpaceLimitsRemoveExceptionType { +pub struct PaperContentAddMemberType { pub description: String, } -impl MemberSpaceLimitsRemoveExceptionType { +impl PaperContentAddMemberType { pub fn new(description: String) -> Self { - MemberSpaceLimitsRemoveExceptionType { + PaperContentAddMemberType { description, } } } -const MEMBER_SPACE_LIMITS_REMOVE_EXCEPTION_TYPE_FIELDS: &[&str] = &["description"]; -impl MemberSpaceLimitsRemoveExceptionType { +const PAPER_CONTENT_ADD_MEMBER_TYPE_FIELDS: &[&str] = &["description"]; +impl PaperContentAddMemberType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -63962,7 +85661,7 @@ impl MemberSpaceLimitsRemoveExceptionType { if optional && nothing { return Ok(None); } - let result = MemberSpaceLimitsRemoveExceptionType { + let result = PaperContentAddMemberType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -63978,171 +85677,94 @@ impl MemberSpaceLimitsRemoveExceptionType { } } -impl<'de> ::serde::de::Deserialize<'de> for MemberSpaceLimitsRemoveExceptionType { +impl<'de> ::serde::de::Deserialize<'de> for PaperContentAddMemberType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = MemberSpaceLimitsRemoveExceptionType; + type Value = PaperContentAddMemberType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a MemberSpaceLimitsRemoveExceptionType struct") + f.write_str("a PaperContentAddMemberType struct") } fn visit_map>(self, map: V) -> Result { - MemberSpaceLimitsRemoveExceptionType::internal_deserialize(map) + PaperContentAddMemberType::internal_deserialize(map) } } - deserializer.deserialize_struct("MemberSpaceLimitsRemoveExceptionType", MEMBER_SPACE_LIMITS_REMOVE_EXCEPTION_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("PaperContentAddMemberType", PAPER_CONTENT_ADD_MEMBER_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for MemberSpaceLimitsRemoveExceptionType { +impl ::serde::ser::Serialize for PaperContentAddMemberType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("MemberSpaceLimitsRemoveExceptionType", 1)?; + let mut s = serializer.serialize_struct("PaperContentAddMemberType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -#[derive(Debug, Clone, PartialEq, Eq)] -#[non_exhaustive] // variants may be added in the future -pub enum MemberStatus { - Active, - Invited, - MovedToAnotherTeam, - NotJoined, - Removed, - Suspended, - /// Catch-all used for unrecognized values returned from the server. Encountering this value - /// typically indicates that this SDK version is out of date. - Other, -} - -impl<'de> ::serde::de::Deserialize<'de> for MemberStatus { - fn deserialize>(deserializer: D) -> Result { - // union deserializer - use serde::de::{self, MapAccess, Visitor}; - struct EnumVisitor; - impl<'de> Visitor<'de> for EnumVisitor { - type Value = MemberStatus; - fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a MemberStatus structure") - } - fn visit_map>(self, mut map: V) -> Result { - let tag: &str = match map.next_key()? { - Some(".tag") => map.next_value()?, - _ => return Err(de::Error::missing_field(".tag")) - }; - let value = match tag { - "active" => MemberStatus::Active, - "invited" => MemberStatus::Invited, - "moved_to_another_team" => MemberStatus::MovedToAnotherTeam, - "not_joined" => MemberStatus::NotJoined, - "removed" => MemberStatus::Removed, - "suspended" => MemberStatus::Suspended, - _ => MemberStatus::Other, - }; - crate::eat_json_fields(&mut map)?; - Ok(value) - } - } - const VARIANTS: &[&str] = &["active", - "invited", - "moved_to_another_team", - "not_joined", - "removed", - "suspended", - "other"]; - deserializer.deserialize_struct("MemberStatus", VARIANTS, EnumVisitor) - } -} - -impl ::serde::ser::Serialize for MemberStatus { - fn serialize(&self, serializer: S) -> Result { - // union serializer - use serde::ser::SerializeStruct; - match self { - MemberStatus::Active => { - // unit - let mut s = serializer.serialize_struct("MemberStatus", 1)?; - s.serialize_field(".tag", "active")?; - s.end() - } - MemberStatus::Invited => { - // unit - let mut s = serializer.serialize_struct("MemberStatus", 1)?; - s.serialize_field(".tag", "invited")?; - s.end() - } - MemberStatus::MovedToAnotherTeam => { - // unit - let mut s = serializer.serialize_struct("MemberStatus", 1)?; - s.serialize_field(".tag", "moved_to_another_team")?; - s.end() - } - MemberStatus::NotJoined => { - // unit - let mut s = serializer.serialize_struct("MemberStatus", 1)?; - s.serialize_field(".tag", "not_joined")?; - s.end() - } - MemberStatus::Removed => { - // unit - let mut s = serializer.serialize_struct("MemberStatus", 1)?; - s.serialize_field(".tag", "removed")?; - s.end() - } - MemberStatus::Suspended => { - // unit - let mut s = serializer.serialize_struct("MemberStatus", 1)?; - s.serialize_field(".tag", "suspended")?; - s.end() - } - MemberStatus::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) - } - } -} - -/// Suggested person to add to team. +/// Added Paper doc/folder to folder. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct MemberSuggestDetails { - /// suggested users emails. - pub suggested_members: Vec, +pub struct PaperContentAddToFolderDetails { + /// Event unique identifier. + pub event_uuid: String, + /// Target asset position in the Assets list. + pub target_asset_index: u64, + /// Parent asset position in the Assets list. + pub parent_asset_index: u64, } -impl MemberSuggestDetails { - pub fn new(suggested_members: Vec) -> Self { - MemberSuggestDetails { - suggested_members, +impl PaperContentAddToFolderDetails { + pub fn new(event_uuid: String, target_asset_index: u64, parent_asset_index: u64) -> Self { + PaperContentAddToFolderDetails { + event_uuid, + target_asset_index, + parent_asset_index, } } } -const MEMBER_SUGGEST_DETAILS_FIELDS: &[&str] = &["suggested_members"]; -impl MemberSuggestDetails { +const PAPER_CONTENT_ADD_TO_FOLDER_DETAILS_FIELDS: &[&str] = &["event_uuid", + "target_asset_index", + "parent_asset_index"]; +impl PaperContentAddToFolderDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_suggested_members = None; + ) -> Result, V::Error> { + let mut field_event_uuid = None; + let mut field_target_asset_index = None; + let mut field_parent_asset_index = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "suggested_members" => { - if field_suggested_members.is_some() { - return Err(::serde::de::Error::duplicate_field("suggested_members")); + "event_uuid" => { + if field_event_uuid.is_some() { + return Err(::serde::de::Error::duplicate_field("event_uuid")); } - field_suggested_members = Some(map.next_value()?); + field_event_uuid = Some(map.next_value()?); + } + "target_asset_index" => { + if field_target_asset_index.is_some() { + return Err(::serde::de::Error::duplicate_field("target_asset_index")); + } + field_target_asset_index = Some(map.next_value()?); + } + "parent_asset_index" => { + if field_parent_asset_index.is_some() { + return Err(::serde::de::Error::duplicate_field("parent_asset_index")); + } + field_parent_asset_index = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -64153,8 +85775,10 @@ impl MemberSuggestDetails { if optional && nothing { return Ok(None); } - let result = MemberSuggestDetails { - suggested_members: field_suggested_members.ok_or_else(|| ::serde::de::Error::missing_field("suggested_members"))?, + let result = PaperContentAddToFolderDetails { + event_uuid: field_event_uuid.ok_or_else(|| ::serde::de::Error::missing_field("event_uuid"))?, + target_asset_index: field_target_asset_index.ok_or_else(|| ::serde::de::Error::missing_field("target_asset_index"))?, + parent_asset_index: field_parent_asset_index.ok_or_else(|| ::serde::de::Error::missing_field("parent_asset_index"))?, }; Ok(Some(result)) } @@ -64164,34 +85788,36 @@ impl MemberSuggestDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("suggested_members", &self.suggested_members)?; + s.serialize_field("event_uuid", &self.event_uuid)?; + s.serialize_field("target_asset_index", &self.target_asset_index)?; + s.serialize_field("parent_asset_index", &self.parent_asset_index)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for MemberSuggestDetails { +impl<'de> ::serde::de::Deserialize<'de> for PaperContentAddToFolderDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = MemberSuggestDetails; + type Value = PaperContentAddToFolderDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a MemberSuggestDetails struct") + f.write_str("a PaperContentAddToFolderDetails struct") } fn visit_map>(self, map: V) -> Result { - MemberSuggestDetails::internal_deserialize(map) + PaperContentAddToFolderDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("MemberSuggestDetails", MEMBER_SUGGEST_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("PaperContentAddToFolderDetails", PAPER_CONTENT_ADD_TO_FOLDER_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for MemberSuggestDetails { +impl ::serde::ser::Serialize for PaperContentAddToFolderDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("MemberSuggestDetails", 1)?; + let mut s = serializer.serialize_struct("PaperContentAddToFolderDetails", 3)?; self.internal_serialize::(&mut s)?; s.end() } @@ -64199,30 +85825,30 @@ impl ::serde::ser::Serialize for MemberSuggestDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct MemberSuggestType { +pub struct PaperContentAddToFolderType { pub description: String, } -impl MemberSuggestType { +impl PaperContentAddToFolderType { pub fn new(description: String) -> Self { - MemberSuggestType { + PaperContentAddToFolderType { description, } } } -const MEMBER_SUGGEST_TYPE_FIELDS: &[&str] = &["description"]; -impl MemberSuggestType { +const PAPER_CONTENT_ADD_TO_FOLDER_TYPE_FIELDS: &[&str] = &["description"]; +impl PaperContentAddToFolderType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -64243,7 +85869,7 @@ impl MemberSuggestType { if optional && nothing { return Ok(None); } - let result = MemberSuggestType { + let result = PaperContentAddToFolderType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -64259,88 +85885,72 @@ impl MemberSuggestType { } } -impl<'de> ::serde::de::Deserialize<'de> for MemberSuggestType { +impl<'de> ::serde::de::Deserialize<'de> for PaperContentAddToFolderType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = MemberSuggestType; + type Value = PaperContentAddToFolderType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a MemberSuggestType struct") + f.write_str("a PaperContentAddToFolderType struct") } fn visit_map>(self, map: V) -> Result { - MemberSuggestType::internal_deserialize(map) + PaperContentAddToFolderType::internal_deserialize(map) } } - deserializer.deserialize_struct("MemberSuggestType", MEMBER_SUGGEST_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("PaperContentAddToFolderType", PAPER_CONTENT_ADD_TO_FOLDER_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for MemberSuggestType { +impl ::serde::ser::Serialize for PaperContentAddToFolderType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("MemberSuggestType", 1)?; + let mut s = serializer.serialize_struct("PaperContentAddToFolderType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Enabled/disabled option for team members to suggest people to add to team. +/// Archived Paper doc/folder. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct MemberSuggestionsChangePolicyDetails { - /// New team member suggestions policy. - pub new_value: MemberSuggestionsPolicy, - /// Previous team member suggestions policy. Might be missing due to historical data gap. - pub previous_value: Option, +pub struct PaperContentArchiveDetails { + /// Event unique identifier. + pub event_uuid: String, } -impl MemberSuggestionsChangePolicyDetails { - pub fn new(new_value: MemberSuggestionsPolicy) -> Self { - MemberSuggestionsChangePolicyDetails { - new_value, - previous_value: None, +impl PaperContentArchiveDetails { + pub fn new(event_uuid: String) -> Self { + PaperContentArchiveDetails { + event_uuid, } } - - pub fn with_previous_value(mut self, value: MemberSuggestionsPolicy) -> Self { - self.previous_value = Some(value); - self - } } -const MEMBER_SUGGESTIONS_CHANGE_POLICY_DETAILS_FIELDS: &[&str] = &["new_value", - "previous_value"]; -impl MemberSuggestionsChangePolicyDetails { +const PAPER_CONTENT_ARCHIVE_DETAILS_FIELDS: &[&str] = &["event_uuid"]; +impl PaperContentArchiveDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_new_value = None; - let mut field_previous_value = None; + ) -> Result, V::Error> { + let mut field_event_uuid = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "new_value" => { - if field_new_value.is_some() { - return Err(::serde::de::Error::duplicate_field("new_value")); - } - field_new_value = Some(map.next_value()?); - } - "previous_value" => { - if field_previous_value.is_some() { - return Err(::serde::de::Error::duplicate_field("previous_value")); + "event_uuid" => { + if field_event_uuid.is_some() { + return Err(::serde::de::Error::duplicate_field("event_uuid")); } - field_previous_value = Some(map.next_value()?); + field_event_uuid = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -64351,9 +85961,8 @@ impl MemberSuggestionsChangePolicyDetails { if optional && nothing { return Ok(None); } - let result = MemberSuggestionsChangePolicyDetails { - new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, - previous_value: field_previous_value.and_then(Option::flatten), + let result = PaperContentArchiveDetails { + event_uuid: field_event_uuid.ok_or_else(|| ::serde::de::Error::missing_field("event_uuid"))?, }; Ok(Some(result)) } @@ -64363,37 +85972,34 @@ impl MemberSuggestionsChangePolicyDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("new_value", &self.new_value)?; - if let Some(val) = &self.previous_value { - s.serialize_field("previous_value", val)?; - } + s.serialize_field("event_uuid", &self.event_uuid)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for MemberSuggestionsChangePolicyDetails { +impl<'de> ::serde::de::Deserialize<'de> for PaperContentArchiveDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = MemberSuggestionsChangePolicyDetails; + type Value = PaperContentArchiveDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a MemberSuggestionsChangePolicyDetails struct") + f.write_str("a PaperContentArchiveDetails struct") } fn visit_map>(self, map: V) -> Result { - MemberSuggestionsChangePolicyDetails::internal_deserialize(map) + PaperContentArchiveDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("MemberSuggestionsChangePolicyDetails", MEMBER_SUGGESTIONS_CHANGE_POLICY_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("PaperContentArchiveDetails", PAPER_CONTENT_ARCHIVE_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for MemberSuggestionsChangePolicyDetails { +impl ::serde::ser::Serialize for PaperContentArchiveDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("MemberSuggestionsChangePolicyDetails", 2)?; + let mut s = serializer.serialize_struct("PaperContentArchiveDetails", 1)?; self.internal_serialize::(&mut s)?; s.end() } @@ -64401,30 +86007,30 @@ impl ::serde::ser::Serialize for MemberSuggestionsChangePolicyDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct MemberSuggestionsChangePolicyType { +pub struct PaperContentArchiveType { pub description: String, } -impl MemberSuggestionsChangePolicyType { +impl PaperContentArchiveType { pub fn new(description: String) -> Self { - MemberSuggestionsChangePolicyType { + PaperContentArchiveType { description, } } } -const MEMBER_SUGGESTIONS_CHANGE_POLICY_TYPE_FIELDS: &[&str] = &["description"]; -impl MemberSuggestionsChangePolicyType { +const PAPER_CONTENT_ARCHIVE_TYPE_FIELDS: &[&str] = &["description"]; +impl PaperContentArchiveType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -64445,7 +86051,7 @@ impl MemberSuggestionsChangePolicyType { if optional && nothing { return Ok(None); } - let result = MemberSuggestionsChangePolicyType { + let result = PaperContentArchiveType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -64461,178 +86067,72 @@ impl MemberSuggestionsChangePolicyType { } } -impl<'de> ::serde::de::Deserialize<'de> for MemberSuggestionsChangePolicyType { +impl<'de> ::serde::de::Deserialize<'de> for PaperContentArchiveType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = MemberSuggestionsChangePolicyType; + type Value = PaperContentArchiveType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a MemberSuggestionsChangePolicyType struct") + f.write_str("a PaperContentArchiveType struct") } fn visit_map>(self, map: V) -> Result { - MemberSuggestionsChangePolicyType::internal_deserialize(map) + PaperContentArchiveType::internal_deserialize(map) } } - deserializer.deserialize_struct("MemberSuggestionsChangePolicyType", MEMBER_SUGGESTIONS_CHANGE_POLICY_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("PaperContentArchiveType", PAPER_CONTENT_ARCHIVE_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for MemberSuggestionsChangePolicyType { +impl ::serde::ser::Serialize for PaperContentArchiveType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("MemberSuggestionsChangePolicyType", 1)?; + let mut s = serializer.serialize_struct("PaperContentArchiveType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Member suggestions policy -#[derive(Debug, Clone, PartialEq, Eq)] -#[non_exhaustive] // variants may be added in the future -pub enum MemberSuggestionsPolicy { - Disabled, - Enabled, - /// Catch-all used for unrecognized values returned from the server. Encountering this value - /// typically indicates that this SDK version is out of date. - Other, -} - -impl<'de> ::serde::de::Deserialize<'de> for MemberSuggestionsPolicy { - fn deserialize>(deserializer: D) -> Result { - // union deserializer - use serde::de::{self, MapAccess, Visitor}; - struct EnumVisitor; - impl<'de> Visitor<'de> for EnumVisitor { - type Value = MemberSuggestionsPolicy; - fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a MemberSuggestionsPolicy structure") - } - fn visit_map>(self, mut map: V) -> Result { - let tag: &str = match map.next_key()? { - Some(".tag") => map.next_value()?, - _ => return Err(de::Error::missing_field(".tag")) - }; - let value = match tag { - "disabled" => MemberSuggestionsPolicy::Disabled, - "enabled" => MemberSuggestionsPolicy::Enabled, - _ => MemberSuggestionsPolicy::Other, - }; - crate::eat_json_fields(&mut map)?; - Ok(value) - } - } - const VARIANTS: &[&str] = &["disabled", - "enabled", - "other"]; - deserializer.deserialize_struct("MemberSuggestionsPolicy", VARIANTS, EnumVisitor) - } -} - -impl ::serde::ser::Serialize for MemberSuggestionsPolicy { - fn serialize(&self, serializer: S) -> Result { - // union serializer - use serde::ser::SerializeStruct; - match self { - MemberSuggestionsPolicy::Disabled => { - // unit - let mut s = serializer.serialize_struct("MemberSuggestionsPolicy", 1)?; - s.serialize_field(".tag", "disabled")?; - s.end() - } - MemberSuggestionsPolicy::Enabled => { - // unit - let mut s = serializer.serialize_struct("MemberSuggestionsPolicy", 1)?; - s.serialize_field(".tag", "enabled")?; - s.end() - } - MemberSuggestionsPolicy::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) - } - } -} - -/// Transferred contents of deleted member account to another member. -#[derive(Debug, Clone, PartialEq, Eq, Default)] -#[non_exhaustive] // structs may have more fields added in the future. -pub struct MemberTransferAccountContentsDetails { -} - -const MEMBER_TRANSFER_ACCOUNT_CONTENTS_DETAILS_FIELDS: &[&str] = &[]; -impl MemberTransferAccountContentsDetails { - // no _opt deserializer - pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( - mut map: V, - ) -> Result { - // ignore any fields found; none are presently recognized - crate::eat_json_fields(&mut map)?; - Ok(MemberTransferAccountContentsDetails {}) - } -} - -impl<'de> ::serde::de::Deserialize<'de> for MemberTransferAccountContentsDetails { - fn deserialize>(deserializer: D) -> Result { - // struct deserializer - use serde::de::{MapAccess, Visitor}; - struct StructVisitor; - impl<'de> Visitor<'de> for StructVisitor { - type Value = MemberTransferAccountContentsDetails; - fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a MemberTransferAccountContentsDetails struct") - } - fn visit_map>(self, map: V) -> Result { - MemberTransferAccountContentsDetails::internal_deserialize(map) - } - } - deserializer.deserialize_struct("MemberTransferAccountContentsDetails", MEMBER_TRANSFER_ACCOUNT_CONTENTS_DETAILS_FIELDS, StructVisitor) - } -} - -impl ::serde::ser::Serialize for MemberTransferAccountContentsDetails { - fn serialize(&self, serializer: S) -> Result { - // struct serializer - use serde::ser::SerializeStruct; - serializer.serialize_struct("MemberTransferAccountContentsDetails", 0)?.end() - } -} - +/// Created Paper doc/folder. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct MemberTransferAccountContentsType { - pub description: String, +pub struct PaperContentCreateDetails { + /// Event unique identifier. + pub event_uuid: String, } -impl MemberTransferAccountContentsType { - pub fn new(description: String) -> Self { - MemberTransferAccountContentsType { - description, +impl PaperContentCreateDetails { + pub fn new(event_uuid: String) -> Self { + PaperContentCreateDetails { + event_uuid, } } } -const MEMBER_TRANSFER_ACCOUNT_CONTENTS_TYPE_FIELDS: &[&str] = &["description"]; -impl MemberTransferAccountContentsType { +const PAPER_CONTENT_CREATE_DETAILS_FIELDS: &[&str] = &["event_uuid"]; +impl PaperContentCreateDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_description = None; + ) -> Result, V::Error> { + let mut field_event_uuid = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "description" => { - if field_description.is_some() { - return Err(::serde::de::Error::duplicate_field("description")); + "event_uuid" => { + if field_event_uuid.is_some() { + return Err(::serde::de::Error::duplicate_field("event_uuid")); } - field_description = Some(map.next_value()?); + field_event_uuid = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -64643,8 +86143,8 @@ impl MemberTransferAccountContentsType { if optional && nothing { return Ok(None); } - let result = MemberTransferAccountContentsType { - description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + let result = PaperContentCreateDetails { + event_uuid: field_event_uuid.ok_or_else(|| ::serde::de::Error::missing_field("event_uuid"))?, }; Ok(Some(result)) } @@ -64654,91 +86154,75 @@ impl MemberTransferAccountContentsType { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("description", &self.description)?; + s.serialize_field("event_uuid", &self.event_uuid)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for MemberTransferAccountContentsType { +impl<'de> ::serde::de::Deserialize<'de> for PaperContentCreateDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = MemberTransferAccountContentsType; + type Value = PaperContentCreateDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a MemberTransferAccountContentsType struct") + f.write_str("a PaperContentCreateDetails struct") } fn visit_map>(self, map: V) -> Result { - MemberTransferAccountContentsType::internal_deserialize(map) + PaperContentCreateDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("MemberTransferAccountContentsType", MEMBER_TRANSFER_ACCOUNT_CONTENTS_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("PaperContentCreateDetails", PAPER_CONTENT_CREATE_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for MemberTransferAccountContentsType { +impl ::serde::ser::Serialize for PaperContentCreateDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("MemberTransferAccountContentsType", 1)?; + let mut s = serializer.serialize_struct("PaperContentCreateDetails", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Internal only - fields for target team computations #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct MemberTransferredInternalFields { - /// Internal only - team user was moved from. - pub source_team_id: crate::types::team_common::TeamId, - /// Internal only - team user was moved to. - pub target_team_id: crate::types::team_common::TeamId, +pub struct PaperContentCreateType { + pub description: String, } -impl MemberTransferredInternalFields { - pub fn new( - source_team_id: crate::types::team_common::TeamId, - target_team_id: crate::types::team_common::TeamId, - ) -> Self { - MemberTransferredInternalFields { - source_team_id, - target_team_id, +impl PaperContentCreateType { + pub fn new(description: String) -> Self { + PaperContentCreateType { + description, } } } -const MEMBER_TRANSFERRED_INTERNAL_FIELDS_FIELDS: &[&str] = &["source_team_id", - "target_team_id"]; -impl MemberTransferredInternalFields { +const PAPER_CONTENT_CREATE_TYPE_FIELDS: &[&str] = &["description"]; +impl PaperContentCreateType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_source_team_id = None; - let mut field_target_team_id = None; + ) -> Result, V::Error> { + let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "source_team_id" => { - if field_source_team_id.is_some() { - return Err(::serde::de::Error::duplicate_field("source_team_id")); - } - field_source_team_id = Some(map.next_value()?); - } - "target_team_id" => { - if field_target_team_id.is_some() { - return Err(::serde::de::Error::duplicate_field("target_team_id")); + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); } - field_target_team_id = Some(map.next_value()?); + field_description = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -64749,9 +86233,8 @@ impl MemberTransferredInternalFields { if optional && nothing { return Ok(None); } - let result = MemberTransferredInternalFields { - source_team_id: field_source_team_id.ok_or_else(|| ::serde::de::Error::missing_field("source_team_id"))?, - target_team_id: field_target_team_id.ok_or_else(|| ::serde::de::Error::missing_field("target_team_id"))?, + let result = PaperContentCreateType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) } @@ -64761,94 +86244,77 @@ impl MemberTransferredInternalFields { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("source_team_id", &self.source_team_id)?; - s.serialize_field("target_team_id", &self.target_team_id)?; + s.serialize_field("description", &self.description)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for MemberTransferredInternalFields { +impl<'de> ::serde::de::Deserialize<'de> for PaperContentCreateType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = MemberTransferredInternalFields; + type Value = PaperContentCreateType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a MemberTransferredInternalFields struct") + f.write_str("a PaperContentCreateType struct") } fn visit_map>(self, map: V) -> Result { - MemberTransferredInternalFields::internal_deserialize(map) + PaperContentCreateType::internal_deserialize(map) } } - deserializer.deserialize_struct("MemberTransferredInternalFields", MEMBER_TRANSFERRED_INTERNAL_FIELDS_FIELDS, StructVisitor) + deserializer.deserialize_struct("PaperContentCreateType", PAPER_CONTENT_CREATE_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for MemberTransferredInternalFields { +impl ::serde::ser::Serialize for PaperContentCreateType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("MemberTransferredInternalFields", 2)?; + let mut s = serializer.serialize_struct("PaperContentCreateType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Enabled/disabled Microsoft Office add-in. +/// Permanently deleted Paper doc/folder. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct MicrosoftOfficeAddinChangePolicyDetails { - /// New Microsoft Office addin policy. - pub new_value: MicrosoftOfficeAddinPolicy, - /// Previous Microsoft Office addin policy. Might be missing due to historical data gap. - pub previous_value: Option, +pub struct PaperContentPermanentlyDeleteDetails { + /// Event unique identifier. + pub event_uuid: String, } -impl MicrosoftOfficeAddinChangePolicyDetails { - pub fn new(new_value: MicrosoftOfficeAddinPolicy) -> Self { - MicrosoftOfficeAddinChangePolicyDetails { - new_value, - previous_value: None, +impl PaperContentPermanentlyDeleteDetails { + pub fn new(event_uuid: String) -> Self { + PaperContentPermanentlyDeleteDetails { + event_uuid, } } - - pub fn with_previous_value(mut self, value: MicrosoftOfficeAddinPolicy) -> Self { - self.previous_value = Some(value); - self - } } -const MICROSOFT_OFFICE_ADDIN_CHANGE_POLICY_DETAILS_FIELDS: &[&str] = &["new_value", - "previous_value"]; -impl MicrosoftOfficeAddinChangePolicyDetails { +const PAPER_CONTENT_PERMANENTLY_DELETE_DETAILS_FIELDS: &[&str] = &["event_uuid"]; +impl PaperContentPermanentlyDeleteDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_new_value = None; - let mut field_previous_value = None; + ) -> Result, V::Error> { + let mut field_event_uuid = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "new_value" => { - if field_new_value.is_some() { - return Err(::serde::de::Error::duplicate_field("new_value")); - } - field_new_value = Some(map.next_value()?); - } - "previous_value" => { - if field_previous_value.is_some() { - return Err(::serde::de::Error::duplicate_field("previous_value")); + "event_uuid" => { + if field_event_uuid.is_some() { + return Err(::serde::de::Error::duplicate_field("event_uuid")); } - field_previous_value = Some(map.next_value()?); + field_event_uuid = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -64859,9 +86325,8 @@ impl MicrosoftOfficeAddinChangePolicyDetails { if optional && nothing { return Ok(None); } - let result = MicrosoftOfficeAddinChangePolicyDetails { - new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, - previous_value: field_previous_value.and_then(Option::flatten), + let result = PaperContentPermanentlyDeleteDetails { + event_uuid: field_event_uuid.ok_or_else(|| ::serde::de::Error::missing_field("event_uuid"))?, }; Ok(Some(result)) } @@ -64871,37 +86336,34 @@ impl MicrosoftOfficeAddinChangePolicyDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("new_value", &self.new_value)?; - if let Some(val) = &self.previous_value { - s.serialize_field("previous_value", val)?; - } + s.serialize_field("event_uuid", &self.event_uuid)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for MicrosoftOfficeAddinChangePolicyDetails { +impl<'de> ::serde::de::Deserialize<'de> for PaperContentPermanentlyDeleteDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = MicrosoftOfficeAddinChangePolicyDetails; + type Value = PaperContentPermanentlyDeleteDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a MicrosoftOfficeAddinChangePolicyDetails struct") + f.write_str("a PaperContentPermanentlyDeleteDetails struct") } fn visit_map>(self, map: V) -> Result { - MicrosoftOfficeAddinChangePolicyDetails::internal_deserialize(map) + PaperContentPermanentlyDeleteDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("MicrosoftOfficeAddinChangePolicyDetails", MICROSOFT_OFFICE_ADDIN_CHANGE_POLICY_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("PaperContentPermanentlyDeleteDetails", PAPER_CONTENT_PERMANENTLY_DELETE_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for MicrosoftOfficeAddinChangePolicyDetails { +impl ::serde::ser::Serialize for PaperContentPermanentlyDeleteDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("MicrosoftOfficeAddinChangePolicyDetails", 2)?; + let mut s = serializer.serialize_struct("PaperContentPermanentlyDeleteDetails", 1)?; self.internal_serialize::(&mut s)?; s.end() } @@ -64909,30 +86371,30 @@ impl ::serde::ser::Serialize for MicrosoftOfficeAddinChangePolicyDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct MicrosoftOfficeAddinChangePolicyType { +pub struct PaperContentPermanentlyDeleteType { pub description: String, } -impl MicrosoftOfficeAddinChangePolicyType { +impl PaperContentPermanentlyDeleteType { pub fn new(description: String) -> Self { - MicrosoftOfficeAddinChangePolicyType { + PaperContentPermanentlyDeleteType { description, } } } -const MICROSOFT_OFFICE_ADDIN_CHANGE_POLICY_TYPE_FIELDS: &[&str] = &["description"]; -impl MicrosoftOfficeAddinChangePolicyType { +const PAPER_CONTENT_PERMANENTLY_DELETE_TYPE_FIELDS: &[&str] = &["description"]; +impl PaperContentPermanentlyDeleteType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -64953,7 +86415,7 @@ impl MicrosoftOfficeAddinChangePolicyType { if optional && nothing { return Ok(None); } - let result = MicrosoftOfficeAddinChangePolicyType { + let result = PaperContentPermanentlyDeleteType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -64969,128 +86431,104 @@ impl MicrosoftOfficeAddinChangePolicyType { } } -impl<'de> ::serde::de::Deserialize<'de> for MicrosoftOfficeAddinChangePolicyType { +impl<'de> ::serde::de::Deserialize<'de> for PaperContentPermanentlyDeleteType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = MicrosoftOfficeAddinChangePolicyType; + type Value = PaperContentPermanentlyDeleteType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a MicrosoftOfficeAddinChangePolicyType struct") + f.write_str("a PaperContentPermanentlyDeleteType struct") } fn visit_map>(self, map: V) -> Result { - MicrosoftOfficeAddinChangePolicyType::internal_deserialize(map) - } - } - deserializer.deserialize_struct("MicrosoftOfficeAddinChangePolicyType", MICROSOFT_OFFICE_ADDIN_CHANGE_POLICY_TYPE_FIELDS, StructVisitor) - } -} - -impl ::serde::ser::Serialize for MicrosoftOfficeAddinChangePolicyType { - fn serialize(&self, serializer: S) -> Result { - // struct serializer - use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("MicrosoftOfficeAddinChangePolicyType", 1)?; - self.internal_serialize::(&mut s)?; - s.end() - } -} - -/// Microsoft Office addin policy -#[derive(Debug, Clone, PartialEq, Eq)] -#[non_exhaustive] // variants may be added in the future -pub enum MicrosoftOfficeAddinPolicy { - Disabled, - Enabled, - /// Catch-all used for unrecognized values returned from the server. Encountering this value - /// typically indicates that this SDK version is out of date. - Other, -} - -impl<'de> ::serde::de::Deserialize<'de> for MicrosoftOfficeAddinPolicy { - fn deserialize>(deserializer: D) -> Result { - // union deserializer - use serde::de::{self, MapAccess, Visitor}; - struct EnumVisitor; - impl<'de> Visitor<'de> for EnumVisitor { - type Value = MicrosoftOfficeAddinPolicy; - fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a MicrosoftOfficeAddinPolicy structure") - } - fn visit_map>(self, mut map: V) -> Result { - let tag: &str = match map.next_key()? { - Some(".tag") => map.next_value()?, - _ => return Err(de::Error::missing_field(".tag")) - }; - let value = match tag { - "disabled" => MicrosoftOfficeAddinPolicy::Disabled, - "enabled" => MicrosoftOfficeAddinPolicy::Enabled, - _ => MicrosoftOfficeAddinPolicy::Other, - }; - crate::eat_json_fields(&mut map)?; - Ok(value) + PaperContentPermanentlyDeleteType::internal_deserialize(map) } } - const VARIANTS: &[&str] = &["disabled", - "enabled", - "other"]; - deserializer.deserialize_struct("MicrosoftOfficeAddinPolicy", VARIANTS, EnumVisitor) + deserializer.deserialize_struct("PaperContentPermanentlyDeleteType", PAPER_CONTENT_PERMANENTLY_DELETE_TYPE_FIELDS, StructVisitor) } } - -impl ::serde::ser::Serialize for MicrosoftOfficeAddinPolicy { - fn serialize(&self, serializer: S) -> Result { - // union serializer - use serde::ser::SerializeStruct; - match self { - MicrosoftOfficeAddinPolicy::Disabled => { - // unit - let mut s = serializer.serialize_struct("MicrosoftOfficeAddinPolicy", 1)?; - s.serialize_field(".tag", "disabled")?; - s.end() - } - MicrosoftOfficeAddinPolicy::Enabled => { - // unit - let mut s = serializer.serialize_struct("MicrosoftOfficeAddinPolicy", 1)?; - s.serialize_field(".tag", "enabled")?; - s.end() - } - MicrosoftOfficeAddinPolicy::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) - } + +impl ::serde::ser::Serialize for PaperContentPermanentlyDeleteType { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("PaperContentPermanentlyDeleteType", 1)?; + self.internal_serialize::(&mut s)?; + s.end() } } -/// An indication that an error occurred while retrieving the event. Some attributes of the event -/// may be omitted as a result. -#[derive(Debug, Clone, PartialEq, Eq, Default)] +/// Removed Paper doc/folder from folder. +#[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct MissingDetails { - /// All the data that could be retrieved and converted from the source event. - pub source_event_fields: Option, +pub struct PaperContentRemoveFromFolderDetails { + /// Event unique identifier. + pub event_uuid: String, + /// Target asset position in the Assets list. + pub target_asset_index: Option, + /// Parent asset position in the Assets list. + pub parent_asset_index: Option, } -impl MissingDetails { - pub fn with_source_event_fields(mut self, value: String) -> Self { - self.source_event_fields = Some(value); +impl PaperContentRemoveFromFolderDetails { + pub fn new(event_uuid: String) -> Self { + PaperContentRemoveFromFolderDetails { + event_uuid, + target_asset_index: None, + parent_asset_index: None, + } + } + + pub fn with_target_asset_index(mut self, value: u64) -> Self { + self.target_asset_index = Some(value); + self + } + + pub fn with_parent_asset_index(mut self, value: u64) -> Self { + self.parent_asset_index = Some(value); self } } -const MISSING_DETAILS_FIELDS: &[&str] = &["source_event_fields"]; -impl MissingDetails { - // no _opt deserializer +const PAPER_CONTENT_REMOVE_FROM_FOLDER_DETAILS_FIELDS: &[&str] = &["event_uuid", + "target_asset_index", + "parent_asset_index"]; +impl PaperContentRemoveFromFolderDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - ) -> Result { - let mut field_source_event_fields = None; + optional: bool, + ) -> Result, V::Error> { + let mut field_event_uuid = None; + let mut field_target_asset_index = None; + let mut field_parent_asset_index = None; + let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { + nothing = false; match key { - "source_event_fields" => { - if field_source_event_fields.is_some() { - return Err(::serde::de::Error::duplicate_field("source_event_fields")); + "event_uuid" => { + if field_event_uuid.is_some() { + return Err(::serde::de::Error::duplicate_field("event_uuid")); } - field_source_event_fields = Some(map.next_value()?); + field_event_uuid = Some(map.next_value()?); + } + "target_asset_index" => { + if field_target_asset_index.is_some() { + return Err(::serde::de::Error::duplicate_field("target_asset_index")); + } + field_target_asset_index = Some(map.next_value()?); + } + "parent_asset_index" => { + if field_parent_asset_index.is_some() { + return Err(::serde::de::Error::duplicate_field("parent_asset_index")); + } + field_parent_asset_index = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -65098,10 +86536,15 @@ impl MissingDetails { } } } - let result = MissingDetails { - source_event_fields: field_source_event_fields.and_then(Option::flatten), + if optional && nothing { + return Ok(None); + } + let result = PaperContentRemoveFromFolderDetails { + event_uuid: field_event_uuid.ok_or_else(|| ::serde::de::Error::missing_field("event_uuid"))?, + target_asset_index: field_target_asset_index.and_then(Option::flatten), + parent_asset_index: field_parent_asset_index.and_then(Option::flatten), }; - Ok(result) + Ok(Some(result)) } pub(crate) fn internal_serialize( @@ -65109,205 +86552,81 @@ impl MissingDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - if let Some(val) = &self.source_event_fields { - s.serialize_field("source_event_fields", val)?; + s.serialize_field("event_uuid", &self.event_uuid)?; + if let Some(val) = &self.target_asset_index { + s.serialize_field("target_asset_index", val)?; + } + if let Some(val) = &self.parent_asset_index { + s.serialize_field("parent_asset_index", val)?; } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for MissingDetails { +impl<'de> ::serde::de::Deserialize<'de> for PaperContentRemoveFromFolderDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = MissingDetails; + type Value = PaperContentRemoveFromFolderDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a MissingDetails struct") + f.write_str("a PaperContentRemoveFromFolderDetails struct") } fn visit_map>(self, map: V) -> Result { - MissingDetails::internal_deserialize(map) + PaperContentRemoveFromFolderDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("MissingDetails", MISSING_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("PaperContentRemoveFromFolderDetails", PAPER_CONTENT_REMOVE_FROM_FOLDER_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for MissingDetails { +impl ::serde::ser::Serialize for PaperContentRemoveFromFolderDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("MissingDetails", 1)?; + let mut s = serializer.serialize_struct("PaperContentRemoveFromFolderDetails", 3)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Information about linked Dropbox mobile client sessions #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct MobileDeviceSessionLogInfo { - /// The device name. - pub device_name: String, - /// The mobile application type. - pub client_type: crate::types::team::MobileClientPlatform, - /// The IP address of the last activity from this session. - pub ip_address: Option, - /// The time this session was created. - pub created: Option, - /// The time of the last activity from this session. - pub updated: Option, - /// Mobile session unique id. - pub session_info: Option, - /// The Dropbox client version. - pub client_version: Option, - /// The hosting OS version. - pub os_version: Option, - /// last carrier used by the device. - pub last_carrier: Option, +pub struct PaperContentRemoveFromFolderType { + pub description: String, } -impl MobileDeviceSessionLogInfo { - pub fn new( - device_name: String, - client_type: crate::types::team::MobileClientPlatform, - ) -> Self { - MobileDeviceSessionLogInfo { - device_name, - client_type, - ip_address: None, - created: None, - updated: None, - session_info: None, - client_version: None, - os_version: None, - last_carrier: None, +impl PaperContentRemoveFromFolderType { + pub fn new(description: String) -> Self { + PaperContentRemoveFromFolderType { + description, } } - - pub fn with_ip_address(mut self, value: IpAddress) -> Self { - self.ip_address = Some(value); - self - } - - pub fn with_created(mut self, value: crate::types::common::DropboxTimestamp) -> Self { - self.created = Some(value); - self - } - - pub fn with_updated(mut self, value: crate::types::common::DropboxTimestamp) -> Self { - self.updated = Some(value); - self - } - - pub fn with_session_info(mut self, value: MobileSessionLogInfo) -> Self { - self.session_info = Some(value); - self - } - - pub fn with_client_version(mut self, value: String) -> Self { - self.client_version = Some(value); - self - } - - pub fn with_os_version(mut self, value: String) -> Self { - self.os_version = Some(value); - self - } - - pub fn with_last_carrier(mut self, value: String) -> Self { - self.last_carrier = Some(value); - self - } } -const MOBILE_DEVICE_SESSION_LOG_INFO_FIELDS: &[&str] = &["device_name", - "client_type", - "ip_address", - "created", - "updated", - "session_info", - "client_version", - "os_version", - "last_carrier"]; -impl MobileDeviceSessionLogInfo { +const PAPER_CONTENT_REMOVE_FROM_FOLDER_TYPE_FIELDS: &[&str] = &["description"]; +impl PaperContentRemoveFromFolderType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_device_name = None; - let mut field_client_type = None; - let mut field_ip_address = None; - let mut field_created = None; - let mut field_updated = None; - let mut field_session_info = None; - let mut field_client_version = None; - let mut field_os_version = None; - let mut field_last_carrier = None; + ) -> Result, V::Error> { + let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "device_name" => { - if field_device_name.is_some() { - return Err(::serde::de::Error::duplicate_field("device_name")); - } - field_device_name = Some(map.next_value()?); - } - "client_type" => { - if field_client_type.is_some() { - return Err(::serde::de::Error::duplicate_field("client_type")); - } - field_client_type = Some(map.next_value()?); - } - "ip_address" => { - if field_ip_address.is_some() { - return Err(::serde::de::Error::duplicate_field("ip_address")); - } - field_ip_address = Some(map.next_value()?); - } - "created" => { - if field_created.is_some() { - return Err(::serde::de::Error::duplicate_field("created")); - } - field_created = Some(map.next_value()?); - } - "updated" => { - if field_updated.is_some() { - return Err(::serde::de::Error::duplicate_field("updated")); - } - field_updated = Some(map.next_value()?); - } - "session_info" => { - if field_session_info.is_some() { - return Err(::serde::de::Error::duplicate_field("session_info")); - } - field_session_info = Some(map.next_value()?); - } - "client_version" => { - if field_client_version.is_some() { - return Err(::serde::de::Error::duplicate_field("client_version")); - } - field_client_version = Some(map.next_value()?); - } - "os_version" => { - if field_os_version.is_some() { - return Err(::serde::de::Error::duplicate_field("os_version")); - } - field_os_version = Some(map.next_value()?); - } - "last_carrier" => { - if field_last_carrier.is_some() { - return Err(::serde::de::Error::duplicate_field("last_carrier")); + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); } - field_last_carrier = Some(map.next_value()?); + field_description = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -65318,16 +86637,8 @@ impl MobileDeviceSessionLogInfo { if optional && nothing { return Ok(None); } - let result = MobileDeviceSessionLogInfo { - device_name: field_device_name.ok_or_else(|| ::serde::de::Error::missing_field("device_name"))?, - client_type: field_client_type.ok_or_else(|| ::serde::de::Error::missing_field("client_type"))?, - ip_address: field_ip_address.and_then(Option::flatten), - created: field_created.and_then(Option::flatten), - updated: field_updated.and_then(Option::flatten), - session_info: field_session_info.and_then(Option::flatten), - client_version: field_client_version.and_then(Option::flatten), - os_version: field_os_version.and_then(Option::flatten), - last_carrier: field_last_carrier.and_then(Option::flatten), + let result = PaperContentRemoveFromFolderType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) } @@ -65337,96 +86648,77 @@ impl MobileDeviceSessionLogInfo { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("device_name", &self.device_name)?; - s.serialize_field("client_type", &self.client_type)?; - if let Some(val) = &self.ip_address { - s.serialize_field("ip_address", val)?; - } - if let Some(val) = &self.created { - s.serialize_field("created", val)?; - } - if let Some(val) = &self.updated { - s.serialize_field("updated", val)?; - } - if let Some(val) = &self.session_info { - s.serialize_field("session_info", val)?; - } - if let Some(val) = &self.client_version { - s.serialize_field("client_version", val)?; - } - if let Some(val) = &self.os_version { - s.serialize_field("os_version", val)?; - } - if let Some(val) = &self.last_carrier { - s.serialize_field("last_carrier", val)?; - } + s.serialize_field("description", &self.description)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for MobileDeviceSessionLogInfo { +impl<'de> ::serde::de::Deserialize<'de> for PaperContentRemoveFromFolderType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = MobileDeviceSessionLogInfo; + type Value = PaperContentRemoveFromFolderType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a MobileDeviceSessionLogInfo struct") + f.write_str("a PaperContentRemoveFromFolderType struct") } fn visit_map>(self, map: V) -> Result { - MobileDeviceSessionLogInfo::internal_deserialize(map) + PaperContentRemoveFromFolderType::internal_deserialize(map) } } - deserializer.deserialize_struct("MobileDeviceSessionLogInfo", MOBILE_DEVICE_SESSION_LOG_INFO_FIELDS, StructVisitor) + deserializer.deserialize_struct("PaperContentRemoveFromFolderType", PAPER_CONTENT_REMOVE_FROM_FOLDER_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for MobileDeviceSessionLogInfo { +impl ::serde::ser::Serialize for PaperContentRemoveFromFolderType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("MobileDeviceSessionLogInfo", 9)?; + let mut s = serializer.serialize_struct("PaperContentRemoveFromFolderType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -// struct extends polymorphic struct DeviceSessionLogInfo -impl From for DeviceSessionLogInfo { - fn from(subtype: MobileDeviceSessionLogInfo) -> Self { - DeviceSessionLogInfo::MobileDeviceSession(subtype) - } -} -/// Mobile session. -#[derive(Debug, Clone, PartialEq, Eq, Default)] +/// Removed users and/or groups from Paper doc/folder. +#[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct MobileSessionLogInfo { - /// Session ID. - pub session_id: Option, +pub struct PaperContentRemoveMemberDetails { + /// Event unique identifier. + pub event_uuid: String, } -impl MobileSessionLogInfo { - pub fn with_session_id(mut self, value: crate::types::common::SessionId) -> Self { - self.session_id = Some(value); - self +impl PaperContentRemoveMemberDetails { + pub fn new(event_uuid: String) -> Self { + PaperContentRemoveMemberDetails { + event_uuid, + } } } -const MOBILE_SESSION_LOG_INFO_FIELDS: &[&str] = &["session_id"]; -impl MobileSessionLogInfo { - // no _opt deserializer +const PAPER_CONTENT_REMOVE_MEMBER_DETAILS_FIELDS: &[&str] = &["event_uuid"]; +impl PaperContentRemoveMemberDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - ) -> Result { - let mut field_session_id = None; + optional: bool, + ) -> Result, V::Error> { + let mut field_event_uuid = None; + let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { + nothing = false; match key { - "session_id" => { - if field_session_id.is_some() { - return Err(::serde::de::Error::duplicate_field("session_id")); + "event_uuid" => { + if field_event_uuid.is_some() { + return Err(::serde::de::Error::duplicate_field("event_uuid")); } - field_session_id = Some(map.next_value()?); + field_event_uuid = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -65434,10 +86726,13 @@ impl MobileSessionLogInfo { } } } - let result = MobileSessionLogInfo { - session_id: field_session_id.and_then(Option::flatten), + if optional && nothing { + return Ok(None); + } + let result = PaperContentRemoveMemberDetails { + event_uuid: field_event_uuid.ok_or_else(|| ::serde::de::Error::missing_field("event_uuid"))?, }; - Ok(result) + Ok(Some(result)) } pub(crate) fn internal_serialize( @@ -65445,106 +86740,75 @@ impl MobileSessionLogInfo { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - if let Some(val) = &self.session_id { - s.serialize_field("session_id", val)?; - } + s.serialize_field("event_uuid", &self.event_uuid)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for MobileSessionLogInfo { +impl<'de> ::serde::de::Deserialize<'de> for PaperContentRemoveMemberDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = MobileSessionLogInfo; + type Value = PaperContentRemoveMemberDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a MobileSessionLogInfo struct") + f.write_str("a PaperContentRemoveMemberDetails struct") } fn visit_map>(self, map: V) -> Result { - MobileSessionLogInfo::internal_deserialize(map) + PaperContentRemoveMemberDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("MobileSessionLogInfo", MOBILE_SESSION_LOG_INFO_FIELDS, StructVisitor) + deserializer.deserialize_struct("PaperContentRemoveMemberDetails", PAPER_CONTENT_REMOVE_MEMBER_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for MobileSessionLogInfo { +impl ::serde::ser::Serialize for PaperContentRemoveMemberDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("MobileSessionLogInfo", 1)?; + let mut s = serializer.serialize_struct("PaperContentRemoveMemberDetails", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -// struct extends polymorphic struct SessionLogInfo -impl From for SessionLogInfo { - fn from(subtype: MobileSessionLogInfo) -> Self { - SessionLogInfo::Mobile(subtype) - } -} -/// Namespace relative path details. -#[derive(Debug, Clone, PartialEq, Eq, Default)] +#[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct NamespaceRelativePathLogInfo { - /// Namespace ID. - pub ns_id: Option, - /// A path relative to the specified namespace ID. - pub relative_path: Option, - /// True if the namespace is shared. - pub is_shared_namespace: Option, +pub struct PaperContentRemoveMemberType { + pub description: String, } -impl NamespaceRelativePathLogInfo { - pub fn with_ns_id(mut self, value: NamespaceId) -> Self { - self.ns_id = Some(value); - self - } - - pub fn with_relative_path(mut self, value: FilePath) -> Self { - self.relative_path = Some(value); - self - } - - pub fn with_is_shared_namespace(mut self, value: bool) -> Self { - self.is_shared_namespace = Some(value); - self +impl PaperContentRemoveMemberType { + pub fn new(description: String) -> Self { + PaperContentRemoveMemberType { + description, + } } } -const NAMESPACE_RELATIVE_PATH_LOG_INFO_FIELDS: &[&str] = &["ns_id", - "relative_path", - "is_shared_namespace"]; -impl NamespaceRelativePathLogInfo { - // no _opt deserializer +const PAPER_CONTENT_REMOVE_MEMBER_TYPE_FIELDS: &[&str] = &["description"]; +impl PaperContentRemoveMemberType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - ) -> Result { - let mut field_ns_id = None; - let mut field_relative_path = None; - let mut field_is_shared_namespace = None; + optional: bool, + ) -> Result, V::Error> { + let mut field_description = None; + let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { + nothing = false; match key { - "ns_id" => { - if field_ns_id.is_some() { - return Err(::serde::de::Error::duplicate_field("ns_id")); - } - field_ns_id = Some(map.next_value()?); - } - "relative_path" => { - if field_relative_path.is_some() { - return Err(::serde::de::Error::duplicate_field("relative_path")); - } - field_relative_path = Some(map.next_value()?); - } - "is_shared_namespace" => { - if field_is_shared_namespace.is_some() { - return Err(::serde::de::Error::duplicate_field("is_shared_namespace")); + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); } - field_is_shared_namespace = Some(map.next_value()?); + field_description = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -65552,12 +86816,13 @@ impl NamespaceRelativePathLogInfo { } } } - let result = NamespaceRelativePathLogInfo { - ns_id: field_ns_id.and_then(Option::flatten), - relative_path: field_relative_path.and_then(Option::flatten), - is_shared_namespace: field_is_shared_namespace.and_then(Option::flatten), + if optional && nothing { + return Ok(None); + } + let result = PaperContentRemoveMemberType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; - Ok(result) + Ok(Some(result)) } pub(crate) fn internal_serialize( @@ -65565,101 +86830,77 @@ impl NamespaceRelativePathLogInfo { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - if let Some(val) = &self.ns_id { - s.serialize_field("ns_id", val)?; - } - if let Some(val) = &self.relative_path { - s.serialize_field("relative_path", val)?; - } - if let Some(val) = &self.is_shared_namespace { - s.serialize_field("is_shared_namespace", val)?; - } + s.serialize_field("description", &self.description)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for NamespaceRelativePathLogInfo { +impl<'de> ::serde::de::Deserialize<'de> for PaperContentRemoveMemberType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = NamespaceRelativePathLogInfo; + type Value = PaperContentRemoveMemberType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a NamespaceRelativePathLogInfo struct") + f.write_str("a PaperContentRemoveMemberType struct") } fn visit_map>(self, map: V) -> Result { - NamespaceRelativePathLogInfo::internal_deserialize(map) + PaperContentRemoveMemberType::internal_deserialize(map) } } - deserializer.deserialize_struct("NamespaceRelativePathLogInfo", NAMESPACE_RELATIVE_PATH_LOG_INFO_FIELDS, StructVisitor) + deserializer.deserialize_struct("PaperContentRemoveMemberType", PAPER_CONTENT_REMOVE_MEMBER_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for NamespaceRelativePathLogInfo { +impl ::serde::ser::Serialize for PaperContentRemoveMemberType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("NamespaceRelativePathLogInfo", 3)?; + let mut s = serializer.serialize_struct("PaperContentRemoveMemberType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Enabled/disabled network control. +/// Renamed Paper doc/folder. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct NetworkControlChangePolicyDetails { - /// New network control policy. - pub new_value: NetworkControlPolicy, - /// Previous network control policy. Might be missing due to historical data gap. - pub previous_value: Option, +pub struct PaperContentRenameDetails { + /// Event unique identifier. + pub event_uuid: String, } -impl NetworkControlChangePolicyDetails { - pub fn new(new_value: NetworkControlPolicy) -> Self { - NetworkControlChangePolicyDetails { - new_value, - previous_value: None, +impl PaperContentRenameDetails { + pub fn new(event_uuid: String) -> Self { + PaperContentRenameDetails { + event_uuid, } } - - pub fn with_previous_value(mut self, value: NetworkControlPolicy) -> Self { - self.previous_value = Some(value); - self - } } -const NETWORK_CONTROL_CHANGE_POLICY_DETAILS_FIELDS: &[&str] = &["new_value", - "previous_value"]; -impl NetworkControlChangePolicyDetails { +const PAPER_CONTENT_RENAME_DETAILS_FIELDS: &[&str] = &["event_uuid"]; +impl PaperContentRenameDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_new_value = None; - let mut field_previous_value = None; + ) -> Result, V::Error> { + let mut field_event_uuid = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "new_value" => { - if field_new_value.is_some() { - return Err(::serde::de::Error::duplicate_field("new_value")); - } - field_new_value = Some(map.next_value()?); - } - "previous_value" => { - if field_previous_value.is_some() { - return Err(::serde::de::Error::duplicate_field("previous_value")); + "event_uuid" => { + if field_event_uuid.is_some() { + return Err(::serde::de::Error::duplicate_field("event_uuid")); } - field_previous_value = Some(map.next_value()?); + field_event_uuid = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -65670,9 +86911,8 @@ impl NetworkControlChangePolicyDetails { if optional && nothing { return Ok(None); } - let result = NetworkControlChangePolicyDetails { - new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, - previous_value: field_previous_value.and_then(Option::flatten), + let result = PaperContentRenameDetails { + event_uuid: field_event_uuid.ok_or_else(|| ::serde::de::Error::missing_field("event_uuid"))?, }; Ok(Some(result)) } @@ -65682,37 +86922,34 @@ impl NetworkControlChangePolicyDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("new_value", &self.new_value)?; - if let Some(val) = &self.previous_value { - s.serialize_field("previous_value", val)?; - } + s.serialize_field("event_uuid", &self.event_uuid)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for NetworkControlChangePolicyDetails { +impl<'de> ::serde::de::Deserialize<'de> for PaperContentRenameDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = NetworkControlChangePolicyDetails; + type Value = PaperContentRenameDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a NetworkControlChangePolicyDetails struct") + f.write_str("a PaperContentRenameDetails struct") } fn visit_map>(self, map: V) -> Result { - NetworkControlChangePolicyDetails::internal_deserialize(map) + PaperContentRenameDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("NetworkControlChangePolicyDetails", NETWORK_CONTROL_CHANGE_POLICY_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("PaperContentRenameDetails", PAPER_CONTENT_RENAME_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for NetworkControlChangePolicyDetails { +impl ::serde::ser::Serialize for PaperContentRenameDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("NetworkControlChangePolicyDetails", 2)?; + let mut s = serializer.serialize_struct("PaperContentRenameDetails", 1)?; self.internal_serialize::(&mut s)?; s.end() } @@ -65720,30 +86957,30 @@ impl ::serde::ser::Serialize for NetworkControlChangePolicyDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct NetworkControlChangePolicyType { +pub struct PaperContentRenameType { pub description: String, } -impl NetworkControlChangePolicyType { +impl PaperContentRenameType { pub fn new(description: String) -> Self { - NetworkControlChangePolicyType { + PaperContentRenameType { description, } } } -const NETWORK_CONTROL_CHANGE_POLICY_TYPE_FIELDS: &[&str] = &["description"]; -impl NetworkControlChangePolicyType { +const PAPER_CONTENT_RENAME_TYPE_FIELDS: &[&str] = &["description"]; +impl PaperContentRenameType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -65764,7 +87001,7 @@ impl NetworkControlChangePolicyType { if optional && nothing { return Ok(None); } - let result = NetworkControlChangePolicyType { + let result = PaperContentRenameType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -65780,150 +87017,72 @@ impl NetworkControlChangePolicyType { } } -impl<'de> ::serde::de::Deserialize<'de> for NetworkControlChangePolicyType { +impl<'de> ::serde::de::Deserialize<'de> for PaperContentRenameType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = NetworkControlChangePolicyType; + type Value = PaperContentRenameType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a NetworkControlChangePolicyType struct") + f.write_str("a PaperContentRenameType struct") } fn visit_map>(self, map: V) -> Result { - NetworkControlChangePolicyType::internal_deserialize(map) + PaperContentRenameType::internal_deserialize(map) } } - deserializer.deserialize_struct("NetworkControlChangePolicyType", NETWORK_CONTROL_CHANGE_POLICY_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("PaperContentRenameType", PAPER_CONTENT_RENAME_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for NetworkControlChangePolicyType { +impl ::serde::ser::Serialize for PaperContentRenameType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("NetworkControlChangePolicyType", 1)?; + let mut s = serializer.serialize_struct("PaperContentRenameType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Network control policy -#[derive(Debug, Clone, PartialEq, Eq)] -#[non_exhaustive] // variants may be added in the future -pub enum NetworkControlPolicy { - Disabled, - Enabled, - /// Catch-all used for unrecognized values returned from the server. Encountering this value - /// typically indicates that this SDK version is out of date. - Other, -} - -impl<'de> ::serde::de::Deserialize<'de> for NetworkControlPolicy { - fn deserialize>(deserializer: D) -> Result { - // union deserializer - use serde::de::{self, MapAccess, Visitor}; - struct EnumVisitor; - impl<'de> Visitor<'de> for EnumVisitor { - type Value = NetworkControlPolicy; - fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a NetworkControlPolicy structure") - } - fn visit_map>(self, mut map: V) -> Result { - let tag: &str = match map.next_key()? { - Some(".tag") => map.next_value()?, - _ => return Err(de::Error::missing_field(".tag")) - }; - let value = match tag { - "disabled" => NetworkControlPolicy::Disabled, - "enabled" => NetworkControlPolicy::Enabled, - _ => NetworkControlPolicy::Other, - }; - crate::eat_json_fields(&mut map)?; - Ok(value) - } - } - const VARIANTS: &[&str] = &["disabled", - "enabled", - "other"]; - deserializer.deserialize_struct("NetworkControlPolicy", VARIANTS, EnumVisitor) - } -} - -impl ::serde::ser::Serialize for NetworkControlPolicy { - fn serialize(&self, serializer: S) -> Result { - // union serializer - use serde::ser::SerializeStruct; - match self { - NetworkControlPolicy::Disabled => { - // unit - let mut s = serializer.serialize_struct("NetworkControlPolicy", 1)?; - s.serialize_field(".tag", "disabled")?; - s.end() - } - NetworkControlPolicy::Enabled => { - // unit - let mut s = serializer.serialize_struct("NetworkControlPolicy", 1)?; - s.serialize_field(".tag", "enabled")?; - s.end() - } - NetworkControlPolicy::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) - } - } -} - -/// Report created: Links created with no expiration. +/// Restored archived Paper doc/folder. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct NoExpirationLinkGenCreateReportDetails { - /// Report start date. - pub start_date: crate::types::common::DropboxTimestamp, - /// Report end date. - pub end_date: crate::types::common::DropboxTimestamp, +pub struct PaperContentRestoreDetails { + /// Event unique identifier. + pub event_uuid: String, } -impl NoExpirationLinkGenCreateReportDetails { - pub fn new( - start_date: crate::types::common::DropboxTimestamp, - end_date: crate::types::common::DropboxTimestamp, - ) -> Self { - NoExpirationLinkGenCreateReportDetails { - start_date, - end_date, +impl PaperContentRestoreDetails { + pub fn new(event_uuid: String) -> Self { + PaperContentRestoreDetails { + event_uuid, } } } -const NO_EXPIRATION_LINK_GEN_CREATE_REPORT_DETAILS_FIELDS: &[&str] = &["start_date", - "end_date"]; -impl NoExpirationLinkGenCreateReportDetails { +const PAPER_CONTENT_RESTORE_DETAILS_FIELDS: &[&str] = &["event_uuid"]; +impl PaperContentRestoreDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_start_date = None; - let mut field_end_date = None; + ) -> Result, V::Error> { + let mut field_event_uuid = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "start_date" => { - if field_start_date.is_some() { - return Err(::serde::de::Error::duplicate_field("start_date")); - } - field_start_date = Some(map.next_value()?); - } - "end_date" => { - if field_end_date.is_some() { - return Err(::serde::de::Error::duplicate_field("end_date")); + "event_uuid" => { + if field_event_uuid.is_some() { + return Err(::serde::de::Error::duplicate_field("event_uuid")); } - field_end_date = Some(map.next_value()?); + field_event_uuid = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -65934,9 +87093,8 @@ impl NoExpirationLinkGenCreateReportDetails { if optional && nothing { return Ok(None); } - let result = NoExpirationLinkGenCreateReportDetails { - start_date: field_start_date.ok_or_else(|| ::serde::de::Error::missing_field("start_date"))?, - end_date: field_end_date.ok_or_else(|| ::serde::de::Error::missing_field("end_date"))?, + let result = PaperContentRestoreDetails { + event_uuid: field_event_uuid.ok_or_else(|| ::serde::de::Error::missing_field("event_uuid"))?, }; Ok(Some(result)) } @@ -65946,35 +87104,34 @@ impl NoExpirationLinkGenCreateReportDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("start_date", &self.start_date)?; - s.serialize_field("end_date", &self.end_date)?; + s.serialize_field("event_uuid", &self.event_uuid)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for NoExpirationLinkGenCreateReportDetails { +impl<'de> ::serde::de::Deserialize<'de> for PaperContentRestoreDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = NoExpirationLinkGenCreateReportDetails; + type Value = PaperContentRestoreDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a NoExpirationLinkGenCreateReportDetails struct") + f.write_str("a PaperContentRestoreDetails struct") } fn visit_map>(self, map: V) -> Result { - NoExpirationLinkGenCreateReportDetails::internal_deserialize(map) + PaperContentRestoreDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("NoExpirationLinkGenCreateReportDetails", NO_EXPIRATION_LINK_GEN_CREATE_REPORT_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("PaperContentRestoreDetails", PAPER_CONTENT_RESTORE_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for NoExpirationLinkGenCreateReportDetails { +impl ::serde::ser::Serialize for PaperContentRestoreDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("NoExpirationLinkGenCreateReportDetails", 2)?; + let mut s = serializer.serialize_struct("PaperContentRestoreDetails", 1)?; self.internal_serialize::(&mut s)?; s.end() } @@ -65982,30 +87139,30 @@ impl ::serde::ser::Serialize for NoExpirationLinkGenCreateReportDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct NoExpirationLinkGenCreateReportType { +pub struct PaperContentRestoreType { pub description: String, } -impl NoExpirationLinkGenCreateReportType { +impl PaperContentRestoreType { pub fn new(description: String) -> Self { - NoExpirationLinkGenCreateReportType { + PaperContentRestoreType { description, } } } -const NO_EXPIRATION_LINK_GEN_CREATE_REPORT_TYPE_FIELDS: &[&str] = &["description"]; -impl NoExpirationLinkGenCreateReportType { +const PAPER_CONTENT_RESTORE_TYPE_FIELDS: &[&str] = &["description"]; +impl PaperContentRestoreType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -66026,7 +87183,7 @@ impl NoExpirationLinkGenCreateReportType { if optional && nothing { return Ok(None); } - let result = NoExpirationLinkGenCreateReportType { + let result = PaperContentRestoreType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -66042,72 +87199,150 @@ impl NoExpirationLinkGenCreateReportType { } } -impl<'de> ::serde::de::Deserialize<'de> for NoExpirationLinkGenCreateReportType { +impl<'de> ::serde::de::Deserialize<'de> for PaperContentRestoreType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = NoExpirationLinkGenCreateReportType; + type Value = PaperContentRestoreType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a NoExpirationLinkGenCreateReportType struct") + f.write_str("a PaperContentRestoreType struct") } fn visit_map>(self, map: V) -> Result { - NoExpirationLinkGenCreateReportType::internal_deserialize(map) + PaperContentRestoreType::internal_deserialize(map) } } - deserializer.deserialize_struct("NoExpirationLinkGenCreateReportType", NO_EXPIRATION_LINK_GEN_CREATE_REPORT_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("PaperContentRestoreType", PAPER_CONTENT_RESTORE_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for NoExpirationLinkGenCreateReportType { +impl ::serde::ser::Serialize for PaperContentRestoreType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("NoExpirationLinkGenCreateReportType", 1)?; + let mut s = serializer.serialize_struct("PaperContentRestoreType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Couldn't create report: Links created with no expiration. +/// Policy to set default access for newly created Paper folders. +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // variants may be added in the future +pub enum PaperDefaultFolderPolicy { + EveryoneInTeam, + InviteOnly, + /// Catch-all used for unrecognized values returned from the server. Encountering this value + /// typically indicates that this SDK version is out of date. + Other, +} + +impl<'de> ::serde::de::Deserialize<'de> for PaperDefaultFolderPolicy { + fn deserialize>(deserializer: D) -> Result { + // union deserializer + use serde::de::{self, MapAccess, Visitor}; + struct EnumVisitor; + impl<'de> Visitor<'de> for EnumVisitor { + type Value = PaperDefaultFolderPolicy; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a PaperDefaultFolderPolicy structure") + } + fn visit_map>(self, mut map: V) -> Result { + let tag: &str = match map.next_key()? { + Some(".tag") => map.next_value()?, + _ => return Err(de::Error::missing_field(".tag")) + }; + let value = match tag { + "everyone_in_team" => PaperDefaultFolderPolicy::EveryoneInTeam, + "invite_only" => PaperDefaultFolderPolicy::InviteOnly, + _ => PaperDefaultFolderPolicy::Other, + }; + crate::eat_json_fields(&mut map)?; + Ok(value) + } + } + const VARIANTS: &[&str] = &["everyone_in_team", + "invite_only", + "other"]; + deserializer.deserialize_struct("PaperDefaultFolderPolicy", VARIANTS, EnumVisitor) + } +} + +impl ::serde::ser::Serialize for PaperDefaultFolderPolicy { + fn serialize(&self, serializer: S) -> Result { + // union serializer + use serde::ser::SerializeStruct; + match self { + PaperDefaultFolderPolicy::EveryoneInTeam => { + // unit + let mut s = serializer.serialize_struct("PaperDefaultFolderPolicy", 1)?; + s.serialize_field(".tag", "everyone_in_team")?; + s.end() + } + PaperDefaultFolderPolicy::InviteOnly => { + // unit + let mut s = serializer.serialize_struct("PaperDefaultFolderPolicy", 1)?; + s.serialize_field(".tag", "invite_only")?; + s.end() + } + PaperDefaultFolderPolicy::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) + } + } +} + +/// Changed Paper Default Folder Policy setting for team. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct NoExpirationLinkGenReportFailedDetails { - /// Failure reason. - pub failure_reason: crate::types::team::TeamReportFailureReason, +pub struct PaperDefaultFolderPolicyChangedDetails { + /// New Paper Default Folder Policy. + pub new_value: PaperDefaultFolderPolicy, + /// Previous Paper Default Folder Policy. + pub previous_value: PaperDefaultFolderPolicy, } -impl NoExpirationLinkGenReportFailedDetails { - pub fn new(failure_reason: crate::types::team::TeamReportFailureReason) -> Self { - NoExpirationLinkGenReportFailedDetails { - failure_reason, +impl PaperDefaultFolderPolicyChangedDetails { + pub fn new( + new_value: PaperDefaultFolderPolicy, + previous_value: PaperDefaultFolderPolicy, + ) -> Self { + PaperDefaultFolderPolicyChangedDetails { + new_value, + previous_value, } } } -const NO_EXPIRATION_LINK_GEN_REPORT_FAILED_DETAILS_FIELDS: &[&str] = &["failure_reason"]; -impl NoExpirationLinkGenReportFailedDetails { +const PAPER_DEFAULT_FOLDER_POLICY_CHANGED_DETAILS_FIELDS: &[&str] = &["new_value", + "previous_value"]; +impl PaperDefaultFolderPolicyChangedDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_failure_reason = None; + ) -> Result, V::Error> { + let mut field_new_value = None; + let mut field_previous_value = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "failure_reason" => { - if field_failure_reason.is_some() { - return Err(::serde::de::Error::duplicate_field("failure_reason")); + "new_value" => { + if field_new_value.is_some() { + return Err(::serde::de::Error::duplicate_field("new_value")); } - field_failure_reason = Some(map.next_value()?); + field_new_value = Some(map.next_value()?); + } + "previous_value" => { + if field_previous_value.is_some() { + return Err(::serde::de::Error::duplicate_field("previous_value")); + } + field_previous_value = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -66118,8 +87353,9 @@ impl NoExpirationLinkGenReportFailedDetails { if optional && nothing { return Ok(None); } - let result = NoExpirationLinkGenReportFailedDetails { - failure_reason: field_failure_reason.ok_or_else(|| ::serde::de::Error::missing_field("failure_reason"))?, + let result = PaperDefaultFolderPolicyChangedDetails { + new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, + previous_value: field_previous_value.ok_or_else(|| ::serde::de::Error::missing_field("previous_value"))?, }; Ok(Some(result)) } @@ -66129,34 +87365,35 @@ impl NoExpirationLinkGenReportFailedDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("failure_reason", &self.failure_reason)?; + s.serialize_field("new_value", &self.new_value)?; + s.serialize_field("previous_value", &self.previous_value)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for NoExpirationLinkGenReportFailedDetails { +impl<'de> ::serde::de::Deserialize<'de> for PaperDefaultFolderPolicyChangedDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = NoExpirationLinkGenReportFailedDetails; + type Value = PaperDefaultFolderPolicyChangedDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a NoExpirationLinkGenReportFailedDetails struct") + f.write_str("a PaperDefaultFolderPolicyChangedDetails struct") } fn visit_map>(self, map: V) -> Result { - NoExpirationLinkGenReportFailedDetails::internal_deserialize(map) + PaperDefaultFolderPolicyChangedDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("NoExpirationLinkGenReportFailedDetails", NO_EXPIRATION_LINK_GEN_REPORT_FAILED_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("PaperDefaultFolderPolicyChangedDetails", PAPER_DEFAULT_FOLDER_POLICY_CHANGED_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for NoExpirationLinkGenReportFailedDetails { +impl ::serde::ser::Serialize for PaperDefaultFolderPolicyChangedDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("NoExpirationLinkGenReportFailedDetails", 1)?; + let mut s = serializer.serialize_struct("PaperDefaultFolderPolicyChangedDetails", 2)?; self.internal_serialize::(&mut s)?; s.end() } @@ -66164,30 +87401,30 @@ impl ::serde::ser::Serialize for NoExpirationLinkGenReportFailedDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct NoExpirationLinkGenReportFailedType { +pub struct PaperDefaultFolderPolicyChangedType { pub description: String, } -impl NoExpirationLinkGenReportFailedType { +impl PaperDefaultFolderPolicyChangedType { pub fn new(description: String) -> Self { - NoExpirationLinkGenReportFailedType { + PaperDefaultFolderPolicyChangedType { description, } } } -const NO_EXPIRATION_LINK_GEN_REPORT_FAILED_TYPE_FIELDS: &[&str] = &["description"]; -impl NoExpirationLinkGenReportFailedType { +const PAPER_DEFAULT_FOLDER_POLICY_CHANGED_TYPE_FIELDS: &[&str] = &["description"]; +impl PaperDefaultFolderPolicyChangedType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -66208,7 +87445,7 @@ impl NoExpirationLinkGenReportFailedType { if optional && nothing { return Ok(None); } - let result = NoExpirationLinkGenReportFailedType { + let result = PaperDefaultFolderPolicyChangedType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -66224,86 +87461,147 @@ impl NoExpirationLinkGenReportFailedType { } } -impl<'de> ::serde::de::Deserialize<'de> for NoExpirationLinkGenReportFailedType { +impl<'de> ::serde::de::Deserialize<'de> for PaperDefaultFolderPolicyChangedType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = NoExpirationLinkGenReportFailedType; + type Value = PaperDefaultFolderPolicyChangedType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a NoExpirationLinkGenReportFailedType struct") + f.write_str("a PaperDefaultFolderPolicyChangedType struct") } fn visit_map>(self, map: V) -> Result { - NoExpirationLinkGenReportFailedType::internal_deserialize(map) + PaperDefaultFolderPolicyChangedType::internal_deserialize(map) } } - deserializer.deserialize_struct("NoExpirationLinkGenReportFailedType", NO_EXPIRATION_LINK_GEN_REPORT_FAILED_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("PaperDefaultFolderPolicyChangedType", PAPER_DEFAULT_FOLDER_POLICY_CHANGED_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for NoExpirationLinkGenReportFailedType { +impl ::serde::ser::Serialize for PaperDefaultFolderPolicyChangedType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("NoExpirationLinkGenReportFailedType", 1)?; + let mut s = serializer.serialize_struct("PaperDefaultFolderPolicyChangedType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Report created: Links created without passwords. +/// Policy for controlling if team members can use Paper Desktop +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // variants may be added in the future +pub enum PaperDesktopPolicy { + Disabled, + Enabled, + /// Catch-all used for unrecognized values returned from the server. Encountering this value + /// typically indicates that this SDK version is out of date. + Other, +} + +impl<'de> ::serde::de::Deserialize<'de> for PaperDesktopPolicy { + fn deserialize>(deserializer: D) -> Result { + // union deserializer + use serde::de::{self, MapAccess, Visitor}; + struct EnumVisitor; + impl<'de> Visitor<'de> for EnumVisitor { + type Value = PaperDesktopPolicy; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a PaperDesktopPolicy structure") + } + fn visit_map>(self, mut map: V) -> Result { + let tag: &str = match map.next_key()? { + Some(".tag") => map.next_value()?, + _ => return Err(de::Error::missing_field(".tag")) + }; + let value = match tag { + "disabled" => PaperDesktopPolicy::Disabled, + "enabled" => PaperDesktopPolicy::Enabled, + _ => PaperDesktopPolicy::Other, + }; + crate::eat_json_fields(&mut map)?; + Ok(value) + } + } + const VARIANTS: &[&str] = &["disabled", + "enabled", + "other"]; + deserializer.deserialize_struct("PaperDesktopPolicy", VARIANTS, EnumVisitor) + } +} + +impl ::serde::ser::Serialize for PaperDesktopPolicy { + fn serialize(&self, serializer: S) -> Result { + // union serializer + use serde::ser::SerializeStruct; + match self { + PaperDesktopPolicy::Disabled => { + // unit + let mut s = serializer.serialize_struct("PaperDesktopPolicy", 1)?; + s.serialize_field(".tag", "disabled")?; + s.end() + } + PaperDesktopPolicy::Enabled => { + // unit + let mut s = serializer.serialize_struct("PaperDesktopPolicy", 1)?; + s.serialize_field(".tag", "enabled")?; + s.end() + } + PaperDesktopPolicy::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) + } + } +} + +/// Enabled/disabled Paper Desktop for team. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct NoPasswordLinkGenCreateReportDetails { - /// Report start date. - pub start_date: crate::types::common::DropboxTimestamp, - /// Report end date. - pub end_date: crate::types::common::DropboxTimestamp, +pub struct PaperDesktopPolicyChangedDetails { + /// New Paper Desktop policy. + pub new_value: PaperDesktopPolicy, + /// Previous Paper Desktop policy. + pub previous_value: PaperDesktopPolicy, } -impl NoPasswordLinkGenCreateReportDetails { - pub fn new( - start_date: crate::types::common::DropboxTimestamp, - end_date: crate::types::common::DropboxTimestamp, - ) -> Self { - NoPasswordLinkGenCreateReportDetails { - start_date, - end_date, +impl PaperDesktopPolicyChangedDetails { + pub fn new(new_value: PaperDesktopPolicy, previous_value: PaperDesktopPolicy) -> Self { + PaperDesktopPolicyChangedDetails { + new_value, + previous_value, } } } -const NO_PASSWORD_LINK_GEN_CREATE_REPORT_DETAILS_FIELDS: &[&str] = &["start_date", - "end_date"]; -impl NoPasswordLinkGenCreateReportDetails { +const PAPER_DESKTOP_POLICY_CHANGED_DETAILS_FIELDS: &[&str] = &["new_value", + "previous_value"]; +impl PaperDesktopPolicyChangedDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_start_date = None; - let mut field_end_date = None; + ) -> Result, V::Error> { + let mut field_new_value = None; + let mut field_previous_value = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "start_date" => { - if field_start_date.is_some() { - return Err(::serde::de::Error::duplicate_field("start_date")); + "new_value" => { + if field_new_value.is_some() { + return Err(::serde::de::Error::duplicate_field("new_value")); } - field_start_date = Some(map.next_value()?); + field_new_value = Some(map.next_value()?); } - "end_date" => { - if field_end_date.is_some() { - return Err(::serde::de::Error::duplicate_field("end_date")); + "previous_value" => { + if field_previous_value.is_some() { + return Err(::serde::de::Error::duplicate_field("previous_value")); } - field_end_date = Some(map.next_value()?); + field_previous_value = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -66314,9 +87612,9 @@ impl NoPasswordLinkGenCreateReportDetails { if optional && nothing { return Ok(None); } - let result = NoPasswordLinkGenCreateReportDetails { - start_date: field_start_date.ok_or_else(|| ::serde::de::Error::missing_field("start_date"))?, - end_date: field_end_date.ok_or_else(|| ::serde::de::Error::missing_field("end_date"))?, + let result = PaperDesktopPolicyChangedDetails { + new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, + previous_value: field_previous_value.ok_or_else(|| ::serde::de::Error::missing_field("previous_value"))?, }; Ok(Some(result)) } @@ -66326,35 +87624,35 @@ impl NoPasswordLinkGenCreateReportDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("start_date", &self.start_date)?; - s.serialize_field("end_date", &self.end_date)?; + s.serialize_field("new_value", &self.new_value)?; + s.serialize_field("previous_value", &self.previous_value)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for NoPasswordLinkGenCreateReportDetails { +impl<'de> ::serde::de::Deserialize<'de> for PaperDesktopPolicyChangedDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = NoPasswordLinkGenCreateReportDetails; + type Value = PaperDesktopPolicyChangedDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a NoPasswordLinkGenCreateReportDetails struct") + f.write_str("a PaperDesktopPolicyChangedDetails struct") } fn visit_map>(self, map: V) -> Result { - NoPasswordLinkGenCreateReportDetails::internal_deserialize(map) + PaperDesktopPolicyChangedDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("NoPasswordLinkGenCreateReportDetails", NO_PASSWORD_LINK_GEN_CREATE_REPORT_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("PaperDesktopPolicyChangedDetails", PAPER_DESKTOP_POLICY_CHANGED_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for NoPasswordLinkGenCreateReportDetails { +impl ::serde::ser::Serialize for PaperDesktopPolicyChangedDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("NoPasswordLinkGenCreateReportDetails", 2)?; + let mut s = serializer.serialize_struct("PaperDesktopPolicyChangedDetails", 2)?; self.internal_serialize::(&mut s)?; s.end() } @@ -66362,30 +87660,30 @@ impl ::serde::ser::Serialize for NoPasswordLinkGenCreateReportDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct NoPasswordLinkGenCreateReportType { +pub struct PaperDesktopPolicyChangedType { pub description: String, } -impl NoPasswordLinkGenCreateReportType { +impl PaperDesktopPolicyChangedType { pub fn new(description: String) -> Self { - NoPasswordLinkGenCreateReportType { + PaperDesktopPolicyChangedType { description, } } } -const NO_PASSWORD_LINK_GEN_CREATE_REPORT_TYPE_FIELDS: &[&str] = &["description"]; -impl NoPasswordLinkGenCreateReportType { +const PAPER_DESKTOP_POLICY_CHANGED_TYPE_FIELDS: &[&str] = &["description"]; +impl PaperDesktopPolicyChangedType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -66406,7 +87704,7 @@ impl NoPasswordLinkGenCreateReportType { if optional && nothing { return Ok(None); } - let result = NoPasswordLinkGenCreateReportType { + let result = PaperDesktopPolicyChangedType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -66422,72 +87720,88 @@ impl NoPasswordLinkGenCreateReportType { } } -impl<'de> ::serde::de::Deserialize<'de> for NoPasswordLinkGenCreateReportType { +impl<'de> ::serde::de::Deserialize<'de> for PaperDesktopPolicyChangedType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = NoPasswordLinkGenCreateReportType; + type Value = PaperDesktopPolicyChangedType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a NoPasswordLinkGenCreateReportType struct") + f.write_str("a PaperDesktopPolicyChangedType struct") } fn visit_map>(self, map: V) -> Result { - NoPasswordLinkGenCreateReportType::internal_deserialize(map) + PaperDesktopPolicyChangedType::internal_deserialize(map) } } - deserializer.deserialize_struct("NoPasswordLinkGenCreateReportType", NO_PASSWORD_LINK_GEN_CREATE_REPORT_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("PaperDesktopPolicyChangedType", PAPER_DESKTOP_POLICY_CHANGED_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for NoPasswordLinkGenCreateReportType { +impl ::serde::ser::Serialize for PaperDesktopPolicyChangedType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("NoPasswordLinkGenCreateReportType", 1)?; + let mut s = serializer.serialize_struct("PaperDesktopPolicyChangedType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Couldn't create report: Links created without passwords. +/// Added Paper doc comment. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct NoPasswordLinkGenReportFailedDetails { - /// Failure reason. - pub failure_reason: crate::types::team::TeamReportFailureReason, +pub struct PaperDocAddCommentDetails { + /// Event unique identifier. + pub event_uuid: String, + /// Comment text. + pub comment_text: Option, } -impl NoPasswordLinkGenReportFailedDetails { - pub fn new(failure_reason: crate::types::team::TeamReportFailureReason) -> Self { - NoPasswordLinkGenReportFailedDetails { - failure_reason, +impl PaperDocAddCommentDetails { + pub fn new(event_uuid: String) -> Self { + PaperDocAddCommentDetails { + event_uuid, + comment_text: None, } } + + pub fn with_comment_text(mut self, value: String) -> Self { + self.comment_text = Some(value); + self + } } -const NO_PASSWORD_LINK_GEN_REPORT_FAILED_DETAILS_FIELDS: &[&str] = &["failure_reason"]; -impl NoPasswordLinkGenReportFailedDetails { +const PAPER_DOC_ADD_COMMENT_DETAILS_FIELDS: &[&str] = &["event_uuid", + "comment_text"]; +impl PaperDocAddCommentDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_failure_reason = None; + ) -> Result, V::Error> { + let mut field_event_uuid = None; + let mut field_comment_text = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "failure_reason" => { - if field_failure_reason.is_some() { - return Err(::serde::de::Error::duplicate_field("failure_reason")); + "event_uuid" => { + if field_event_uuid.is_some() { + return Err(::serde::de::Error::duplicate_field("event_uuid")); } - field_failure_reason = Some(map.next_value()?); + field_event_uuid = Some(map.next_value()?); + } + "comment_text" => { + if field_comment_text.is_some() { + return Err(::serde::de::Error::duplicate_field("comment_text")); + } + field_comment_text = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -66498,8 +87812,9 @@ impl NoPasswordLinkGenReportFailedDetails { if optional && nothing { return Ok(None); } - let result = NoPasswordLinkGenReportFailedDetails { - failure_reason: field_failure_reason.ok_or_else(|| ::serde::de::Error::missing_field("failure_reason"))?, + let result = PaperDocAddCommentDetails { + event_uuid: field_event_uuid.ok_or_else(|| ::serde::de::Error::missing_field("event_uuid"))?, + comment_text: field_comment_text.and_then(Option::flatten), }; Ok(Some(result)) } @@ -66509,34 +87824,37 @@ impl NoPasswordLinkGenReportFailedDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("failure_reason", &self.failure_reason)?; + s.serialize_field("event_uuid", &self.event_uuid)?; + if let Some(val) = &self.comment_text { + s.serialize_field("comment_text", val)?; + } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for NoPasswordLinkGenReportFailedDetails { +impl<'de> ::serde::de::Deserialize<'de> for PaperDocAddCommentDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = NoPasswordLinkGenReportFailedDetails; + type Value = PaperDocAddCommentDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a NoPasswordLinkGenReportFailedDetails struct") + f.write_str("a PaperDocAddCommentDetails struct") } fn visit_map>(self, map: V) -> Result { - NoPasswordLinkGenReportFailedDetails::internal_deserialize(map) + PaperDocAddCommentDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("NoPasswordLinkGenReportFailedDetails", NO_PASSWORD_LINK_GEN_REPORT_FAILED_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("PaperDocAddCommentDetails", PAPER_DOC_ADD_COMMENT_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for NoPasswordLinkGenReportFailedDetails { +impl ::serde::ser::Serialize for PaperDocAddCommentDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("NoPasswordLinkGenReportFailedDetails", 1)?; + let mut s = serializer.serialize_struct("PaperDocAddCommentDetails", 2)?; self.internal_serialize::(&mut s)?; s.end() } @@ -66544,30 +87862,30 @@ impl ::serde::ser::Serialize for NoPasswordLinkGenReportFailedDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct NoPasswordLinkGenReportFailedType { +pub struct PaperDocAddCommentType { pub description: String, } -impl NoPasswordLinkGenReportFailedType { +impl PaperDocAddCommentType { pub fn new(description: String) -> Self { - NoPasswordLinkGenReportFailedType { + PaperDocAddCommentType { description, } } } -const NO_PASSWORD_LINK_GEN_REPORT_FAILED_TYPE_FIELDS: &[&str] = &["description"]; -impl NoPasswordLinkGenReportFailedType { +const PAPER_DOC_ADD_COMMENT_TYPE_FIELDS: &[&str] = &["description"]; +impl PaperDocAddCommentType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -66588,7 +87906,7 @@ impl NoPasswordLinkGenReportFailedType { if optional && nothing { return Ok(None); } - let result = NoPasswordLinkGenReportFailedType { + let result = PaperDocAddCommentType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -66604,86 +87922,83 @@ impl NoPasswordLinkGenReportFailedType { } } -impl<'de> ::serde::de::Deserialize<'de> for NoPasswordLinkGenReportFailedType { +impl<'de> ::serde::de::Deserialize<'de> for PaperDocAddCommentType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = NoPasswordLinkGenReportFailedType; + type Value = PaperDocAddCommentType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a NoPasswordLinkGenReportFailedType struct") + f.write_str("a PaperDocAddCommentType struct") } fn visit_map>(self, map: V) -> Result { - NoPasswordLinkGenReportFailedType::internal_deserialize(map) + PaperDocAddCommentType::internal_deserialize(map) } } - deserializer.deserialize_struct("NoPasswordLinkGenReportFailedType", NO_PASSWORD_LINK_GEN_REPORT_FAILED_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("PaperDocAddCommentType", PAPER_DOC_ADD_COMMENT_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for NoPasswordLinkGenReportFailedType { +impl ::serde::ser::Serialize for PaperDocAddCommentType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("NoPasswordLinkGenReportFailedType", 1)?; + let mut s = serializer.serialize_struct("PaperDocAddCommentType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Report created: Views of links without passwords. +/// Changed member permissions for Paper doc. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct NoPasswordLinkViewCreateReportDetails { - /// Report start date. - pub start_date: crate::types::common::DropboxTimestamp, - /// Report end date. - pub end_date: crate::types::common::DropboxTimestamp, +pub struct PaperDocChangeMemberRoleDetails { + /// Event unique identifier. + pub event_uuid: String, + /// Paper doc access type. + pub access_type: PaperAccessType, } -impl NoPasswordLinkViewCreateReportDetails { - pub fn new( - start_date: crate::types::common::DropboxTimestamp, - end_date: crate::types::common::DropboxTimestamp, - ) -> Self { - NoPasswordLinkViewCreateReportDetails { - start_date, - end_date, +impl PaperDocChangeMemberRoleDetails { + pub fn new(event_uuid: String, access_type: PaperAccessType) -> Self { + PaperDocChangeMemberRoleDetails { + event_uuid, + access_type, } } } -const NO_PASSWORD_LINK_VIEW_CREATE_REPORT_DETAILS_FIELDS: &[&str] = &["start_date", - "end_date"]; -impl NoPasswordLinkViewCreateReportDetails { +const PAPER_DOC_CHANGE_MEMBER_ROLE_DETAILS_FIELDS: &[&str] = &["event_uuid", + "access_type"]; +impl PaperDocChangeMemberRoleDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_start_date = None; - let mut field_end_date = None; + ) -> Result, V::Error> { + let mut field_event_uuid = None; + let mut field_access_type = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "start_date" => { - if field_start_date.is_some() { - return Err(::serde::de::Error::duplicate_field("start_date")); + "event_uuid" => { + if field_event_uuid.is_some() { + return Err(::serde::de::Error::duplicate_field("event_uuid")); } - field_start_date = Some(map.next_value()?); + field_event_uuid = Some(map.next_value()?); } - "end_date" => { - if field_end_date.is_some() { - return Err(::serde::de::Error::duplicate_field("end_date")); + "access_type" => { + if field_access_type.is_some() { + return Err(::serde::de::Error::duplicate_field("access_type")); } - field_end_date = Some(map.next_value()?); + field_access_type = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -66694,9 +88009,9 @@ impl NoPasswordLinkViewCreateReportDetails { if optional && nothing { return Ok(None); } - let result = NoPasswordLinkViewCreateReportDetails { - start_date: field_start_date.ok_or_else(|| ::serde::de::Error::missing_field("start_date"))?, - end_date: field_end_date.ok_or_else(|| ::serde::de::Error::missing_field("end_date"))?, + let result = PaperDocChangeMemberRoleDetails { + event_uuid: field_event_uuid.ok_or_else(|| ::serde::de::Error::missing_field("event_uuid"))?, + access_type: field_access_type.ok_or_else(|| ::serde::de::Error::missing_field("access_type"))?, }; Ok(Some(result)) } @@ -66706,35 +88021,35 @@ impl NoPasswordLinkViewCreateReportDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("start_date", &self.start_date)?; - s.serialize_field("end_date", &self.end_date)?; + s.serialize_field("event_uuid", &self.event_uuid)?; + s.serialize_field("access_type", &self.access_type)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for NoPasswordLinkViewCreateReportDetails { +impl<'de> ::serde::de::Deserialize<'de> for PaperDocChangeMemberRoleDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = NoPasswordLinkViewCreateReportDetails; + type Value = PaperDocChangeMemberRoleDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a NoPasswordLinkViewCreateReportDetails struct") + f.write_str("a PaperDocChangeMemberRoleDetails struct") } fn visit_map>(self, map: V) -> Result { - NoPasswordLinkViewCreateReportDetails::internal_deserialize(map) + PaperDocChangeMemberRoleDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("NoPasswordLinkViewCreateReportDetails", NO_PASSWORD_LINK_VIEW_CREATE_REPORT_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("PaperDocChangeMemberRoleDetails", PAPER_DOC_CHANGE_MEMBER_ROLE_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for NoPasswordLinkViewCreateReportDetails { +impl ::serde::ser::Serialize for PaperDocChangeMemberRoleDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("NoPasswordLinkViewCreateReportDetails", 2)?; + let mut s = serializer.serialize_struct("PaperDocChangeMemberRoleDetails", 2)?; self.internal_serialize::(&mut s)?; s.end() } @@ -66742,30 +88057,30 @@ impl ::serde::ser::Serialize for NoPasswordLinkViewCreateReportDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct NoPasswordLinkViewCreateReportType { +pub struct PaperDocChangeMemberRoleType { pub description: String, } -impl NoPasswordLinkViewCreateReportType { +impl PaperDocChangeMemberRoleType { pub fn new(description: String) -> Self { - NoPasswordLinkViewCreateReportType { + PaperDocChangeMemberRoleType { description, } } } -const NO_PASSWORD_LINK_VIEW_CREATE_REPORT_TYPE_FIELDS: &[&str] = &["description"]; -impl NoPasswordLinkViewCreateReportType { +const PAPER_DOC_CHANGE_MEMBER_ROLE_TYPE_FIELDS: &[&str] = &["description"]; +impl PaperDocChangeMemberRoleType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -66786,7 +88101,7 @@ impl NoPasswordLinkViewCreateReportType { if optional && nothing { return Ok(None); } - let result = NoPasswordLinkViewCreateReportType { + let result = PaperDocChangeMemberRoleType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -66802,72 +88117,104 @@ impl NoPasswordLinkViewCreateReportType { } } -impl<'de> ::serde::de::Deserialize<'de> for NoPasswordLinkViewCreateReportType { +impl<'de> ::serde::de::Deserialize<'de> for PaperDocChangeMemberRoleType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = NoPasswordLinkViewCreateReportType; + type Value = PaperDocChangeMemberRoleType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a NoPasswordLinkViewCreateReportType struct") + f.write_str("a PaperDocChangeMemberRoleType struct") } fn visit_map>(self, map: V) -> Result { - NoPasswordLinkViewCreateReportType::internal_deserialize(map) + PaperDocChangeMemberRoleType::internal_deserialize(map) } } - deserializer.deserialize_struct("NoPasswordLinkViewCreateReportType", NO_PASSWORD_LINK_VIEW_CREATE_REPORT_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("PaperDocChangeMemberRoleType", PAPER_DOC_CHANGE_MEMBER_ROLE_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for NoPasswordLinkViewCreateReportType { +impl ::serde::ser::Serialize for PaperDocChangeMemberRoleType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("NoPasswordLinkViewCreateReportType", 1)?; + let mut s = serializer.serialize_struct("PaperDocChangeMemberRoleType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Couldn't create report: Views of links without passwords. +/// Changed sharing setting for Paper doc. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct NoPasswordLinkViewReportFailedDetails { - /// Failure reason. - pub failure_reason: crate::types::team::TeamReportFailureReason, +pub struct PaperDocChangeSharingPolicyDetails { + /// Event unique identifier. + pub event_uuid: String, + /// Sharing policy with external users. + pub public_sharing_policy: Option, + /// Sharing policy with team. + pub team_sharing_policy: Option, } -impl NoPasswordLinkViewReportFailedDetails { - pub fn new(failure_reason: crate::types::team::TeamReportFailureReason) -> Self { - NoPasswordLinkViewReportFailedDetails { - failure_reason, +impl PaperDocChangeSharingPolicyDetails { + pub fn new(event_uuid: String) -> Self { + PaperDocChangeSharingPolicyDetails { + event_uuid, + public_sharing_policy: None, + team_sharing_policy: None, } } + + pub fn with_public_sharing_policy(mut self, value: String) -> Self { + self.public_sharing_policy = Some(value); + self + } + + pub fn with_team_sharing_policy(mut self, value: String) -> Self { + self.team_sharing_policy = Some(value); + self + } } -const NO_PASSWORD_LINK_VIEW_REPORT_FAILED_DETAILS_FIELDS: &[&str] = &["failure_reason"]; -impl NoPasswordLinkViewReportFailedDetails { +const PAPER_DOC_CHANGE_SHARING_POLICY_DETAILS_FIELDS: &[&str] = &["event_uuid", + "public_sharing_policy", + "team_sharing_policy"]; +impl PaperDocChangeSharingPolicyDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_failure_reason = None; + ) -> Result, V::Error> { + let mut field_event_uuid = None; + let mut field_public_sharing_policy = None; + let mut field_team_sharing_policy = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "failure_reason" => { - if field_failure_reason.is_some() { - return Err(::serde::de::Error::duplicate_field("failure_reason")); + "event_uuid" => { + if field_event_uuid.is_some() { + return Err(::serde::de::Error::duplicate_field("event_uuid")); } - field_failure_reason = Some(map.next_value()?); + field_event_uuid = Some(map.next_value()?); + } + "public_sharing_policy" => { + if field_public_sharing_policy.is_some() { + return Err(::serde::de::Error::duplicate_field("public_sharing_policy")); + } + field_public_sharing_policy = Some(map.next_value()?); + } + "team_sharing_policy" => { + if field_team_sharing_policy.is_some() { + return Err(::serde::de::Error::duplicate_field("team_sharing_policy")); + } + field_team_sharing_policy = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -66878,8 +88225,10 @@ impl NoPasswordLinkViewReportFailedDetails { if optional && nothing { return Ok(None); } - let result = NoPasswordLinkViewReportFailedDetails { - failure_reason: field_failure_reason.ok_or_else(|| ::serde::de::Error::missing_field("failure_reason"))?, + let result = PaperDocChangeSharingPolicyDetails { + event_uuid: field_event_uuid.ok_or_else(|| ::serde::de::Error::missing_field("event_uuid"))?, + public_sharing_policy: field_public_sharing_policy.and_then(Option::flatten), + team_sharing_policy: field_team_sharing_policy.and_then(Option::flatten), }; Ok(Some(result)) } @@ -66889,34 +88238,40 @@ impl NoPasswordLinkViewReportFailedDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("failure_reason", &self.failure_reason)?; + s.serialize_field("event_uuid", &self.event_uuid)?; + if let Some(val) = &self.public_sharing_policy { + s.serialize_field("public_sharing_policy", val)?; + } + if let Some(val) = &self.team_sharing_policy { + s.serialize_field("team_sharing_policy", val)?; + } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for NoPasswordLinkViewReportFailedDetails { +impl<'de> ::serde::de::Deserialize<'de> for PaperDocChangeSharingPolicyDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = NoPasswordLinkViewReportFailedDetails; + type Value = PaperDocChangeSharingPolicyDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a NoPasswordLinkViewReportFailedDetails struct") + f.write_str("a PaperDocChangeSharingPolicyDetails struct") } fn visit_map>(self, map: V) -> Result { - NoPasswordLinkViewReportFailedDetails::internal_deserialize(map) + PaperDocChangeSharingPolicyDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("NoPasswordLinkViewReportFailedDetails", NO_PASSWORD_LINK_VIEW_REPORT_FAILED_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("PaperDocChangeSharingPolicyDetails", PAPER_DOC_CHANGE_SHARING_POLICY_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for NoPasswordLinkViewReportFailedDetails { +impl ::serde::ser::Serialize for PaperDocChangeSharingPolicyDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("NoPasswordLinkViewReportFailedDetails", 1)?; + let mut s = serializer.serialize_struct("PaperDocChangeSharingPolicyDetails", 3)?; self.internal_serialize::(&mut s)?; s.end() } @@ -66924,30 +88279,30 @@ impl ::serde::ser::Serialize for NoPasswordLinkViewReportFailedDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct NoPasswordLinkViewReportFailedType { +pub struct PaperDocChangeSharingPolicyType { pub description: String, } -impl NoPasswordLinkViewReportFailedType { +impl PaperDocChangeSharingPolicyType { pub fn new(description: String) -> Self { - NoPasswordLinkViewReportFailedType { + PaperDocChangeSharingPolicyType { description, } } } -const NO_PASSWORD_LINK_VIEW_REPORT_FAILED_TYPE_FIELDS: &[&str] = &["description"]; -impl NoPasswordLinkViewReportFailedType { +const PAPER_DOC_CHANGE_SHARING_POLICY_TYPE_FIELDS: &[&str] = &["description"]; +impl PaperDocChangeSharingPolicyType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -66968,7 +88323,7 @@ impl NoPasswordLinkViewReportFailedType { if optional && nothing { return Ok(None); } - let result = NoPasswordLinkViewReportFailedType { + let result = PaperDocChangeSharingPolicyType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -66984,93 +88339,99 @@ impl NoPasswordLinkViewReportFailedType { } } -impl<'de> ::serde::de::Deserialize<'de> for NoPasswordLinkViewReportFailedType { +impl<'de> ::serde::de::Deserialize<'de> for PaperDocChangeSharingPolicyType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = NoPasswordLinkViewReportFailedType; + type Value = PaperDocChangeSharingPolicyType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a NoPasswordLinkViewReportFailedType struct") + f.write_str("a PaperDocChangeSharingPolicyType struct") } fn visit_map>(self, map: V) -> Result { - NoPasswordLinkViewReportFailedType::internal_deserialize(map) + PaperDocChangeSharingPolicyType::internal_deserialize(map) } } - deserializer.deserialize_struct("NoPasswordLinkViewReportFailedType", NO_PASSWORD_LINK_VIEW_REPORT_FAILED_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("PaperDocChangeSharingPolicyType", PAPER_DOC_CHANGE_SHARING_POLICY_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for NoPasswordLinkViewReportFailedType { +impl ::serde::ser::Serialize for PaperDocChangeSharingPolicyType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("NoPasswordLinkViewReportFailedType", 1)?; + let mut s = serializer.serialize_struct("PaperDocChangeSharingPolicyType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Non team member's logged information. -#[derive(Debug, Clone, PartialEq, Eq, Default)] +/// Followed/unfollowed Paper doc. +#[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct NonTeamMemberLogInfo { - /// User unique ID. - pub account_id: Option, - /// User display name. - pub display_name: Option, - /// User email address. - pub email: Option, +pub struct PaperDocChangeSubscriptionDetails { + /// Event unique identifier. + pub event_uuid: String, + /// New doc subscription level. + pub new_subscription_level: String, + /// Previous doc subscription level. Might be missing due to historical data gap. + pub previous_subscription_level: Option, } -impl NonTeamMemberLogInfo { - pub fn with_account_id(mut self, value: crate::types::users_common::AccountId) -> Self { - self.account_id = Some(value); - self - } - - pub fn with_display_name(mut self, value: crate::types::common::DisplayNameLegacy) -> Self { - self.display_name = Some(value); - self +impl PaperDocChangeSubscriptionDetails { + pub fn new(event_uuid: String, new_subscription_level: String) -> Self { + PaperDocChangeSubscriptionDetails { + event_uuid, + new_subscription_level, + previous_subscription_level: None, + } } - pub fn with_email(mut self, value: EmailAddress) -> Self { - self.email = Some(value); + pub fn with_previous_subscription_level(mut self, value: String) -> Self { + self.previous_subscription_level = Some(value); self } } -const NON_TEAM_MEMBER_LOG_INFO_FIELDS: &[&str] = &["account_id", - "display_name", - "email"]; -impl NonTeamMemberLogInfo { - // no _opt deserializer +const PAPER_DOC_CHANGE_SUBSCRIPTION_DETAILS_FIELDS: &[&str] = &["event_uuid", + "new_subscription_level", + "previous_subscription_level"]; +impl PaperDocChangeSubscriptionDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - ) -> Result { - let mut field_account_id = None; - let mut field_display_name = None; - let mut field_email = None; + optional: bool, + ) -> Result, V::Error> { + let mut field_event_uuid = None; + let mut field_new_subscription_level = None; + let mut field_previous_subscription_level = None; + let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { + nothing = false; match key { - "account_id" => { - if field_account_id.is_some() { - return Err(::serde::de::Error::duplicate_field("account_id")); + "event_uuid" => { + if field_event_uuid.is_some() { + return Err(::serde::de::Error::duplicate_field("event_uuid")); } - field_account_id = Some(map.next_value()?); + field_event_uuid = Some(map.next_value()?); } - "display_name" => { - if field_display_name.is_some() { - return Err(::serde::de::Error::duplicate_field("display_name")); + "new_subscription_level" => { + if field_new_subscription_level.is_some() { + return Err(::serde::de::Error::duplicate_field("new_subscription_level")); } - field_display_name = Some(map.next_value()?); + field_new_subscription_level = Some(map.next_value()?); } - "email" => { - if field_email.is_some() { - return Err(::serde::de::Error::duplicate_field("email")); + "previous_subscription_level" => { + if field_previous_subscription_level.is_some() { + return Err(::serde::de::Error::duplicate_field("previous_subscription_level")); } - field_email = Some(map.next_value()?); + field_previous_subscription_level = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -67078,12 +88439,15 @@ impl NonTeamMemberLogInfo { } } } - let result = NonTeamMemberLogInfo { - account_id: field_account_id.and_then(Option::flatten), - display_name: field_display_name.and_then(Option::flatten), - email: field_email.and_then(Option::flatten), + if optional && nothing { + return Ok(None); + } + let result = PaperDocChangeSubscriptionDetails { + event_uuid: field_event_uuid.ok_or_else(|| ::serde::de::Error::missing_field("event_uuid"))?, + new_subscription_level: field_new_subscription_level.ok_or_else(|| ::serde::de::Error::missing_field("new_subscription_level"))?, + previous_subscription_level: field_previous_subscription_level.and_then(Option::flatten), }; - Ok(result) + Ok(Some(result)) } pub(crate) fn internal_serialize( @@ -67091,91 +88455,79 @@ impl NonTeamMemberLogInfo { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - if let Some(val) = &self.account_id { - s.serialize_field("account_id", val)?; - } - if let Some(val) = &self.display_name { - s.serialize_field("display_name", val)?; - } - if let Some(val) = &self.email { - s.serialize_field("email", val)?; + s.serialize_field("event_uuid", &self.event_uuid)?; + s.serialize_field("new_subscription_level", &self.new_subscription_level)?; + if let Some(val) = &self.previous_subscription_level { + s.serialize_field("previous_subscription_level", val)?; } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for NonTeamMemberLogInfo { +impl<'de> ::serde::de::Deserialize<'de> for PaperDocChangeSubscriptionDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = NonTeamMemberLogInfo; + type Value = PaperDocChangeSubscriptionDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a NonTeamMemberLogInfo struct") + f.write_str("a PaperDocChangeSubscriptionDetails struct") } fn visit_map>(self, map: V) -> Result { - NonTeamMemberLogInfo::internal_deserialize(map) + PaperDocChangeSubscriptionDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("NonTeamMemberLogInfo", NON_TEAM_MEMBER_LOG_INFO_FIELDS, StructVisitor) + deserializer.deserialize_struct("PaperDocChangeSubscriptionDetails", PAPER_DOC_CHANGE_SUBSCRIPTION_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for NonTeamMemberLogInfo { +impl ::serde::ser::Serialize for PaperDocChangeSubscriptionDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("NonTeamMemberLogInfo", 3)?; + let mut s = serializer.serialize_struct("PaperDocChangeSubscriptionDetails", 3)?; self.internal_serialize::(&mut s)?; s.end() } } -// struct extends polymorphic struct UserLogInfo -impl From for UserLogInfo { - fn from(subtype: NonTeamMemberLogInfo) -> Self { - UserLogInfo::NonTeamMember(subtype) - } -} -/// The email to which the request was sent #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct NonTrustedTeamDetails { - /// The email to which the request was sent. - pub team: String, +pub struct PaperDocChangeSubscriptionType { + pub description: String, } -impl NonTrustedTeamDetails { - pub fn new(team: String) -> Self { - NonTrustedTeamDetails { - team, +impl PaperDocChangeSubscriptionType { + pub fn new(description: String) -> Self { + PaperDocChangeSubscriptionType { + description, } } } -const NON_TRUSTED_TEAM_DETAILS_FIELDS: &[&str] = &["team"]; -impl NonTrustedTeamDetails { +const PAPER_DOC_CHANGE_SUBSCRIPTION_TYPE_FIELDS: &[&str] = &["description"]; +impl PaperDocChangeSubscriptionType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_team = None; + ) -> Result, V::Error> { + let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "team" => { - if field_team.is_some() { - return Err(::serde::de::Error::duplicate_field("team")); + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); } - field_team = Some(map.next_value()?); + field_description = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -67186,8 +88538,8 @@ impl NonTrustedTeamDetails { if optional && nothing { return Ok(None); } - let result = NonTrustedTeamDetails { - team: field_team.ok_or_else(|| ::serde::de::Error::missing_field("team"))?, + let result = PaperDocChangeSubscriptionType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) } @@ -67197,119 +88549,93 @@ impl NonTrustedTeamDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("team", &self.team)?; + s.serialize_field("description", &self.description)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for NonTrustedTeamDetails { +impl<'de> ::serde::de::Deserialize<'de> for PaperDocChangeSubscriptionType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = NonTrustedTeamDetails; + type Value = PaperDocChangeSubscriptionType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a NonTrustedTeamDetails struct") + f.write_str("a PaperDocChangeSubscriptionType struct") } fn visit_map>(self, map: V) -> Result { - NonTrustedTeamDetails::internal_deserialize(map) + PaperDocChangeSubscriptionType::internal_deserialize(map) } } - deserializer.deserialize_struct("NonTrustedTeamDetails", NON_TRUSTED_TEAM_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("PaperDocChangeSubscriptionType", PAPER_DOC_CHANGE_SUBSCRIPTION_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for NonTrustedTeamDetails { +impl ::serde::ser::Serialize for PaperDocChangeSubscriptionType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("NonTrustedTeamDetails", 1)?; + let mut s = serializer.serialize_struct("PaperDocChangeSubscriptionType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Changed Paper doc to invite-only. -#[derive(Debug, Clone, PartialEq, Eq, Default)] +/// Deleted Paper doc comment. +#[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct NoteAclInviteOnlyDetails { -} - -const NOTE_ACL_INVITE_ONLY_DETAILS_FIELDS: &[&str] = &[]; -impl NoteAclInviteOnlyDetails { - // no _opt deserializer - pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( - mut map: V, - ) -> Result { - // ignore any fields found; none are presently recognized - crate::eat_json_fields(&mut map)?; - Ok(NoteAclInviteOnlyDetails {}) - } +pub struct PaperDocDeleteCommentDetails { + /// Event unique identifier. + pub event_uuid: String, + /// Comment text. + pub comment_text: Option, } -impl<'de> ::serde::de::Deserialize<'de> for NoteAclInviteOnlyDetails { - fn deserialize>(deserializer: D) -> Result { - // struct deserializer - use serde::de::{MapAccess, Visitor}; - struct StructVisitor; - impl<'de> Visitor<'de> for StructVisitor { - type Value = NoteAclInviteOnlyDetails; - fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a NoteAclInviteOnlyDetails struct") - } - fn visit_map>(self, map: V) -> Result { - NoteAclInviteOnlyDetails::internal_deserialize(map) - } +impl PaperDocDeleteCommentDetails { + pub fn new(event_uuid: String) -> Self { + PaperDocDeleteCommentDetails { + event_uuid, + comment_text: None, } - deserializer.deserialize_struct("NoteAclInviteOnlyDetails", NOTE_ACL_INVITE_ONLY_DETAILS_FIELDS, StructVisitor) - } -} - -impl ::serde::ser::Serialize for NoteAclInviteOnlyDetails { - fn serialize(&self, serializer: S) -> Result { - // struct serializer - use serde::ser::SerializeStruct; - serializer.serialize_struct("NoteAclInviteOnlyDetails", 0)?.end() } -} - -#[derive(Debug, Clone, PartialEq, Eq)] -#[non_exhaustive] // structs may have more fields added in the future. -pub struct NoteAclInviteOnlyType { - pub description: String, -} -impl NoteAclInviteOnlyType { - pub fn new(description: String) -> Self { - NoteAclInviteOnlyType { - description, - } + pub fn with_comment_text(mut self, value: String) -> Self { + self.comment_text = Some(value); + self } } -const NOTE_ACL_INVITE_ONLY_TYPE_FIELDS: &[&str] = &["description"]; -impl NoteAclInviteOnlyType { +const PAPER_DOC_DELETE_COMMENT_DETAILS_FIELDS: &[&str] = &["event_uuid", + "comment_text"]; +impl PaperDocDeleteCommentDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_description = None; + ) -> Result, V::Error> { + let mut field_event_uuid = None; + let mut field_comment_text = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "description" => { - if field_description.is_some() { - return Err(::serde::de::Error::duplicate_field("description")); + "event_uuid" => { + if field_event_uuid.is_some() { + return Err(::serde::de::Error::duplicate_field("event_uuid")); } - field_description = Some(map.next_value()?); + field_event_uuid = Some(map.next_value()?); + } + "comment_text" => { + if field_comment_text.is_some() { + return Err(::serde::de::Error::duplicate_field("comment_text")); + } + field_comment_text = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -67320,8 +88646,9 @@ impl NoteAclInviteOnlyType { if optional && nothing { return Ok(None); } - let result = NoteAclInviteOnlyType { - description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + let result = PaperDocDeleteCommentDetails { + event_uuid: field_event_uuid.ok_or_else(|| ::serde::de::Error::missing_field("event_uuid"))?, + comment_text: field_comment_text.and_then(Option::flatten), }; Ok(Some(result)) } @@ -67331,109 +88658,68 @@ impl NoteAclInviteOnlyType { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("description", &self.description)?; + s.serialize_field("event_uuid", &self.event_uuid)?; + if let Some(val) = &self.comment_text { + s.serialize_field("comment_text", val)?; + } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for NoteAclInviteOnlyType { +impl<'de> ::serde::de::Deserialize<'de> for PaperDocDeleteCommentDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = NoteAclInviteOnlyType; + type Value = PaperDocDeleteCommentDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a NoteAclInviteOnlyType struct") + f.write_str("a PaperDocDeleteCommentDetails struct") } fn visit_map>(self, map: V) -> Result { - NoteAclInviteOnlyType::internal_deserialize(map) + PaperDocDeleteCommentDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("NoteAclInviteOnlyType", NOTE_ACL_INVITE_ONLY_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("PaperDocDeleteCommentDetails", PAPER_DOC_DELETE_COMMENT_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for NoteAclInviteOnlyType { +impl ::serde::ser::Serialize for PaperDocDeleteCommentDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("NoteAclInviteOnlyType", 1)?; + let mut s = serializer.serialize_struct("PaperDocDeleteCommentDetails", 2)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Changed Paper doc to link-accessible. -#[derive(Debug, Clone, PartialEq, Eq, Default)] -#[non_exhaustive] // structs may have more fields added in the future. -pub struct NoteAclLinkDetails { -} - -const NOTE_ACL_LINK_DETAILS_FIELDS: &[&str] = &[]; -impl NoteAclLinkDetails { - // no _opt deserializer - pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( - mut map: V, - ) -> Result { - // ignore any fields found; none are presently recognized - crate::eat_json_fields(&mut map)?; - Ok(NoteAclLinkDetails {}) - } -} - -impl<'de> ::serde::de::Deserialize<'de> for NoteAclLinkDetails { - fn deserialize>(deserializer: D) -> Result { - // struct deserializer - use serde::de::{MapAccess, Visitor}; - struct StructVisitor; - impl<'de> Visitor<'de> for StructVisitor { - type Value = NoteAclLinkDetails; - fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a NoteAclLinkDetails struct") - } - fn visit_map>(self, map: V) -> Result { - NoteAclLinkDetails::internal_deserialize(map) - } - } - deserializer.deserialize_struct("NoteAclLinkDetails", NOTE_ACL_LINK_DETAILS_FIELDS, StructVisitor) - } -} - -impl ::serde::ser::Serialize for NoteAclLinkDetails { - fn serialize(&self, serializer: S) -> Result { - // struct serializer - use serde::ser::SerializeStruct; - serializer.serialize_struct("NoteAclLinkDetails", 0)?.end() - } -} - #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct NoteAclLinkType { +pub struct PaperDocDeleteCommentType { pub description: String, } -impl NoteAclLinkType { +impl PaperDocDeleteCommentType { pub fn new(description: String) -> Self { - NoteAclLinkType { + PaperDocDeleteCommentType { description, } } } -const NOTE_ACL_LINK_TYPE_FIELDS: &[&str] = &["description"]; -impl NoteAclLinkType { +const PAPER_DOC_DELETE_COMMENT_TYPE_FIELDS: &[&str] = &["description"]; +impl PaperDocDeleteCommentType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -67454,7 +88740,7 @@ impl NoteAclLinkType { if optional && nothing { return Ok(None); } - let result = NoteAclLinkType { + let result = PaperDocDeleteCommentType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -67470,104 +88756,152 @@ impl NoteAclLinkType { } } -impl<'de> ::serde::de::Deserialize<'de> for NoteAclLinkType { +impl<'de> ::serde::de::Deserialize<'de> for PaperDocDeleteCommentType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = NoteAclLinkType; + type Value = PaperDocDeleteCommentType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a NoteAclLinkType struct") + f.write_str("a PaperDocDeleteCommentType struct") } fn visit_map>(self, map: V) -> Result { - NoteAclLinkType::internal_deserialize(map) + PaperDocDeleteCommentType::internal_deserialize(map) } } - deserializer.deserialize_struct("NoteAclLinkType", NOTE_ACL_LINK_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("PaperDocDeleteCommentType", PAPER_DOC_DELETE_COMMENT_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for NoteAclLinkType { +impl ::serde::ser::Serialize for PaperDocDeleteCommentType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("NoteAclLinkType", 1)?; + let mut s = serializer.serialize_struct("PaperDocDeleteCommentType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Changed Paper doc to link-accessible for team. -#[derive(Debug, Clone, PartialEq, Eq, Default)] +/// Archived Paper doc. +#[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct NoteAclTeamLinkDetails { +pub struct PaperDocDeletedDetails { + /// Event unique identifier. + pub event_uuid: String, } -const NOTE_ACL_TEAM_LINK_DETAILS_FIELDS: &[&str] = &[]; -impl NoteAclTeamLinkDetails { - // no _opt deserializer +impl PaperDocDeletedDetails { + pub fn new(event_uuid: String) -> Self { + PaperDocDeletedDetails { + event_uuid, + } + } +} + +const PAPER_DOC_DELETED_DETAILS_FIELDS: &[&str] = &["event_uuid"]; +impl PaperDocDeletedDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - ) -> Result { - // ignore any fields found; none are presently recognized - crate::eat_json_fields(&mut map)?; - Ok(NoteAclTeamLinkDetails {}) + optional: bool, + ) -> Result, V::Error> { + let mut field_event_uuid = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "event_uuid" => { + if field_event_uuid.is_some() { + return Err(::serde::de::Error::duplicate_field("event_uuid")); + } + field_event_uuid = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } + } + } + if optional && nothing { + return Ok(None); + } + let result = PaperDocDeletedDetails { + event_uuid: field_event_uuid.ok_or_else(|| ::serde::de::Error::missing_field("event_uuid"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("event_uuid", &self.event_uuid)?; + Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for NoteAclTeamLinkDetails { +impl<'de> ::serde::de::Deserialize<'de> for PaperDocDeletedDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = NoteAclTeamLinkDetails; + type Value = PaperDocDeletedDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a NoteAclTeamLinkDetails struct") + f.write_str("a PaperDocDeletedDetails struct") } fn visit_map>(self, map: V) -> Result { - NoteAclTeamLinkDetails::internal_deserialize(map) + PaperDocDeletedDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("NoteAclTeamLinkDetails", NOTE_ACL_TEAM_LINK_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("PaperDocDeletedDetails", PAPER_DOC_DELETED_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for NoteAclTeamLinkDetails { +impl ::serde::ser::Serialize for PaperDocDeletedDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - serializer.serialize_struct("NoteAclTeamLinkDetails", 0)?.end() + let mut s = serializer.serialize_struct("PaperDocDeletedDetails", 1)?; + self.internal_serialize::(&mut s)?; + s.end() } } #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct NoteAclTeamLinkType { +pub struct PaperDocDeletedType { pub description: String, } -impl NoteAclTeamLinkType { +impl PaperDocDeletedType { pub fn new(description: String) -> Self { - NoteAclTeamLinkType { + PaperDocDeletedType { description, } } } -const NOTE_ACL_TEAM_LINK_TYPE_FIELDS: &[&str] = &["description"]; -impl NoteAclTeamLinkType { +const PAPER_DOC_DELETED_TYPE_FIELDS: &[&str] = &["description"]; +impl PaperDocDeletedType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -67588,7 +88922,7 @@ impl NoteAclTeamLinkType { if optional && nothing { return Ok(None); } - let result = NoteAclTeamLinkType { + let result = PaperDocDeletedType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -67604,104 +88938,165 @@ impl NoteAclTeamLinkType { } } -impl<'de> ::serde::de::Deserialize<'de> for NoteAclTeamLinkType { +impl<'de> ::serde::de::Deserialize<'de> for PaperDocDeletedType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = NoteAclTeamLinkType; + type Value = PaperDocDeletedType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a NoteAclTeamLinkType struct") + f.write_str("a PaperDocDeletedType struct") } fn visit_map>(self, map: V) -> Result { - NoteAclTeamLinkType::internal_deserialize(map) + PaperDocDeletedType::internal_deserialize(map) } } - deserializer.deserialize_struct("NoteAclTeamLinkType", NOTE_ACL_TEAM_LINK_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("PaperDocDeletedType", PAPER_DOC_DELETED_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for NoteAclTeamLinkType { +impl ::serde::ser::Serialize for PaperDocDeletedType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("NoteAclTeamLinkType", 1)?; + let mut s = serializer.serialize_struct("PaperDocDeletedType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Shared received Paper doc. -#[derive(Debug, Clone, PartialEq, Eq, Default)] +/// Downloaded Paper doc in specific format. +#[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct NoteShareReceiveDetails { +pub struct PaperDocDownloadDetails { + /// Event unique identifier. + pub event_uuid: String, + /// Export file format. + pub export_file_format: PaperDownloadFormat, } -const NOTE_SHARE_RECEIVE_DETAILS_FIELDS: &[&str] = &[]; -impl NoteShareReceiveDetails { - // no _opt deserializer +impl PaperDocDownloadDetails { + pub fn new(event_uuid: String, export_file_format: PaperDownloadFormat) -> Self { + PaperDocDownloadDetails { + event_uuid, + export_file_format, + } + } +} + +const PAPER_DOC_DOWNLOAD_DETAILS_FIELDS: &[&str] = &["event_uuid", + "export_file_format"]; +impl PaperDocDownloadDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - ) -> Result { - // ignore any fields found; none are presently recognized - crate::eat_json_fields(&mut map)?; - Ok(NoteShareReceiveDetails {}) + optional: bool, + ) -> Result, V::Error> { + let mut field_event_uuid = None; + let mut field_export_file_format = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "event_uuid" => { + if field_event_uuid.is_some() { + return Err(::serde::de::Error::duplicate_field("event_uuid")); + } + field_event_uuid = Some(map.next_value()?); + } + "export_file_format" => { + if field_export_file_format.is_some() { + return Err(::serde::de::Error::duplicate_field("export_file_format")); + } + field_export_file_format = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } + } + } + if optional && nothing { + return Ok(None); + } + let result = PaperDocDownloadDetails { + event_uuid: field_event_uuid.ok_or_else(|| ::serde::de::Error::missing_field("event_uuid"))?, + export_file_format: field_export_file_format.ok_or_else(|| ::serde::de::Error::missing_field("export_file_format"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("event_uuid", &self.event_uuid)?; + s.serialize_field("export_file_format", &self.export_file_format)?; + Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for NoteShareReceiveDetails { +impl<'de> ::serde::de::Deserialize<'de> for PaperDocDownloadDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = NoteShareReceiveDetails; + type Value = PaperDocDownloadDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a NoteShareReceiveDetails struct") + f.write_str("a PaperDocDownloadDetails struct") } fn visit_map>(self, map: V) -> Result { - NoteShareReceiveDetails::internal_deserialize(map) + PaperDocDownloadDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("NoteShareReceiveDetails", NOTE_SHARE_RECEIVE_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("PaperDocDownloadDetails", PAPER_DOC_DOWNLOAD_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for NoteShareReceiveDetails { +impl ::serde::ser::Serialize for PaperDocDownloadDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - serializer.serialize_struct("NoteShareReceiveDetails", 0)?.end() + let mut s = serializer.serialize_struct("PaperDocDownloadDetails", 2)?; + self.internal_serialize::(&mut s)?; + s.end() } } #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct NoteShareReceiveType { +pub struct PaperDocDownloadType { pub description: String, } -impl NoteShareReceiveType { +impl PaperDocDownloadType { pub fn new(description: String) -> Self { - NoteShareReceiveType { + PaperDocDownloadType { description, } } } - -const NOTE_SHARE_RECEIVE_TYPE_FIELDS: &[&str] = &["description"]; -impl NoteShareReceiveType { + +const PAPER_DOC_DOWNLOAD_TYPE_FIELDS: &[&str] = &["description"]; +impl PaperDocDownloadType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -67722,7 +89117,7 @@ impl NoteShareReceiveType { if optional && nothing { return Ok(None); } - let result = NoteShareReceiveType { + let result = PaperDocDownloadType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -67738,104 +89133,172 @@ impl NoteShareReceiveType { } } -impl<'de> ::serde::de::Deserialize<'de> for NoteShareReceiveType { +impl<'de> ::serde::de::Deserialize<'de> for PaperDocDownloadType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = NoteShareReceiveType; + type Value = PaperDocDownloadType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a NoteShareReceiveType struct") + f.write_str("a PaperDocDownloadType struct") } fn visit_map>(self, map: V) -> Result { - NoteShareReceiveType::internal_deserialize(map) + PaperDocDownloadType::internal_deserialize(map) } } - deserializer.deserialize_struct("NoteShareReceiveType", NOTE_SHARE_RECEIVE_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("PaperDocDownloadType", PAPER_DOC_DOWNLOAD_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for NoteShareReceiveType { +impl ::serde::ser::Serialize for PaperDocDownloadType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("NoteShareReceiveType", 1)?; + let mut s = serializer.serialize_struct("PaperDocDownloadType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Shared Paper doc. -#[derive(Debug, Clone, PartialEq, Eq, Default)] +/// Edited Paper doc comment. +#[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct NoteSharedDetails { +pub struct PaperDocEditCommentDetails { + /// Event unique identifier. + pub event_uuid: String, + /// Comment text. + pub comment_text: Option, } -const NOTE_SHARED_DETAILS_FIELDS: &[&str] = &[]; -impl NoteSharedDetails { - // no _opt deserializer +impl PaperDocEditCommentDetails { + pub fn new(event_uuid: String) -> Self { + PaperDocEditCommentDetails { + event_uuid, + comment_text: None, + } + } + + pub fn with_comment_text(mut self, value: String) -> Self { + self.comment_text = Some(value); + self + } +} + +const PAPER_DOC_EDIT_COMMENT_DETAILS_FIELDS: &[&str] = &["event_uuid", + "comment_text"]; +impl PaperDocEditCommentDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - ) -> Result { - // ignore any fields found; none are presently recognized - crate::eat_json_fields(&mut map)?; - Ok(NoteSharedDetails {}) + optional: bool, + ) -> Result, V::Error> { + let mut field_event_uuid = None; + let mut field_comment_text = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "event_uuid" => { + if field_event_uuid.is_some() { + return Err(::serde::de::Error::duplicate_field("event_uuid")); + } + field_event_uuid = Some(map.next_value()?); + } + "comment_text" => { + if field_comment_text.is_some() { + return Err(::serde::de::Error::duplicate_field("comment_text")); + } + field_comment_text = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } + } + } + if optional && nothing { + return Ok(None); + } + let result = PaperDocEditCommentDetails { + event_uuid: field_event_uuid.ok_or_else(|| ::serde::de::Error::missing_field("event_uuid"))?, + comment_text: field_comment_text.and_then(Option::flatten), + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("event_uuid", &self.event_uuid)?; + if let Some(val) = &self.comment_text { + s.serialize_field("comment_text", val)?; + } + Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for NoteSharedDetails { +impl<'de> ::serde::de::Deserialize<'de> for PaperDocEditCommentDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = NoteSharedDetails; + type Value = PaperDocEditCommentDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a NoteSharedDetails struct") + f.write_str("a PaperDocEditCommentDetails struct") } fn visit_map>(self, map: V) -> Result { - NoteSharedDetails::internal_deserialize(map) + PaperDocEditCommentDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("NoteSharedDetails", NOTE_SHARED_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("PaperDocEditCommentDetails", PAPER_DOC_EDIT_COMMENT_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for NoteSharedDetails { +impl ::serde::ser::Serialize for PaperDocEditCommentDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - serializer.serialize_struct("NoteSharedDetails", 0)?.end() + let mut s = serializer.serialize_struct("PaperDocEditCommentDetails", 2)?; + self.internal_serialize::(&mut s)?; + s.end() } } #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct NoteSharedType { +pub struct PaperDocEditCommentType { pub description: String, } -impl NoteSharedType { +impl PaperDocEditCommentType { pub fn new(description: String) -> Self { - NoteSharedType { + PaperDocEditCommentType { description, } } } -const NOTE_SHARED_TYPE_FIELDS: &[&str] = &["description"]; -impl NoteSharedType { +const PAPER_DOC_EDIT_COMMENT_TYPE_FIELDS: &[&str] = &["description"]; +impl PaperDocEditCommentType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -67856,7 +89319,7 @@ impl NoteSharedType { if optional && nothing { return Ok(None); } - let result = NoteSharedType { + let result = PaperDocEditCommentType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -67872,72 +89335,72 @@ impl NoteSharedType { } } -impl<'de> ::serde::de::Deserialize<'de> for NoteSharedType { +impl<'de> ::serde::de::Deserialize<'de> for PaperDocEditCommentType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = NoteSharedType; + type Value = PaperDocEditCommentType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a NoteSharedType struct") + f.write_str("a PaperDocEditCommentType struct") } fn visit_map>(self, map: V) -> Result { - NoteSharedType::internal_deserialize(map) + PaperDocEditCommentType::internal_deserialize(map) } } - deserializer.deserialize_struct("NoteSharedType", NOTE_SHARED_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("PaperDocEditCommentType", PAPER_DOC_EDIT_COMMENT_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for NoteSharedType { +impl ::serde::ser::Serialize for PaperDocEditCommentType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("NoteSharedType", 1)?; + let mut s = serializer.serialize_struct("PaperDocEditCommentType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Added a label. +/// Edited Paper doc. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct ObjectLabelAddedDetails { - /// Labels mark a file or folder. - pub label_type: LabelType, +pub struct PaperDocEditDetails { + /// Event unique identifier. + pub event_uuid: String, } -impl ObjectLabelAddedDetails { - pub fn new(label_type: LabelType) -> Self { - ObjectLabelAddedDetails { - label_type, +impl PaperDocEditDetails { + pub fn new(event_uuid: String) -> Self { + PaperDocEditDetails { + event_uuid, } } } -const OBJECT_LABEL_ADDED_DETAILS_FIELDS: &[&str] = &["label_type"]; -impl ObjectLabelAddedDetails { +const PAPER_DOC_EDIT_DETAILS_FIELDS: &[&str] = &["event_uuid"]; +impl PaperDocEditDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_label_type = None; + ) -> Result, V::Error> { + let mut field_event_uuid = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "label_type" => { - if field_label_type.is_some() { - return Err(::serde::de::Error::duplicate_field("label_type")); + "event_uuid" => { + if field_event_uuid.is_some() { + return Err(::serde::de::Error::duplicate_field("event_uuid")); } - field_label_type = Some(map.next_value()?); + field_event_uuid = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -67948,8 +89411,8 @@ impl ObjectLabelAddedDetails { if optional && nothing { return Ok(None); } - let result = ObjectLabelAddedDetails { - label_type: field_label_type.ok_or_else(|| ::serde::de::Error::missing_field("label_type"))?, + let result = PaperDocEditDetails { + event_uuid: field_event_uuid.ok_or_else(|| ::serde::de::Error::missing_field("event_uuid"))?, }; Ok(Some(result)) } @@ -67959,34 +89422,34 @@ impl ObjectLabelAddedDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("label_type", &self.label_type)?; + s.serialize_field("event_uuid", &self.event_uuid)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for ObjectLabelAddedDetails { +impl<'de> ::serde::de::Deserialize<'de> for PaperDocEditDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = ObjectLabelAddedDetails; + type Value = PaperDocEditDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a ObjectLabelAddedDetails struct") + f.write_str("a PaperDocEditDetails struct") } fn visit_map>(self, map: V) -> Result { - ObjectLabelAddedDetails::internal_deserialize(map) + PaperDocEditDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("ObjectLabelAddedDetails", OBJECT_LABEL_ADDED_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("PaperDocEditDetails", PAPER_DOC_EDIT_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for ObjectLabelAddedDetails { +impl ::serde::ser::Serialize for PaperDocEditDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("ObjectLabelAddedDetails", 1)?; + let mut s = serializer.serialize_struct("PaperDocEditDetails", 1)?; self.internal_serialize::(&mut s)?; s.end() } @@ -67994,30 +89457,30 @@ impl ::serde::ser::Serialize for ObjectLabelAddedDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct ObjectLabelAddedType { +pub struct PaperDocEditType { pub description: String, } -impl ObjectLabelAddedType { +impl PaperDocEditType { pub fn new(description: String) -> Self { - ObjectLabelAddedType { + PaperDocEditType { description, } } } -const OBJECT_LABEL_ADDED_TYPE_FIELDS: &[&str] = &["description"]; -impl ObjectLabelAddedType { +const PAPER_DOC_EDIT_TYPE_FIELDS: &[&str] = &["description"]; +impl PaperDocEditType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -68038,7 +89501,7 @@ impl ObjectLabelAddedType { if optional && nothing { return Ok(None); } - let result = ObjectLabelAddedType { + let result = PaperDocEditType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -68054,72 +89517,72 @@ impl ObjectLabelAddedType { } } -impl<'de> ::serde::de::Deserialize<'de> for ObjectLabelAddedType { +impl<'de> ::serde::de::Deserialize<'de> for PaperDocEditType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = ObjectLabelAddedType; + type Value = PaperDocEditType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a ObjectLabelAddedType struct") + f.write_str("a PaperDocEditType struct") } fn visit_map>(self, map: V) -> Result { - ObjectLabelAddedType::internal_deserialize(map) + PaperDocEditType::internal_deserialize(map) } } - deserializer.deserialize_struct("ObjectLabelAddedType", OBJECT_LABEL_ADDED_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("PaperDocEditType", PAPER_DOC_EDIT_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for ObjectLabelAddedType { +impl ::serde::ser::Serialize for PaperDocEditType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("ObjectLabelAddedType", 1)?; + let mut s = serializer.serialize_struct("PaperDocEditType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Removed a label. +/// Followed Paper doc. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct ObjectLabelRemovedDetails { - /// Labels mark a file or folder. - pub label_type: LabelType, +pub struct PaperDocFollowedDetails { + /// Event unique identifier. + pub event_uuid: String, } -impl ObjectLabelRemovedDetails { - pub fn new(label_type: LabelType) -> Self { - ObjectLabelRemovedDetails { - label_type, +impl PaperDocFollowedDetails { + pub fn new(event_uuid: String) -> Self { + PaperDocFollowedDetails { + event_uuid, } } } -const OBJECT_LABEL_REMOVED_DETAILS_FIELDS: &[&str] = &["label_type"]; -impl ObjectLabelRemovedDetails { +const PAPER_DOC_FOLLOWED_DETAILS_FIELDS: &[&str] = &["event_uuid"]; +impl PaperDocFollowedDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_label_type = None; + ) -> Result, V::Error> { + let mut field_event_uuid = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "label_type" => { - if field_label_type.is_some() { - return Err(::serde::de::Error::duplicate_field("label_type")); + "event_uuid" => { + if field_event_uuid.is_some() { + return Err(::serde::de::Error::duplicate_field("event_uuid")); } - field_label_type = Some(map.next_value()?); + field_event_uuid = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -68130,8 +89593,8 @@ impl ObjectLabelRemovedDetails { if optional && nothing { return Ok(None); } - let result = ObjectLabelRemovedDetails { - label_type: field_label_type.ok_or_else(|| ::serde::de::Error::missing_field("label_type"))?, + let result = PaperDocFollowedDetails { + event_uuid: field_event_uuid.ok_or_else(|| ::serde::de::Error::missing_field("event_uuid"))?, }; Ok(Some(result)) } @@ -68141,34 +89604,34 @@ impl ObjectLabelRemovedDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("label_type", &self.label_type)?; + s.serialize_field("event_uuid", &self.event_uuid)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for ObjectLabelRemovedDetails { +impl<'de> ::serde::de::Deserialize<'de> for PaperDocFollowedDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = ObjectLabelRemovedDetails; + type Value = PaperDocFollowedDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a ObjectLabelRemovedDetails struct") + f.write_str("a PaperDocFollowedDetails struct") } fn visit_map>(self, map: V) -> Result { - ObjectLabelRemovedDetails::internal_deserialize(map) + PaperDocFollowedDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("ObjectLabelRemovedDetails", OBJECT_LABEL_REMOVED_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("PaperDocFollowedDetails", PAPER_DOC_FOLLOWED_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for ObjectLabelRemovedDetails { +impl ::serde::ser::Serialize for PaperDocFollowedDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("ObjectLabelRemovedDetails", 1)?; + let mut s = serializer.serialize_struct("PaperDocFollowedDetails", 1)?; self.internal_serialize::(&mut s)?; s.end() } @@ -68176,30 +89639,30 @@ impl ::serde::ser::Serialize for ObjectLabelRemovedDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct ObjectLabelRemovedType { +pub struct PaperDocFollowedType { pub description: String, } -impl ObjectLabelRemovedType { +impl PaperDocFollowedType { pub fn new(description: String) -> Self { - ObjectLabelRemovedType { + PaperDocFollowedType { description, } } } -const OBJECT_LABEL_REMOVED_TYPE_FIELDS: &[&str] = &["description"]; -impl ObjectLabelRemovedType { +const PAPER_DOC_FOLLOWED_TYPE_FIELDS: &[&str] = &["description"]; +impl PaperDocFollowedType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -68220,7 +89683,7 @@ impl ObjectLabelRemovedType { if optional && nothing { return Ok(None); } - let result = ObjectLabelRemovedType { + let result = PaperDocFollowedType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -68236,72 +89699,72 @@ impl ObjectLabelRemovedType { } } -impl<'de> ::serde::de::Deserialize<'de> for ObjectLabelRemovedType { +impl<'de> ::serde::de::Deserialize<'de> for PaperDocFollowedType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = ObjectLabelRemovedType; + type Value = PaperDocFollowedType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a ObjectLabelRemovedType struct") + f.write_str("a PaperDocFollowedType struct") } fn visit_map>(self, map: V) -> Result { - ObjectLabelRemovedType::internal_deserialize(map) + PaperDocFollowedType::internal_deserialize(map) } } - deserializer.deserialize_struct("ObjectLabelRemovedType", OBJECT_LABEL_REMOVED_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("PaperDocFollowedType", PAPER_DOC_FOLLOWED_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for ObjectLabelRemovedType { +impl ::serde::ser::Serialize for PaperDocFollowedType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("ObjectLabelRemovedType", 1)?; + let mut s = serializer.serialize_struct("PaperDocFollowedType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Updated a label's value. +/// Mentioned user in Paper doc. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct ObjectLabelUpdatedValueDetails { - /// Labels mark a file or folder. - pub label_type: LabelType, +pub struct PaperDocMentionDetails { + /// Event unique identifier. + pub event_uuid: String, } -impl ObjectLabelUpdatedValueDetails { - pub fn new(label_type: LabelType) -> Self { - ObjectLabelUpdatedValueDetails { - label_type, +impl PaperDocMentionDetails { + pub fn new(event_uuid: String) -> Self { + PaperDocMentionDetails { + event_uuid, } } } -const OBJECT_LABEL_UPDATED_VALUE_DETAILS_FIELDS: &[&str] = &["label_type"]; -impl ObjectLabelUpdatedValueDetails { +const PAPER_DOC_MENTION_DETAILS_FIELDS: &[&str] = &["event_uuid"]; +impl PaperDocMentionDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_label_type = None; + ) -> Result, V::Error> { + let mut field_event_uuid = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "label_type" => { - if field_label_type.is_some() { - return Err(::serde::de::Error::duplicate_field("label_type")); + "event_uuid" => { + if field_event_uuid.is_some() { + return Err(::serde::de::Error::duplicate_field("event_uuid")); } - field_label_type = Some(map.next_value()?); + field_event_uuid = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -68312,8 +89775,8 @@ impl ObjectLabelUpdatedValueDetails { if optional && nothing { return Ok(None); } - let result = ObjectLabelUpdatedValueDetails { - label_type: field_label_type.ok_or_else(|| ::serde::de::Error::missing_field("label_type"))?, + let result = PaperDocMentionDetails { + event_uuid: field_event_uuid.ok_or_else(|| ::serde::de::Error::missing_field("event_uuid"))?, }; Ok(Some(result)) } @@ -68323,34 +89786,34 @@ impl ObjectLabelUpdatedValueDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("label_type", &self.label_type)?; + s.serialize_field("event_uuid", &self.event_uuid)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for ObjectLabelUpdatedValueDetails { +impl<'de> ::serde::de::Deserialize<'de> for PaperDocMentionDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = ObjectLabelUpdatedValueDetails; + type Value = PaperDocMentionDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a ObjectLabelUpdatedValueDetails struct") + f.write_str("a PaperDocMentionDetails struct") } fn visit_map>(self, map: V) -> Result { - ObjectLabelUpdatedValueDetails::internal_deserialize(map) + PaperDocMentionDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("ObjectLabelUpdatedValueDetails", OBJECT_LABEL_UPDATED_VALUE_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("PaperDocMentionDetails", PAPER_DOC_MENTION_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for ObjectLabelUpdatedValueDetails { +impl ::serde::ser::Serialize for PaperDocMentionDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("ObjectLabelUpdatedValueDetails", 1)?; + let mut s = serializer.serialize_struct("PaperDocMentionDetails", 1)?; self.internal_serialize::(&mut s)?; s.end() } @@ -68358,30 +89821,30 @@ impl ::serde::ser::Serialize for ObjectLabelUpdatedValueDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct ObjectLabelUpdatedValueType { +pub struct PaperDocMentionType { pub description: String, } -impl ObjectLabelUpdatedValueType { +impl PaperDocMentionType { pub fn new(description: String) -> Self { - ObjectLabelUpdatedValueType { + PaperDocMentionType { description, } } } -const OBJECT_LABEL_UPDATED_VALUE_TYPE_FIELDS: &[&str] = &["description"]; -impl ObjectLabelUpdatedValueType { +const PAPER_DOC_MENTION_TYPE_FIELDS: &[&str] = &["description"]; +impl PaperDocMentionType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -68402,8 +89865,132 @@ impl ObjectLabelUpdatedValueType { if optional && nothing { return Ok(None); } - let result = ObjectLabelUpdatedValueType { - description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + let result = PaperDocMentionType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("description", &self.description)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for PaperDocMentionType { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = PaperDocMentionType; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a PaperDocMentionType struct") + } + fn visit_map>(self, map: V) -> Result { + PaperDocMentionType::internal_deserialize(map) + } + } + deserializer.deserialize_struct("PaperDocMentionType", PAPER_DOC_MENTION_TYPE_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for PaperDocMentionType { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("PaperDocMentionType", 1)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +/// Transferred ownership of Paper doc. +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct PaperDocOwnershipChangedDetails { + /// Event unique identifier. + pub event_uuid: String, + /// New owner. + pub new_owner_user_id: crate::types::users_common::AccountId, + /// Previous owner. + pub old_owner_user_id: Option, +} + +impl PaperDocOwnershipChangedDetails { + pub fn new( + event_uuid: String, + new_owner_user_id: crate::types::users_common::AccountId, + ) -> Self { + PaperDocOwnershipChangedDetails { + event_uuid, + new_owner_user_id, + old_owner_user_id: None, + } + } + + pub fn with_old_owner_user_id(mut self, value: crate::types::users_common::AccountId) -> Self { + self.old_owner_user_id = Some(value); + self + } +} + +const PAPER_DOC_OWNERSHIP_CHANGED_DETAILS_FIELDS: &[&str] = &["event_uuid", + "new_owner_user_id", + "old_owner_user_id"]; +impl PaperDocOwnershipChangedDetails { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_event_uuid = None; + let mut field_new_owner_user_id = None; + let mut field_old_owner_user_id = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "event_uuid" => { + if field_event_uuid.is_some() { + return Err(::serde::de::Error::duplicate_field("event_uuid")); + } + field_event_uuid = Some(map.next_value()?); + } + "new_owner_user_id" => { + if field_new_owner_user_id.is_some() { + return Err(::serde::de::Error::duplicate_field("new_owner_user_id")); + } + field_new_owner_user_id = Some(map.next_value()?); + } + "old_owner_user_id" => { + if field_old_owner_user_id.is_some() { + return Err(::serde::de::Error::duplicate_field("old_owner_user_id")); + } + field_old_owner_user_id = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } + } + } + if optional && nothing { + return Ok(None); + } + let result = PaperDocOwnershipChangedDetails { + event_uuid: field_event_uuid.ok_or_else(|| ::serde::de::Error::missing_field("event_uuid"))?, + new_owner_user_id: field_new_owner_user_id.ok_or_else(|| ::serde::de::Error::missing_field("new_owner_user_id"))?, + old_owner_user_id: field_old_owner_user_id.and_then(Option::flatten), }; Ok(Some(result)) } @@ -68413,109 +90000,69 @@ impl ObjectLabelUpdatedValueType { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("description", &self.description)?; + s.serialize_field("event_uuid", &self.event_uuid)?; + s.serialize_field("new_owner_user_id", &self.new_owner_user_id)?; + if let Some(val) = &self.old_owner_user_id { + s.serialize_field("old_owner_user_id", val)?; + } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for ObjectLabelUpdatedValueType { +impl<'de> ::serde::de::Deserialize<'de> for PaperDocOwnershipChangedDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = ObjectLabelUpdatedValueType; + type Value = PaperDocOwnershipChangedDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a ObjectLabelUpdatedValueType struct") + f.write_str("a PaperDocOwnershipChangedDetails struct") } fn visit_map>(self, map: V) -> Result { - ObjectLabelUpdatedValueType::internal_deserialize(map) + PaperDocOwnershipChangedDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("ObjectLabelUpdatedValueType", OBJECT_LABEL_UPDATED_VALUE_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("PaperDocOwnershipChangedDetails", PAPER_DOC_OWNERSHIP_CHANGED_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for ObjectLabelUpdatedValueType { +impl ::serde::ser::Serialize for PaperDocOwnershipChangedDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("ObjectLabelUpdatedValueType", 1)?; + let mut s = serializer.serialize_struct("PaperDocOwnershipChangedDetails", 3)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Opened shared Paper doc. -#[derive(Debug, Clone, PartialEq, Eq, Default)] -#[non_exhaustive] // structs may have more fields added in the future. -pub struct OpenNoteSharedDetails { -} - -const OPEN_NOTE_SHARED_DETAILS_FIELDS: &[&str] = &[]; -impl OpenNoteSharedDetails { - // no _opt deserializer - pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( - mut map: V, - ) -> Result { - // ignore any fields found; none are presently recognized - crate::eat_json_fields(&mut map)?; - Ok(OpenNoteSharedDetails {}) - } -} - -impl<'de> ::serde::de::Deserialize<'de> for OpenNoteSharedDetails { - fn deserialize>(deserializer: D) -> Result { - // struct deserializer - use serde::de::{MapAccess, Visitor}; - struct StructVisitor; - impl<'de> Visitor<'de> for StructVisitor { - type Value = OpenNoteSharedDetails; - fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a OpenNoteSharedDetails struct") - } - fn visit_map>(self, map: V) -> Result { - OpenNoteSharedDetails::internal_deserialize(map) - } - } - deserializer.deserialize_struct("OpenNoteSharedDetails", OPEN_NOTE_SHARED_DETAILS_FIELDS, StructVisitor) - } -} - -impl ::serde::ser::Serialize for OpenNoteSharedDetails { - fn serialize(&self, serializer: S) -> Result { - // struct serializer - use serde::ser::SerializeStruct; - serializer.serialize_struct("OpenNoteSharedDetails", 0)?.end() - } -} - #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct OpenNoteSharedType { +pub struct PaperDocOwnershipChangedType { pub description: String, } -impl OpenNoteSharedType { +impl PaperDocOwnershipChangedType { pub fn new(description: String) -> Self { - OpenNoteSharedType { + PaperDocOwnershipChangedType { description, } } } -const OPEN_NOTE_SHARED_TYPE_FIELDS: &[&str] = &["description"]; -impl OpenNoteSharedType { +const PAPER_DOC_OWNERSHIP_CHANGED_TYPE_FIELDS: &[&str] = &["description"]; +impl PaperDocOwnershipChangedType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -68536,7 +90083,7 @@ impl OpenNoteSharedType { if optional && nothing { return Ok(None); } - let result = OpenNoteSharedType { + let result = PaperDocOwnershipChangedType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -68552,72 +90099,72 @@ impl OpenNoteSharedType { } } -impl<'de> ::serde::de::Deserialize<'de> for OpenNoteSharedType { +impl<'de> ::serde::de::Deserialize<'de> for PaperDocOwnershipChangedType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = OpenNoteSharedType; + type Value = PaperDocOwnershipChangedType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a OpenNoteSharedType struct") + f.write_str("a PaperDocOwnershipChangedType struct") } fn visit_map>(self, map: V) -> Result { - OpenNoteSharedType::internal_deserialize(map) + PaperDocOwnershipChangedType::internal_deserialize(map) } } - deserializer.deserialize_struct("OpenNoteSharedType", OPEN_NOTE_SHARED_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("PaperDocOwnershipChangedType", PAPER_DOC_OWNERSHIP_CHANGED_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for OpenNoteSharedType { +impl ::serde::ser::Serialize for PaperDocOwnershipChangedType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("OpenNoteSharedType", 1)?; + let mut s = serializer.serialize_struct("PaperDocOwnershipChangedType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// More details about the organization. +/// Requested access to Paper doc. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct OrganizationDetails { - /// The name of the organization. - pub organization: String, +pub struct PaperDocRequestAccessDetails { + /// Event unique identifier. + pub event_uuid: String, } -impl OrganizationDetails { - pub fn new(organization: String) -> Self { - OrganizationDetails { - organization, +impl PaperDocRequestAccessDetails { + pub fn new(event_uuid: String) -> Self { + PaperDocRequestAccessDetails { + event_uuid, } } } -const ORGANIZATION_DETAILS_FIELDS: &[&str] = &["organization"]; -impl OrganizationDetails { +const PAPER_DOC_REQUEST_ACCESS_DETAILS_FIELDS: &[&str] = &["event_uuid"]; +impl PaperDocRequestAccessDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_organization = None; + ) -> Result, V::Error> { + let mut field_event_uuid = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "organization" => { - if field_organization.is_some() { - return Err(::serde::de::Error::duplicate_field("organization")); + "event_uuid" => { + if field_event_uuid.is_some() { + return Err(::serde::de::Error::duplicate_field("event_uuid")); } - field_organization = Some(map.next_value()?); + field_event_uuid = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -68628,8 +90175,8 @@ impl OrganizationDetails { if optional && nothing { return Ok(None); } - let result = OrganizationDetails { - organization: field_organization.ok_or_else(|| ::serde::de::Error::missing_field("organization"))?, + let result = PaperDocRequestAccessDetails { + event_uuid: field_event_uuid.ok_or_else(|| ::serde::de::Error::missing_field("event_uuid"))?, }; Ok(Some(result)) } @@ -68639,77 +90186,75 @@ impl OrganizationDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("organization", &self.organization)?; + s.serialize_field("event_uuid", &self.event_uuid)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for OrganizationDetails { +impl<'de> ::serde::de::Deserialize<'de> for PaperDocRequestAccessDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = OrganizationDetails; + type Value = PaperDocRequestAccessDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a OrganizationDetails struct") + f.write_str("a PaperDocRequestAccessDetails struct") } fn visit_map>(self, map: V) -> Result { - OrganizationDetails::internal_deserialize(map) + PaperDocRequestAccessDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("OrganizationDetails", ORGANIZATION_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("PaperDocRequestAccessDetails", PAPER_DOC_REQUEST_ACCESS_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for OrganizationDetails { +impl ::serde::ser::Serialize for PaperDocRequestAccessDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("OrganizationDetails", 1)?; + let mut s = serializer.serialize_struct("PaperDocRequestAccessDetails", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// The name of the organization #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct OrganizationName { - /// The name of the organization. - pub organization: String, +pub struct PaperDocRequestAccessType { + pub description: String, } -impl OrganizationName { - pub fn new(organization: String) -> Self { - OrganizationName { - organization, +impl PaperDocRequestAccessType { + pub fn new(description: String) -> Self { + PaperDocRequestAccessType { + description, } } } -const ORGANIZATION_NAME_FIELDS: &[&str] = &["organization"]; -impl OrganizationName { +const PAPER_DOC_REQUEST_ACCESS_TYPE_FIELDS: &[&str] = &["description"]; +impl PaperDocRequestAccessType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_organization = None; + ) -> Result, V::Error> { + let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "organization" => { - if field_organization.is_some() { - return Err(::serde::de::Error::duplicate_field("organization")); + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); } - field_organization = Some(map.next_value()?); + field_description = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -68720,8 +90265,8 @@ impl OrganizationName { if optional && nothing { return Ok(None); } - let result = OrganizationName { - organization: field_organization.ok_or_else(|| ::serde::de::Error::missing_field("organization"))?, + let result = PaperDocRequestAccessType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) } @@ -68731,119 +90276,93 @@ impl OrganizationName { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("organization", &self.organization)?; + s.serialize_field("description", &self.description)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for OrganizationName { +impl<'de> ::serde::de::Deserialize<'de> for PaperDocRequestAccessType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = OrganizationName; + type Value = PaperDocRequestAccessType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a OrganizationName struct") + f.write_str("a PaperDocRequestAccessType struct") } fn visit_map>(self, map: V) -> Result { - OrganizationName::internal_deserialize(map) + PaperDocRequestAccessType::internal_deserialize(map) } } - deserializer.deserialize_struct("OrganizationName", ORGANIZATION_NAME_FIELDS, StructVisitor) + deserializer.deserialize_struct("PaperDocRequestAccessType", PAPER_DOC_REQUEST_ACCESS_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for OrganizationName { +impl ::serde::ser::Serialize for PaperDocRequestAccessType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("OrganizationName", 1)?; + let mut s = serializer.serialize_struct("PaperDocRequestAccessType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Organized a folder with multi-file organize. -#[derive(Debug, Clone, PartialEq, Eq, Default)] +/// Resolved Paper doc comment. +#[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct OrganizeFolderWithTidyDetails { -} - -const ORGANIZE_FOLDER_WITH_TIDY_DETAILS_FIELDS: &[&str] = &[]; -impl OrganizeFolderWithTidyDetails { - // no _opt deserializer - pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( - mut map: V, - ) -> Result { - // ignore any fields found; none are presently recognized - crate::eat_json_fields(&mut map)?; - Ok(OrganizeFolderWithTidyDetails {}) - } +pub struct PaperDocResolveCommentDetails { + /// Event unique identifier. + pub event_uuid: String, + /// Comment text. + pub comment_text: Option, } -impl<'de> ::serde::de::Deserialize<'de> for OrganizeFolderWithTidyDetails { - fn deserialize>(deserializer: D) -> Result { - // struct deserializer - use serde::de::{MapAccess, Visitor}; - struct StructVisitor; - impl<'de> Visitor<'de> for StructVisitor { - type Value = OrganizeFolderWithTidyDetails; - fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a OrganizeFolderWithTidyDetails struct") - } - fn visit_map>(self, map: V) -> Result { - OrganizeFolderWithTidyDetails::internal_deserialize(map) - } +impl PaperDocResolveCommentDetails { + pub fn new(event_uuid: String) -> Self { + PaperDocResolveCommentDetails { + event_uuid, + comment_text: None, } - deserializer.deserialize_struct("OrganizeFolderWithTidyDetails", ORGANIZE_FOLDER_WITH_TIDY_DETAILS_FIELDS, StructVisitor) - } -} - -impl ::serde::ser::Serialize for OrganizeFolderWithTidyDetails { - fn serialize(&self, serializer: S) -> Result { - // struct serializer - use serde::ser::SerializeStruct; - serializer.serialize_struct("OrganizeFolderWithTidyDetails", 0)?.end() } -} - -#[derive(Debug, Clone, PartialEq, Eq)] -#[non_exhaustive] // structs may have more fields added in the future. -pub struct OrganizeFolderWithTidyType { - pub description: String, -} -impl OrganizeFolderWithTidyType { - pub fn new(description: String) -> Self { - OrganizeFolderWithTidyType { - description, - } + pub fn with_comment_text(mut self, value: String) -> Self { + self.comment_text = Some(value); + self } } -const ORGANIZE_FOLDER_WITH_TIDY_TYPE_FIELDS: &[&str] = &["description"]; -impl OrganizeFolderWithTidyType { +const PAPER_DOC_RESOLVE_COMMENT_DETAILS_FIELDS: &[&str] = &["event_uuid", + "comment_text"]; +impl PaperDocResolveCommentDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_description = None; + ) -> Result, V::Error> { + let mut field_event_uuid = None; + let mut field_comment_text = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "description" => { - if field_description.is_some() { - return Err(::serde::de::Error::duplicate_field("description")); + "event_uuid" => { + if field_event_uuid.is_some() { + return Err(::serde::de::Error::duplicate_field("event_uuid")); } - field_description = Some(map.next_value()?); + field_event_uuid = Some(map.next_value()?); + } + "comment_text" => { + if field_comment_text.is_some() { + return Err(::serde::de::Error::duplicate_field("comment_text")); + } + field_comment_text = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -68854,8 +90373,9 @@ impl OrganizeFolderWithTidyType { if optional && nothing { return Ok(None); } - let result = OrganizeFolderWithTidyType { - description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + let result = PaperDocResolveCommentDetails { + event_uuid: field_event_uuid.ok_or_else(|| ::serde::de::Error::missing_field("event_uuid"))?, + comment_text: field_comment_text.and_then(Option::flatten), }; Ok(Some(result)) } @@ -68865,93 +90385,78 @@ impl OrganizeFolderWithTidyType { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("description", &self.description)?; + s.serialize_field("event_uuid", &self.event_uuid)?; + if let Some(val) = &self.comment_text { + s.serialize_field("comment_text", val)?; + } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for OrganizeFolderWithTidyType { +impl<'de> ::serde::de::Deserialize<'de> for PaperDocResolveCommentDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = OrganizeFolderWithTidyType; + type Value = PaperDocResolveCommentDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a OrganizeFolderWithTidyType struct") + f.write_str("a PaperDocResolveCommentDetails struct") } fn visit_map>(self, map: V) -> Result { - OrganizeFolderWithTidyType::internal_deserialize(map) + PaperDocResolveCommentDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("OrganizeFolderWithTidyType", ORGANIZE_FOLDER_WITH_TIDY_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("PaperDocResolveCommentDetails", PAPER_DOC_RESOLVE_COMMENT_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for OrganizeFolderWithTidyType { +impl ::serde::ser::Serialize for PaperDocResolveCommentDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("OrganizeFolderWithTidyType", 1)?; + let mut s = serializer.serialize_struct("PaperDocResolveCommentDetails", 2)?; self.internal_serialize::(&mut s)?; s.end() } } -/// The origin from which the actor performed the action. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct OriginLogInfo { - /// The method that was used to perform the action. - pub access_method: AccessMethodLogInfo, - /// Geographic location details. - pub geo_location: Option, +pub struct PaperDocResolveCommentType { + pub description: String, } -impl OriginLogInfo { - pub fn new(access_method: AccessMethodLogInfo) -> Self { - OriginLogInfo { - access_method, - geo_location: None, +impl PaperDocResolveCommentType { + pub fn new(description: String) -> Self { + PaperDocResolveCommentType { + description, } } - - pub fn with_geo_location(mut self, value: GeoLocationLogInfo) -> Self { - self.geo_location = Some(value); - self - } } -const ORIGIN_LOG_INFO_FIELDS: &[&str] = &["access_method", - "geo_location"]; -impl OriginLogInfo { +const PAPER_DOC_RESOLVE_COMMENT_TYPE_FIELDS: &[&str] = &["description"]; +impl PaperDocResolveCommentType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_access_method = None; - let mut field_geo_location = None; + ) -> Result, V::Error> { + let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "access_method" => { - if field_access_method.is_some() { - return Err(::serde::de::Error::duplicate_field("access_method")); - } - field_access_method = Some(map.next_value()?); - } - "geo_location" => { - if field_geo_location.is_some() { - return Err(::serde::de::Error::duplicate_field("geo_location")); + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); } - field_geo_location = Some(map.next_value()?); + field_description = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -68962,9 +90467,8 @@ impl OriginLogInfo { if optional && nothing { return Ok(None); } - let result = OriginLogInfo { - access_method: field_access_method.ok_or_else(|| ::serde::de::Error::missing_field("access_method"))?, - geo_location: field_geo_location.and_then(Option::flatten), + let result = PaperDocResolveCommentType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) } @@ -68974,94 +90478,77 @@ impl OriginLogInfo { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("access_method", &self.access_method)?; - if let Some(val) = &self.geo_location { - s.serialize_field("geo_location", val)?; - } + s.serialize_field("description", &self.description)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for OriginLogInfo { +impl<'de> ::serde::de::Deserialize<'de> for PaperDocResolveCommentType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = OriginLogInfo; + type Value = PaperDocResolveCommentType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a OriginLogInfo struct") + f.write_str("a PaperDocResolveCommentType struct") } fn visit_map>(self, map: V) -> Result { - OriginLogInfo::internal_deserialize(map) + PaperDocResolveCommentType::internal_deserialize(map) } } - deserializer.deserialize_struct("OriginLogInfo", ORIGIN_LOG_INFO_FIELDS, StructVisitor) + deserializer.deserialize_struct("PaperDocResolveCommentType", PAPER_DOC_RESOLVE_COMMENT_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for OriginLogInfo { +impl ::serde::ser::Serialize for PaperDocResolveCommentType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("OriginLogInfo", 2)?; + let mut s = serializer.serialize_struct("PaperDocResolveCommentType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Report created: Views of old links. +/// Restored Paper doc to previous version. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct OutdatedLinkViewCreateReportDetails { - /// Report start date. - pub start_date: crate::types::common::DropboxTimestamp, - /// Report end date. - pub end_date: crate::types::common::DropboxTimestamp, +pub struct PaperDocRevertDetails { + /// Event unique identifier. + pub event_uuid: String, } -impl OutdatedLinkViewCreateReportDetails { - pub fn new( - start_date: crate::types::common::DropboxTimestamp, - end_date: crate::types::common::DropboxTimestamp, - ) -> Self { - OutdatedLinkViewCreateReportDetails { - start_date, - end_date, +impl PaperDocRevertDetails { + pub fn new(event_uuid: String) -> Self { + PaperDocRevertDetails { + event_uuid, } } } -const OUTDATED_LINK_VIEW_CREATE_REPORT_DETAILS_FIELDS: &[&str] = &["start_date", - "end_date"]; -impl OutdatedLinkViewCreateReportDetails { +const PAPER_DOC_REVERT_DETAILS_FIELDS: &[&str] = &["event_uuid"]; +impl PaperDocRevertDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_start_date = None; - let mut field_end_date = None; + ) -> Result, V::Error> { + let mut field_event_uuid = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "start_date" => { - if field_start_date.is_some() { - return Err(::serde::de::Error::duplicate_field("start_date")); - } - field_start_date = Some(map.next_value()?); - } - "end_date" => { - if field_end_date.is_some() { - return Err(::serde::de::Error::duplicate_field("end_date")); + "event_uuid" => { + if field_event_uuid.is_some() { + return Err(::serde::de::Error::duplicate_field("event_uuid")); } - field_end_date = Some(map.next_value()?); + field_event_uuid = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -69072,9 +90559,8 @@ impl OutdatedLinkViewCreateReportDetails { if optional && nothing { return Ok(None); } - let result = OutdatedLinkViewCreateReportDetails { - start_date: field_start_date.ok_or_else(|| ::serde::de::Error::missing_field("start_date"))?, - end_date: field_end_date.ok_or_else(|| ::serde::de::Error::missing_field("end_date"))?, + let result = PaperDocRevertDetails { + event_uuid: field_event_uuid.ok_or_else(|| ::serde::de::Error::missing_field("event_uuid"))?, }; Ok(Some(result)) } @@ -69084,35 +90570,34 @@ impl OutdatedLinkViewCreateReportDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("start_date", &self.start_date)?; - s.serialize_field("end_date", &self.end_date)?; + s.serialize_field("event_uuid", &self.event_uuid)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for OutdatedLinkViewCreateReportDetails { +impl<'de> ::serde::de::Deserialize<'de> for PaperDocRevertDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = OutdatedLinkViewCreateReportDetails; + type Value = PaperDocRevertDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a OutdatedLinkViewCreateReportDetails struct") + f.write_str("a PaperDocRevertDetails struct") } fn visit_map>(self, map: V) -> Result { - OutdatedLinkViewCreateReportDetails::internal_deserialize(map) + PaperDocRevertDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("OutdatedLinkViewCreateReportDetails", OUTDATED_LINK_VIEW_CREATE_REPORT_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("PaperDocRevertDetails", PAPER_DOC_REVERT_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for OutdatedLinkViewCreateReportDetails { +impl ::serde::ser::Serialize for PaperDocRevertDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("OutdatedLinkViewCreateReportDetails", 2)?; + let mut s = serializer.serialize_struct("PaperDocRevertDetails", 1)?; self.internal_serialize::(&mut s)?; s.end() } @@ -69120,30 +90605,30 @@ impl ::serde::ser::Serialize for OutdatedLinkViewCreateReportDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct OutdatedLinkViewCreateReportType { +pub struct PaperDocRevertType { pub description: String, } -impl OutdatedLinkViewCreateReportType { +impl PaperDocRevertType { pub fn new(description: String) -> Self { - OutdatedLinkViewCreateReportType { + PaperDocRevertType { description, } } } -const OUTDATED_LINK_VIEW_CREATE_REPORT_TYPE_FIELDS: &[&str] = &["description"]; -impl OutdatedLinkViewCreateReportType { +const PAPER_DOC_REVERT_TYPE_FIELDS: &[&str] = &["description"]; +impl PaperDocRevertType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -69164,7 +90649,7 @@ impl OutdatedLinkViewCreateReportType { if optional && nothing { return Ok(None); } - let result = OutdatedLinkViewCreateReportType { + let result = PaperDocRevertType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -69180,72 +90665,72 @@ impl OutdatedLinkViewCreateReportType { } } -impl<'de> ::serde::de::Deserialize<'de> for OutdatedLinkViewCreateReportType { +impl<'de> ::serde::de::Deserialize<'de> for PaperDocRevertType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = OutdatedLinkViewCreateReportType; + type Value = PaperDocRevertType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a OutdatedLinkViewCreateReportType struct") + f.write_str("a PaperDocRevertType struct") } fn visit_map>(self, map: V) -> Result { - OutdatedLinkViewCreateReportType::internal_deserialize(map) + PaperDocRevertType::internal_deserialize(map) } } - deserializer.deserialize_struct("OutdatedLinkViewCreateReportType", OUTDATED_LINK_VIEW_CREATE_REPORT_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("PaperDocRevertType", PAPER_DOC_REVERT_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for OutdatedLinkViewCreateReportType { +impl ::serde::ser::Serialize for PaperDocRevertType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("OutdatedLinkViewCreateReportType", 1)?; + let mut s = serializer.serialize_struct("PaperDocRevertType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Couldn't create report: Views of old links. +/// Shared Paper doc via Slack. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct OutdatedLinkViewReportFailedDetails { - /// Failure reason. - pub failure_reason: crate::types::team::TeamReportFailureReason, +pub struct PaperDocSlackShareDetails { + /// Event unique identifier. + pub event_uuid: String, } -impl OutdatedLinkViewReportFailedDetails { - pub fn new(failure_reason: crate::types::team::TeamReportFailureReason) -> Self { - OutdatedLinkViewReportFailedDetails { - failure_reason, +impl PaperDocSlackShareDetails { + pub fn new(event_uuid: String) -> Self { + PaperDocSlackShareDetails { + event_uuid, } } } - -const OUTDATED_LINK_VIEW_REPORT_FAILED_DETAILS_FIELDS: &[&str] = &["failure_reason"]; -impl OutdatedLinkViewReportFailedDetails { + +const PAPER_DOC_SLACK_SHARE_DETAILS_FIELDS: &[&str] = &["event_uuid"]; +impl PaperDocSlackShareDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_failure_reason = None; + ) -> Result, V::Error> { + let mut field_event_uuid = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "failure_reason" => { - if field_failure_reason.is_some() { - return Err(::serde::de::Error::duplicate_field("failure_reason")); + "event_uuid" => { + if field_event_uuid.is_some() { + return Err(::serde::de::Error::duplicate_field("event_uuid")); } - field_failure_reason = Some(map.next_value()?); + field_event_uuid = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -69256,8 +90741,8 @@ impl OutdatedLinkViewReportFailedDetails { if optional && nothing { return Ok(None); } - let result = OutdatedLinkViewReportFailedDetails { - failure_reason: field_failure_reason.ok_or_else(|| ::serde::de::Error::missing_field("failure_reason"))?, + let result = PaperDocSlackShareDetails { + event_uuid: field_event_uuid.ok_or_else(|| ::serde::de::Error::missing_field("event_uuid"))?, }; Ok(Some(result)) } @@ -69267,34 +90752,34 @@ impl OutdatedLinkViewReportFailedDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("failure_reason", &self.failure_reason)?; + s.serialize_field("event_uuid", &self.event_uuid)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for OutdatedLinkViewReportFailedDetails { +impl<'de> ::serde::de::Deserialize<'de> for PaperDocSlackShareDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = OutdatedLinkViewReportFailedDetails; + type Value = PaperDocSlackShareDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a OutdatedLinkViewReportFailedDetails struct") + f.write_str("a PaperDocSlackShareDetails struct") } fn visit_map>(self, map: V) -> Result { - OutdatedLinkViewReportFailedDetails::internal_deserialize(map) + PaperDocSlackShareDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("OutdatedLinkViewReportFailedDetails", OUTDATED_LINK_VIEW_REPORT_FAILED_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("PaperDocSlackShareDetails", PAPER_DOC_SLACK_SHARE_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for OutdatedLinkViewReportFailedDetails { +impl ::serde::ser::Serialize for PaperDocSlackShareDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("OutdatedLinkViewReportFailedDetails", 1)?; + let mut s = serializer.serialize_struct("PaperDocSlackShareDetails", 1)?; self.internal_serialize::(&mut s)?; s.end() } @@ -69302,30 +90787,30 @@ impl ::serde::ser::Serialize for OutdatedLinkViewReportFailedDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct OutdatedLinkViewReportFailedType { +pub struct PaperDocSlackShareType { pub description: String, } -impl OutdatedLinkViewReportFailedType { +impl PaperDocSlackShareType { pub fn new(description: String) -> Self { - OutdatedLinkViewReportFailedType { + PaperDocSlackShareType { description, } } } -const OUTDATED_LINK_VIEW_REPORT_FAILED_TYPE_FIELDS: &[&str] = &["description"]; -impl OutdatedLinkViewReportFailedType { +const PAPER_DOC_SLACK_SHARE_TYPE_FIELDS: &[&str] = &["description"]; +impl PaperDocSlackShareType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -69346,7 +90831,7 @@ impl OutdatedLinkViewReportFailedType { if optional && nothing { return Ok(None); } - let result = OutdatedLinkViewReportFailedType { + let result = PaperDocSlackShareType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -69362,176 +90847,152 @@ impl OutdatedLinkViewReportFailedType { } } -impl<'de> ::serde::de::Deserialize<'de> for OutdatedLinkViewReportFailedType { +impl<'de> ::serde::de::Deserialize<'de> for PaperDocSlackShareType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = OutdatedLinkViewReportFailedType; + type Value = PaperDocSlackShareType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a OutdatedLinkViewReportFailedType struct") + f.write_str("a PaperDocSlackShareType struct") } fn visit_map>(self, map: V) -> Result { - OutdatedLinkViewReportFailedType::internal_deserialize(map) + PaperDocSlackShareType::internal_deserialize(map) } } - deserializer.deserialize_struct("OutdatedLinkViewReportFailedType", OUTDATED_LINK_VIEW_REPORT_FAILED_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("PaperDocSlackShareType", PAPER_DOC_SLACK_SHARE_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for OutdatedLinkViewReportFailedType { +impl ::serde::ser::Serialize for PaperDocSlackShareType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("OutdatedLinkViewReportFailedType", 1)?; + let mut s = serializer.serialize_struct("PaperDocSlackShareType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } +/// Shared Paper doc with users and/or groups. #[derive(Debug, Clone, PartialEq, Eq)] -#[non_exhaustive] // variants may be added in the future -pub enum PaperAccessType { - Commenter, - Editor, - Viewer, - /// Catch-all used for unrecognized values returned from the server. Encountering this value - /// typically indicates that this SDK version is out of date. - Other, +#[non_exhaustive] // structs may have more fields added in the future. +pub struct PaperDocTeamInviteDetails { + /// Event unique identifier. + pub event_uuid: String, } -impl<'de> ::serde::de::Deserialize<'de> for PaperAccessType { - fn deserialize>(deserializer: D) -> Result { - // union deserializer - use serde::de::{self, MapAccess, Visitor}; - struct EnumVisitor; - impl<'de> Visitor<'de> for EnumVisitor { - type Value = PaperAccessType; - fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a PaperAccessType structure") - } - fn visit_map>(self, mut map: V) -> Result { - let tag: &str = match map.next_key()? { - Some(".tag") => map.next_value()?, - _ => return Err(de::Error::missing_field(".tag")) - }; - let value = match tag { - "commenter" => PaperAccessType::Commenter, - "editor" => PaperAccessType::Editor, - "viewer" => PaperAccessType::Viewer, - _ => PaperAccessType::Other, - }; - crate::eat_json_fields(&mut map)?; - Ok(value) - } +impl PaperDocTeamInviteDetails { + pub fn new(event_uuid: String) -> Self { + PaperDocTeamInviteDetails { + event_uuid, } - const VARIANTS: &[&str] = &["commenter", - "editor", - "viewer", - "other"]; - deserializer.deserialize_struct("PaperAccessType", VARIANTS, EnumVisitor) } } -impl ::serde::ser::Serialize for PaperAccessType { - fn serialize(&self, serializer: S) -> Result { - // union serializer - use serde::ser::SerializeStruct; - match self { - PaperAccessType::Commenter => { - // unit - let mut s = serializer.serialize_struct("PaperAccessType", 1)?; - s.serialize_field(".tag", "commenter")?; - s.end() - } - PaperAccessType::Editor => { - // unit - let mut s = serializer.serialize_struct("PaperAccessType", 1)?; - s.serialize_field(".tag", "editor")?; - s.end() - } - PaperAccessType::Viewer => { - // unit - let mut s = serializer.serialize_struct("PaperAccessType", 1)?; - s.serialize_field(".tag", "viewer")?; - s.end() +const PAPER_DOC_TEAM_INVITE_DETAILS_FIELDS: &[&str] = &["event_uuid"]; +impl PaperDocTeamInviteDetails { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_event_uuid = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "event_uuid" => { + if field_event_uuid.is_some() { + return Err(::serde::de::Error::duplicate_field("event_uuid")); + } + field_event_uuid = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } } - PaperAccessType::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) } + if optional && nothing { + return Ok(None); + } + let result = PaperDocTeamInviteDetails { + event_uuid: field_event_uuid.ok_or_else(|| ::serde::de::Error::missing_field("event_uuid"))?, + }; + Ok(Some(result)) } -} - -/// Exported all team Paper docs. -#[derive(Debug, Clone, PartialEq, Eq, Default)] -#[non_exhaustive] // structs may have more fields added in the future. -pub struct PaperAdminExportStartDetails { -} -const PAPER_ADMIN_EXPORT_START_DETAILS_FIELDS: &[&str] = &[]; -impl PaperAdminExportStartDetails { - // no _opt deserializer - pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( - mut map: V, - ) -> Result { - // ignore any fields found; none are presently recognized - crate::eat_json_fields(&mut map)?; - Ok(PaperAdminExportStartDetails {}) + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("event_uuid", &self.event_uuid)?; + Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for PaperAdminExportStartDetails { +impl<'de> ::serde::de::Deserialize<'de> for PaperDocTeamInviteDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = PaperAdminExportStartDetails; + type Value = PaperDocTeamInviteDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a PaperAdminExportStartDetails struct") + f.write_str("a PaperDocTeamInviteDetails struct") } fn visit_map>(self, map: V) -> Result { - PaperAdminExportStartDetails::internal_deserialize(map) + PaperDocTeamInviteDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("PaperAdminExportStartDetails", PAPER_ADMIN_EXPORT_START_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("PaperDocTeamInviteDetails", PAPER_DOC_TEAM_INVITE_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for PaperAdminExportStartDetails { +impl ::serde::ser::Serialize for PaperDocTeamInviteDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - serializer.serialize_struct("PaperAdminExportStartDetails", 0)?.end() + let mut s = serializer.serialize_struct("PaperDocTeamInviteDetails", 1)?; + self.internal_serialize::(&mut s)?; + s.end() } } #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct PaperAdminExportStartType { +pub struct PaperDocTeamInviteType { pub description: String, } -impl PaperAdminExportStartType { +impl PaperDocTeamInviteType { pub fn new(description: String) -> Self { - PaperAdminExportStartType { + PaperDocTeamInviteType { description, } } } -const PAPER_ADMIN_EXPORT_START_TYPE_FIELDS: &[&str] = &["description"]; -impl PaperAdminExportStartType { +const PAPER_DOC_TEAM_INVITE_TYPE_FIELDS: &[&str] = &["description"]; +impl PaperDocTeamInviteType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -69552,7 +91013,7 @@ impl PaperAdminExportStartType { if optional && nothing { return Ok(None); } - let result = PaperAdminExportStartType { + let result = PaperDocTeamInviteType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -69568,91 +91029,72 @@ impl PaperAdminExportStartType { } } -impl<'de> ::serde::de::Deserialize<'de> for PaperAdminExportStartType { +impl<'de> ::serde::de::Deserialize<'de> for PaperDocTeamInviteType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = PaperAdminExportStartType; + type Value = PaperDocTeamInviteType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a PaperAdminExportStartType struct") + f.write_str("a PaperDocTeamInviteType struct") } fn visit_map>(self, map: V) -> Result { - PaperAdminExportStartType::internal_deserialize(map) + PaperDocTeamInviteType::internal_deserialize(map) } } - deserializer.deserialize_struct("PaperAdminExportStartType", PAPER_ADMIN_EXPORT_START_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("PaperDocTeamInviteType", PAPER_DOC_TEAM_INVITE_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for PaperAdminExportStartType { +impl ::serde::ser::Serialize for PaperDocTeamInviteType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("PaperAdminExportStartType", 1)?; + let mut s = serializer.serialize_struct("PaperDocTeamInviteType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Changed whether Dropbox Paper, when enabled, is deployed to all members or to specific members. +/// Deleted Paper doc. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct PaperChangeDeploymentPolicyDetails { - /// New Dropbox Paper deployment policy. - pub new_value: crate::types::team_policies::PaperDeploymentPolicy, - /// Previous Dropbox Paper deployment policy. Might be missing due to historical data gap. - pub previous_value: Option, +pub struct PaperDocTrashedDetails { + /// Event unique identifier. + pub event_uuid: String, } -impl PaperChangeDeploymentPolicyDetails { - pub fn new(new_value: crate::types::team_policies::PaperDeploymentPolicy) -> Self { - PaperChangeDeploymentPolicyDetails { - new_value, - previous_value: None, +impl PaperDocTrashedDetails { + pub fn new(event_uuid: String) -> Self { + PaperDocTrashedDetails { + event_uuid, } } - - pub fn with_previous_value( - mut self, - value: crate::types::team_policies::PaperDeploymentPolicy, - ) -> Self { - self.previous_value = Some(value); - self - } } -const PAPER_CHANGE_DEPLOYMENT_POLICY_DETAILS_FIELDS: &[&str] = &["new_value", - "previous_value"]; -impl PaperChangeDeploymentPolicyDetails { +const PAPER_DOC_TRASHED_DETAILS_FIELDS: &[&str] = &["event_uuid"]; +impl PaperDocTrashedDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_new_value = None; - let mut field_previous_value = None; + ) -> Result, V::Error> { + let mut field_event_uuid = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "new_value" => { - if field_new_value.is_some() { - return Err(::serde::de::Error::duplicate_field("new_value")); - } - field_new_value = Some(map.next_value()?); - } - "previous_value" => { - if field_previous_value.is_some() { - return Err(::serde::de::Error::duplicate_field("previous_value")); + "event_uuid" => { + if field_event_uuid.is_some() { + return Err(::serde::de::Error::duplicate_field("event_uuid")); } - field_previous_value = Some(map.next_value()?); + field_event_uuid = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -69663,9 +91105,8 @@ impl PaperChangeDeploymentPolicyDetails { if optional && nothing { return Ok(None); } - let result = PaperChangeDeploymentPolicyDetails { - new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, - previous_value: field_previous_value.and_then(Option::flatten), + let result = PaperDocTrashedDetails { + event_uuid: field_event_uuid.ok_or_else(|| ::serde::de::Error::missing_field("event_uuid"))?, }; Ok(Some(result)) } @@ -69675,37 +91116,34 @@ impl PaperChangeDeploymentPolicyDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("new_value", &self.new_value)?; - if let Some(val) = &self.previous_value { - s.serialize_field("previous_value", val)?; - } + s.serialize_field("event_uuid", &self.event_uuid)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for PaperChangeDeploymentPolicyDetails { +impl<'de> ::serde::de::Deserialize<'de> for PaperDocTrashedDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = PaperChangeDeploymentPolicyDetails; + type Value = PaperDocTrashedDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a PaperChangeDeploymentPolicyDetails struct") + f.write_str("a PaperDocTrashedDetails struct") } fn visit_map>(self, map: V) -> Result { - PaperChangeDeploymentPolicyDetails::internal_deserialize(map) + PaperDocTrashedDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("PaperChangeDeploymentPolicyDetails", PAPER_CHANGE_DEPLOYMENT_POLICY_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("PaperDocTrashedDetails", PAPER_DOC_TRASHED_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for PaperChangeDeploymentPolicyDetails { +impl ::serde::ser::Serialize for PaperDocTrashedDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("PaperChangeDeploymentPolicyDetails", 2)?; + let mut s = serializer.serialize_struct("PaperDocTrashedDetails", 1)?; self.internal_serialize::(&mut s)?; s.end() } @@ -69713,30 +91151,30 @@ impl ::serde::ser::Serialize for PaperChangeDeploymentPolicyDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct PaperChangeDeploymentPolicyType { +pub struct PaperDocTrashedType { pub description: String, } -impl PaperChangeDeploymentPolicyType { +impl PaperDocTrashedType { pub fn new(description: String) -> Self { - PaperChangeDeploymentPolicyType { + PaperDocTrashedType { description, } } } -const PAPER_CHANGE_DEPLOYMENT_POLICY_TYPE_FIELDS: &[&str] = &["description"]; -impl PaperChangeDeploymentPolicyType { +const PAPER_DOC_TRASHED_TYPE_FIELDS: &[&str] = &["description"]; +impl PaperDocTrashedType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -69757,7 +91195,7 @@ impl PaperChangeDeploymentPolicyType { if optional && nothing { return Ok(None); } - let result = PaperChangeDeploymentPolicyType { + let result = PaperDocTrashedType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -69773,72 +91211,88 @@ impl PaperChangeDeploymentPolicyType { } } -impl<'de> ::serde::de::Deserialize<'de> for PaperChangeDeploymentPolicyType { +impl<'de> ::serde::de::Deserialize<'de> for PaperDocTrashedType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = PaperChangeDeploymentPolicyType; + type Value = PaperDocTrashedType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a PaperChangeDeploymentPolicyType struct") + f.write_str("a PaperDocTrashedType struct") } fn visit_map>(self, map: V) -> Result { - PaperChangeDeploymentPolicyType::internal_deserialize(map) + PaperDocTrashedType::internal_deserialize(map) } } - deserializer.deserialize_struct("PaperChangeDeploymentPolicyType", PAPER_CHANGE_DEPLOYMENT_POLICY_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("PaperDocTrashedType", PAPER_DOC_TRASHED_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for PaperChangeDeploymentPolicyType { +impl ::serde::ser::Serialize for PaperDocTrashedType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("PaperChangeDeploymentPolicyType", 1)?; + let mut s = serializer.serialize_struct("PaperDocTrashedType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Changed whether non-members can view Paper docs with link. +/// Unresolved Paper doc comment. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct PaperChangeMemberLinkPolicyDetails { - /// New paper external link accessibility policy. - pub new_value: PaperMemberPolicy, +pub struct PaperDocUnresolveCommentDetails { + /// Event unique identifier. + pub event_uuid: String, + /// Comment text. + pub comment_text: Option, } -impl PaperChangeMemberLinkPolicyDetails { - pub fn new(new_value: PaperMemberPolicy) -> Self { - PaperChangeMemberLinkPolicyDetails { - new_value, +impl PaperDocUnresolveCommentDetails { + pub fn new(event_uuid: String) -> Self { + PaperDocUnresolveCommentDetails { + event_uuid, + comment_text: None, } } + + pub fn with_comment_text(mut self, value: String) -> Self { + self.comment_text = Some(value); + self + } } -const PAPER_CHANGE_MEMBER_LINK_POLICY_DETAILS_FIELDS: &[&str] = &["new_value"]; -impl PaperChangeMemberLinkPolicyDetails { +const PAPER_DOC_UNRESOLVE_COMMENT_DETAILS_FIELDS: &[&str] = &["event_uuid", + "comment_text"]; +impl PaperDocUnresolveCommentDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_new_value = None; + ) -> Result, V::Error> { + let mut field_event_uuid = None; + let mut field_comment_text = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "new_value" => { - if field_new_value.is_some() { - return Err(::serde::de::Error::duplicate_field("new_value")); + "event_uuid" => { + if field_event_uuid.is_some() { + return Err(::serde::de::Error::duplicate_field("event_uuid")); } - field_new_value = Some(map.next_value()?); + field_event_uuid = Some(map.next_value()?); + } + "comment_text" => { + if field_comment_text.is_some() { + return Err(::serde::de::Error::duplicate_field("comment_text")); + } + field_comment_text = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -69849,8 +91303,9 @@ impl PaperChangeMemberLinkPolicyDetails { if optional && nothing { return Ok(None); } - let result = PaperChangeMemberLinkPolicyDetails { - new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, + let result = PaperDocUnresolveCommentDetails { + event_uuid: field_event_uuid.ok_or_else(|| ::serde::de::Error::missing_field("event_uuid"))?, + comment_text: field_comment_text.and_then(Option::flatten), }; Ok(Some(result)) } @@ -69860,34 +91315,37 @@ impl PaperChangeMemberLinkPolicyDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("new_value", &self.new_value)?; + s.serialize_field("event_uuid", &self.event_uuid)?; + if let Some(val) = &self.comment_text { + s.serialize_field("comment_text", val)?; + } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for PaperChangeMemberLinkPolicyDetails { +impl<'de> ::serde::de::Deserialize<'de> for PaperDocUnresolveCommentDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = PaperChangeMemberLinkPolicyDetails; + type Value = PaperDocUnresolveCommentDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a PaperChangeMemberLinkPolicyDetails struct") + f.write_str("a PaperDocUnresolveCommentDetails struct") } fn visit_map>(self, map: V) -> Result { - PaperChangeMemberLinkPolicyDetails::internal_deserialize(map) + PaperDocUnresolveCommentDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("PaperChangeMemberLinkPolicyDetails", PAPER_CHANGE_MEMBER_LINK_POLICY_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("PaperDocUnresolveCommentDetails", PAPER_DOC_UNRESOLVE_COMMENT_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for PaperChangeMemberLinkPolicyDetails { +impl ::serde::ser::Serialize for PaperDocUnresolveCommentDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("PaperChangeMemberLinkPolicyDetails", 1)?; + let mut s = serializer.serialize_struct("PaperDocUnresolveCommentDetails", 2)?; self.internal_serialize::(&mut s)?; s.end() } @@ -69895,30 +91353,30 @@ impl ::serde::ser::Serialize for PaperChangeMemberLinkPolicyDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct PaperChangeMemberLinkPolicyType { +pub struct PaperDocUnresolveCommentType { pub description: String, } -impl PaperChangeMemberLinkPolicyType { +impl PaperDocUnresolveCommentType { pub fn new(description: String) -> Self { - PaperChangeMemberLinkPolicyType { + PaperDocUnresolveCommentType { description, } } } -const PAPER_CHANGE_MEMBER_LINK_POLICY_TYPE_FIELDS: &[&str] = &["description"]; -impl PaperChangeMemberLinkPolicyType { +const PAPER_DOC_UNRESOLVE_COMMENT_TYPE_FIELDS: &[&str] = &["description"]; +impl PaperDocUnresolveCommentType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -69939,7 +91397,7 @@ impl PaperChangeMemberLinkPolicyType { if optional && nothing { return Ok(None); } - let result = PaperChangeMemberLinkPolicyType { + let result = PaperDocUnresolveCommentType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -69955,89 +91413,72 @@ impl PaperChangeMemberLinkPolicyType { } } -impl<'de> ::serde::de::Deserialize<'de> for PaperChangeMemberLinkPolicyType { +impl<'de> ::serde::de::Deserialize<'de> for PaperDocUnresolveCommentType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = PaperChangeMemberLinkPolicyType; + type Value = PaperDocUnresolveCommentType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a PaperChangeMemberLinkPolicyType struct") + f.write_str("a PaperDocUnresolveCommentType struct") } fn visit_map>(self, map: V) -> Result { - PaperChangeMemberLinkPolicyType::internal_deserialize(map) + PaperDocUnresolveCommentType::internal_deserialize(map) } } - deserializer.deserialize_struct("PaperChangeMemberLinkPolicyType", PAPER_CHANGE_MEMBER_LINK_POLICY_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("PaperDocUnresolveCommentType", PAPER_DOC_UNRESOLVE_COMMENT_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for PaperChangeMemberLinkPolicyType { +impl ::serde::ser::Serialize for PaperDocUnresolveCommentType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("PaperChangeMemberLinkPolicyType", 1)?; + let mut s = serializer.serialize_struct("PaperDocUnresolveCommentType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Changed whether members can share Paper docs outside team, and if docs are accessible only by -/// team members or anyone by default. +/// Restored Paper doc. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct PaperChangeMemberPolicyDetails { - /// New paper external accessibility policy. - pub new_value: PaperMemberPolicy, - /// Previous paper external accessibility policy. Might be missing due to historical data gap. - pub previous_value: Option, +pub struct PaperDocUntrashedDetails { + /// Event unique identifier. + pub event_uuid: String, } -impl PaperChangeMemberPolicyDetails { - pub fn new(new_value: PaperMemberPolicy) -> Self { - PaperChangeMemberPolicyDetails { - new_value, - previous_value: None, +impl PaperDocUntrashedDetails { + pub fn new(event_uuid: String) -> Self { + PaperDocUntrashedDetails { + event_uuid, } } - - pub fn with_previous_value(mut self, value: PaperMemberPolicy) -> Self { - self.previous_value = Some(value); - self - } } -const PAPER_CHANGE_MEMBER_POLICY_DETAILS_FIELDS: &[&str] = &["new_value", - "previous_value"]; -impl PaperChangeMemberPolicyDetails { +const PAPER_DOC_UNTRASHED_DETAILS_FIELDS: &[&str] = &["event_uuid"]; +impl PaperDocUntrashedDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_new_value = None; - let mut field_previous_value = None; + ) -> Result, V::Error> { + let mut field_event_uuid = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "new_value" => { - if field_new_value.is_some() { - return Err(::serde::de::Error::duplicate_field("new_value")); - } - field_new_value = Some(map.next_value()?); - } - "previous_value" => { - if field_previous_value.is_some() { - return Err(::serde::de::Error::duplicate_field("previous_value")); + "event_uuid" => { + if field_event_uuid.is_some() { + return Err(::serde::de::Error::duplicate_field("event_uuid")); } - field_previous_value = Some(map.next_value()?); + field_event_uuid = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -70048,9 +91489,8 @@ impl PaperChangeMemberPolicyDetails { if optional && nothing { return Ok(None); } - let result = PaperChangeMemberPolicyDetails { - new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, - previous_value: field_previous_value.and_then(Option::flatten), + let result = PaperDocUntrashedDetails { + event_uuid: field_event_uuid.ok_or_else(|| ::serde::de::Error::missing_field("event_uuid"))?, }; Ok(Some(result)) } @@ -70058,39 +91498,36 @@ impl PaperChangeMemberPolicyDetails { pub(crate) fn internal_serialize( &self, s: &mut S::SerializeStruct, - ) -> Result<(), S::Error> { - use serde::ser::SerializeStruct; - s.serialize_field("new_value", &self.new_value)?; - if let Some(val) = &self.previous_value { - s.serialize_field("previous_value", val)?; - } + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("event_uuid", &self.event_uuid)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for PaperChangeMemberPolicyDetails { +impl<'de> ::serde::de::Deserialize<'de> for PaperDocUntrashedDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = PaperChangeMemberPolicyDetails; + type Value = PaperDocUntrashedDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a PaperChangeMemberPolicyDetails struct") + f.write_str("a PaperDocUntrashedDetails struct") } fn visit_map>(self, map: V) -> Result { - PaperChangeMemberPolicyDetails::internal_deserialize(map) + PaperDocUntrashedDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("PaperChangeMemberPolicyDetails", PAPER_CHANGE_MEMBER_POLICY_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("PaperDocUntrashedDetails", PAPER_DOC_UNTRASHED_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for PaperChangeMemberPolicyDetails { +impl ::serde::ser::Serialize for PaperDocUntrashedDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("PaperChangeMemberPolicyDetails", 2)?; + let mut s = serializer.serialize_struct("PaperDocUntrashedDetails", 1)?; self.internal_serialize::(&mut s)?; s.end() } @@ -70098,30 +91535,30 @@ impl ::serde::ser::Serialize for PaperChangeMemberPolicyDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct PaperChangeMemberPolicyType { +pub struct PaperDocUntrashedType { pub description: String, } -impl PaperChangeMemberPolicyType { +impl PaperDocUntrashedType { pub fn new(description: String) -> Self { - PaperChangeMemberPolicyType { + PaperDocUntrashedType { description, } } } -const PAPER_CHANGE_MEMBER_POLICY_TYPE_FIELDS: &[&str] = &["description"]; -impl PaperChangeMemberPolicyType { +const PAPER_DOC_UNTRASHED_TYPE_FIELDS: &[&str] = &["description"]; +impl PaperDocUntrashedType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -70142,7 +91579,7 @@ impl PaperChangeMemberPolicyType { if optional && nothing { return Ok(None); } - let result = PaperChangeMemberPolicyType { + let result = PaperDocUntrashedType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -70158,91 +91595,72 @@ impl PaperChangeMemberPolicyType { } } -impl<'de> ::serde::de::Deserialize<'de> for PaperChangeMemberPolicyType { +impl<'de> ::serde::de::Deserialize<'de> for PaperDocUntrashedType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = PaperChangeMemberPolicyType; + type Value = PaperDocUntrashedType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a PaperChangeMemberPolicyType struct") + f.write_str("a PaperDocUntrashedType struct") } fn visit_map>(self, map: V) -> Result { - PaperChangeMemberPolicyType::internal_deserialize(map) + PaperDocUntrashedType::internal_deserialize(map) } } - deserializer.deserialize_struct("PaperChangeMemberPolicyType", PAPER_CHANGE_MEMBER_POLICY_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("PaperDocUntrashedType", PAPER_DOC_UNTRASHED_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for PaperChangeMemberPolicyType { +impl ::serde::ser::Serialize for PaperDocUntrashedType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("PaperChangeMemberPolicyType", 1)?; + let mut s = serializer.serialize_struct("PaperDocUntrashedType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Enabled/disabled Dropbox Paper for team. +/// Viewed Paper doc. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct PaperChangePolicyDetails { - /// New Dropbox Paper policy. - pub new_value: crate::types::team_policies::PaperEnabledPolicy, - /// Previous Dropbox Paper policy. Might be missing due to historical data gap. - pub previous_value: Option, +pub struct PaperDocViewDetails { + /// Event unique identifier. + pub event_uuid: String, } -impl PaperChangePolicyDetails { - pub fn new(new_value: crate::types::team_policies::PaperEnabledPolicy) -> Self { - PaperChangePolicyDetails { - new_value, - previous_value: None, +impl PaperDocViewDetails { + pub fn new(event_uuid: String) -> Self { + PaperDocViewDetails { + event_uuid, } } - - pub fn with_previous_value( - mut self, - value: crate::types::team_policies::PaperEnabledPolicy, - ) -> Self { - self.previous_value = Some(value); - self - } } -const PAPER_CHANGE_POLICY_DETAILS_FIELDS: &[&str] = &["new_value", - "previous_value"]; -impl PaperChangePolicyDetails { +const PAPER_DOC_VIEW_DETAILS_FIELDS: &[&str] = &["event_uuid"]; +impl PaperDocViewDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_new_value = None; - let mut field_previous_value = None; + ) -> Result, V::Error> { + let mut field_event_uuid = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "new_value" => { - if field_new_value.is_some() { - return Err(::serde::de::Error::duplicate_field("new_value")); - } - field_new_value = Some(map.next_value()?); - } - "previous_value" => { - if field_previous_value.is_some() { - return Err(::serde::de::Error::duplicate_field("previous_value")); + "event_uuid" => { + if field_event_uuid.is_some() { + return Err(::serde::de::Error::duplicate_field("event_uuid")); } - field_previous_value = Some(map.next_value()?); + field_event_uuid = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -70253,9 +91671,8 @@ impl PaperChangePolicyDetails { if optional && nothing { return Ok(None); } - let result = PaperChangePolicyDetails { - new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, - previous_value: field_previous_value.and_then(Option::flatten), + let result = PaperDocViewDetails { + event_uuid: field_event_uuid.ok_or_else(|| ::serde::de::Error::missing_field("event_uuid"))?, }; Ok(Some(result)) } @@ -70265,37 +91682,34 @@ impl PaperChangePolicyDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("new_value", &self.new_value)?; - if let Some(val) = &self.previous_value { - s.serialize_field("previous_value", val)?; - } + s.serialize_field("event_uuid", &self.event_uuid)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for PaperChangePolicyDetails { +impl<'de> ::serde::de::Deserialize<'de> for PaperDocViewDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = PaperChangePolicyDetails; + type Value = PaperDocViewDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a PaperChangePolicyDetails struct") + f.write_str("a PaperDocViewDetails struct") } fn visit_map>(self, map: V) -> Result { - PaperChangePolicyDetails::internal_deserialize(map) + PaperDocViewDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("PaperChangePolicyDetails", PAPER_CHANGE_POLICY_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("PaperDocViewDetails", PAPER_DOC_VIEW_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for PaperChangePolicyDetails { +impl ::serde::ser::Serialize for PaperDocViewDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("PaperChangePolicyDetails", 2)?; + let mut s = serializer.serialize_struct("PaperDocViewDetails", 1)?; self.internal_serialize::(&mut s)?; s.end() } @@ -70303,30 +91717,30 @@ impl ::serde::ser::Serialize for PaperChangePolicyDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct PaperChangePolicyType { +pub struct PaperDocViewType { pub description: String, } -impl PaperChangePolicyType { +impl PaperDocViewType { pub fn new(description: String) -> Self { - PaperChangePolicyType { + PaperDocViewType { description, } } } -const PAPER_CHANGE_POLICY_TYPE_FIELDS: &[&str] = &["description"]; -impl PaperChangePolicyType { +const PAPER_DOC_VIEW_TYPE_FIELDS: &[&str] = &["description"]; +impl PaperDocViewType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -70347,7 +91761,7 @@ impl PaperChangePolicyType { if optional && nothing { return Ok(None); } - let result = PaperChangePolicyType { + let result = PaperDocViewType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -70363,72 +91777,83 @@ impl PaperChangePolicyType { } } -impl<'de> ::serde::de::Deserialize<'de> for PaperChangePolicyType { +impl<'de> ::serde::de::Deserialize<'de> for PaperDocViewType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = PaperChangePolicyType; + type Value = PaperDocViewType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a PaperChangePolicyType struct") + f.write_str("a PaperDocViewType struct") } fn visit_map>(self, map: V) -> Result { - PaperChangePolicyType::internal_deserialize(map) + PaperDocViewType::internal_deserialize(map) } } - deserializer.deserialize_struct("PaperChangePolicyType", PAPER_CHANGE_POLICY_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("PaperDocViewType", PAPER_DOC_VIEW_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for PaperChangePolicyType { +impl ::serde::ser::Serialize for PaperDocViewType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("PaperChangePolicyType", 1)?; + let mut s = serializer.serialize_struct("PaperDocViewType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Added users and/or groups to Paper doc/folder. +/// Paper document's logged information. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct PaperContentAddMemberDetails { - /// Event unique identifier. - pub event_uuid: String, +pub struct PaperDocumentLogInfo { + /// Papers document Id. + pub doc_id: String, + /// Paper document title. + pub doc_title: String, } -impl PaperContentAddMemberDetails { - pub fn new(event_uuid: String) -> Self { - PaperContentAddMemberDetails { - event_uuid, +impl PaperDocumentLogInfo { + pub fn new(doc_id: String, doc_title: String) -> Self { + PaperDocumentLogInfo { + doc_id, + doc_title, } } } -const PAPER_CONTENT_ADD_MEMBER_DETAILS_FIELDS: &[&str] = &["event_uuid"]; -impl PaperContentAddMemberDetails { +const PAPER_DOCUMENT_LOG_INFO_FIELDS: &[&str] = &["doc_id", + "doc_title"]; +impl PaperDocumentLogInfo { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_event_uuid = None; + ) -> Result, V::Error> { + let mut field_doc_id = None; + let mut field_doc_title = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "event_uuid" => { - if field_event_uuid.is_some() { - return Err(::serde::de::Error::duplicate_field("event_uuid")); + "doc_id" => { + if field_doc_id.is_some() { + return Err(::serde::de::Error::duplicate_field("doc_id")); } - field_event_uuid = Some(map.next_value()?); + field_doc_id = Some(map.next_value()?); + } + "doc_title" => { + if field_doc_title.is_some() { + return Err(::serde::de::Error::duplicate_field("doc_title")); + } + field_doc_title = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -70439,8 +91864,9 @@ impl PaperContentAddMemberDetails { if optional && nothing { return Ok(None); } - let result = PaperContentAddMemberDetails { - event_uuid: field_event_uuid.ok_or_else(|| ::serde::de::Error::missing_field("event_uuid"))?, + let result = PaperDocumentLogInfo { + doc_id: field_doc_id.ok_or_else(|| ::serde::de::Error::missing_field("doc_id"))?, + doc_title: field_doc_title.ok_or_else(|| ::serde::de::Error::missing_field("doc_title"))?, }; Ok(Some(result)) } @@ -70450,65 +91876,191 @@ impl PaperContentAddMemberDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("event_uuid", &self.event_uuid)?; + s.serialize_field("doc_id", &self.doc_id)?; + s.serialize_field("doc_title", &self.doc_title)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for PaperContentAddMemberDetails { +impl<'de> ::serde::de::Deserialize<'de> for PaperDocumentLogInfo { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = PaperContentAddMemberDetails; + type Value = PaperDocumentLogInfo; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a PaperContentAddMemberDetails struct") + f.write_str("a PaperDocumentLogInfo struct") } fn visit_map>(self, map: V) -> Result { - PaperContentAddMemberDetails::internal_deserialize(map) + PaperDocumentLogInfo::internal_deserialize(map) } } - deserializer.deserialize_struct("PaperContentAddMemberDetails", PAPER_CONTENT_ADD_MEMBER_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("PaperDocumentLogInfo", PAPER_DOCUMENT_LOG_INFO_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for PaperContentAddMemberDetails { +impl ::serde::ser::Serialize for PaperDocumentLogInfo { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("PaperContentAddMemberDetails", 1)?; + let mut s = serializer.serialize_struct("PaperDocumentLogInfo", 2)?; self.internal_serialize::(&mut s)?; s.end() } } +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // variants may be added in the future +pub enum PaperDownloadFormat { + Docx, + Html, + Markdown, + Pdf, + /// Catch-all used for unrecognized values returned from the server. Encountering this value + /// typically indicates that this SDK version is out of date. + Other, +} + +impl<'de> ::serde::de::Deserialize<'de> for PaperDownloadFormat { + fn deserialize>(deserializer: D) -> Result { + // union deserializer + use serde::de::{self, MapAccess, Visitor}; + struct EnumVisitor; + impl<'de> Visitor<'de> for EnumVisitor { + type Value = PaperDownloadFormat; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a PaperDownloadFormat structure") + } + fn visit_map>(self, mut map: V) -> Result { + let tag: &str = match map.next_key()? { + Some(".tag") => map.next_value()?, + _ => return Err(de::Error::missing_field(".tag")) + }; + let value = match tag { + "docx" => PaperDownloadFormat::Docx, + "html" => PaperDownloadFormat::Html, + "markdown" => PaperDownloadFormat::Markdown, + "pdf" => PaperDownloadFormat::Pdf, + _ => PaperDownloadFormat::Other, + }; + crate::eat_json_fields(&mut map)?; + Ok(value) + } + } + const VARIANTS: &[&str] = &["docx", + "html", + "markdown", + "pdf", + "other"]; + deserializer.deserialize_struct("PaperDownloadFormat", VARIANTS, EnumVisitor) + } +} + +impl ::serde::ser::Serialize for PaperDownloadFormat { + fn serialize(&self, serializer: S) -> Result { + // union serializer + use serde::ser::SerializeStruct; + match self { + PaperDownloadFormat::Docx => { + // unit + let mut s = serializer.serialize_struct("PaperDownloadFormat", 1)?; + s.serialize_field(".tag", "docx")?; + s.end() + } + PaperDownloadFormat::Html => { + // unit + let mut s = serializer.serialize_struct("PaperDownloadFormat", 1)?; + s.serialize_field(".tag", "html")?; + s.end() + } + PaperDownloadFormat::Markdown => { + // unit + let mut s = serializer.serialize_struct("PaperDownloadFormat", 1)?; + s.serialize_field(".tag", "markdown")?; + s.end() + } + PaperDownloadFormat::Pdf => { + // unit + let mut s = serializer.serialize_struct("PaperDownloadFormat", 1)?; + s.serialize_field(".tag", "pdf")?; + s.end() + } + PaperDownloadFormat::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) + } + } +} + +/// Added users to Paper-enabled users list. +#[derive(Debug, Clone, PartialEq, Eq, Default)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct PaperEnabledUsersGroupAdditionDetails { +} + +const PAPER_ENABLED_USERS_GROUP_ADDITION_DETAILS_FIELDS: &[&str] = &[]; +impl PaperEnabledUsersGroupAdditionDetails { + // no _opt deserializer + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + ) -> Result { + // ignore any fields found; none are presently recognized + crate::eat_json_fields(&mut map)?; + Ok(PaperEnabledUsersGroupAdditionDetails {}) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for PaperEnabledUsersGroupAdditionDetails { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = PaperEnabledUsersGroupAdditionDetails; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a PaperEnabledUsersGroupAdditionDetails struct") + } + fn visit_map>(self, map: V) -> Result { + PaperEnabledUsersGroupAdditionDetails::internal_deserialize(map) + } + } + deserializer.deserialize_struct("PaperEnabledUsersGroupAdditionDetails", PAPER_ENABLED_USERS_GROUP_ADDITION_DETAILS_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for PaperEnabledUsersGroupAdditionDetails { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + serializer.serialize_struct("PaperEnabledUsersGroupAdditionDetails", 0)?.end() + } +} + #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct PaperContentAddMemberType { +pub struct PaperEnabledUsersGroupAdditionType { pub description: String, } -impl PaperContentAddMemberType { +impl PaperEnabledUsersGroupAdditionType { pub fn new(description: String) -> Self { - PaperContentAddMemberType { + PaperEnabledUsersGroupAdditionType { description, } } } -const PAPER_CONTENT_ADD_MEMBER_TYPE_FIELDS: &[&str] = &["description"]; -impl PaperContentAddMemberType { +const PAPER_ENABLED_USERS_GROUP_ADDITION_TYPE_FIELDS: &[&str] = &["description"]; +impl PaperEnabledUsersGroupAdditionType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -70529,7 +92081,7 @@ impl PaperContentAddMemberType { if optional && nothing { return Ok(None); } - let result = PaperContentAddMemberType { + let result = PaperEnabledUsersGroupAdditionType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -70545,178 +92097,104 @@ impl PaperContentAddMemberType { } } -impl<'de> ::serde::de::Deserialize<'de> for PaperContentAddMemberType { +impl<'de> ::serde::de::Deserialize<'de> for PaperEnabledUsersGroupAdditionType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = PaperContentAddMemberType; + type Value = PaperEnabledUsersGroupAdditionType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a PaperContentAddMemberType struct") + f.write_str("a PaperEnabledUsersGroupAdditionType struct") } fn visit_map>(self, map: V) -> Result { - PaperContentAddMemberType::internal_deserialize(map) + PaperEnabledUsersGroupAdditionType::internal_deserialize(map) } } - deserializer.deserialize_struct("PaperContentAddMemberType", PAPER_CONTENT_ADD_MEMBER_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("PaperEnabledUsersGroupAdditionType", PAPER_ENABLED_USERS_GROUP_ADDITION_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for PaperContentAddMemberType { +impl ::serde::ser::Serialize for PaperEnabledUsersGroupAdditionType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("PaperContentAddMemberType", 1)?; + let mut s = serializer.serialize_struct("PaperEnabledUsersGroupAdditionType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Added Paper doc/folder to folder. -#[derive(Debug, Clone, PartialEq, Eq)] +/// Removed users from Paper-enabled users list. +#[derive(Debug, Clone, PartialEq, Eq, Default)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct PaperContentAddToFolderDetails { - /// Event unique identifier. - pub event_uuid: String, - /// Target asset position in the Assets list. - pub target_asset_index: u64, - /// Parent asset position in the Assets list. - pub parent_asset_index: u64, -} - -impl PaperContentAddToFolderDetails { - pub fn new(event_uuid: String, target_asset_index: u64, parent_asset_index: u64) -> Self { - PaperContentAddToFolderDetails { - event_uuid, - target_asset_index, - parent_asset_index, - } - } +pub struct PaperEnabledUsersGroupRemovalDetails { } -const PAPER_CONTENT_ADD_TO_FOLDER_DETAILS_FIELDS: &[&str] = &["event_uuid", - "target_asset_index", - "parent_asset_index"]; -impl PaperContentAddToFolderDetails { +const PAPER_ENABLED_USERS_GROUP_REMOVAL_DETAILS_FIELDS: &[&str] = &[]; +impl PaperEnabledUsersGroupRemovalDetails { + // no _opt deserializer pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( - map: V, - ) -> Result { - Self::internal_deserialize_opt(map, false).map(Option::unwrap) - } - - pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - optional: bool, - ) -> Result, V::Error> { - let mut field_event_uuid = None; - let mut field_target_asset_index = None; - let mut field_parent_asset_index = None; - let mut nothing = true; - while let Some(key) = map.next_key::<&str>()? { - nothing = false; - match key { - "event_uuid" => { - if field_event_uuid.is_some() { - return Err(::serde::de::Error::duplicate_field("event_uuid")); - } - field_event_uuid = Some(map.next_value()?); - } - "target_asset_index" => { - if field_target_asset_index.is_some() { - return Err(::serde::de::Error::duplicate_field("target_asset_index")); - } - field_target_asset_index = Some(map.next_value()?); - } - "parent_asset_index" => { - if field_parent_asset_index.is_some() { - return Err(::serde::de::Error::duplicate_field("parent_asset_index")); - } - field_parent_asset_index = Some(map.next_value()?); - } - _ => { - // unknown field allowed and ignored - map.next_value::<::serde_json::Value>()?; - } - } - } - if optional && nothing { - return Ok(None); - } - let result = PaperContentAddToFolderDetails { - event_uuid: field_event_uuid.ok_or_else(|| ::serde::de::Error::missing_field("event_uuid"))?, - target_asset_index: field_target_asset_index.ok_or_else(|| ::serde::de::Error::missing_field("target_asset_index"))?, - parent_asset_index: field_parent_asset_index.ok_or_else(|| ::serde::de::Error::missing_field("parent_asset_index"))?, - }; - Ok(Some(result)) - } - - pub(crate) fn internal_serialize( - &self, - s: &mut S::SerializeStruct, - ) -> Result<(), S::Error> { - use serde::ser::SerializeStruct; - s.serialize_field("event_uuid", &self.event_uuid)?; - s.serialize_field("target_asset_index", &self.target_asset_index)?; - s.serialize_field("parent_asset_index", &self.parent_asset_index)?; - Ok(()) + ) -> Result { + // ignore any fields found; none are presently recognized + crate::eat_json_fields(&mut map)?; + Ok(PaperEnabledUsersGroupRemovalDetails {}) } } -impl<'de> ::serde::de::Deserialize<'de> for PaperContentAddToFolderDetails { +impl<'de> ::serde::de::Deserialize<'de> for PaperEnabledUsersGroupRemovalDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = PaperContentAddToFolderDetails; + type Value = PaperEnabledUsersGroupRemovalDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a PaperContentAddToFolderDetails struct") + f.write_str("a PaperEnabledUsersGroupRemovalDetails struct") } fn visit_map>(self, map: V) -> Result { - PaperContentAddToFolderDetails::internal_deserialize(map) + PaperEnabledUsersGroupRemovalDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("PaperContentAddToFolderDetails", PAPER_CONTENT_ADD_TO_FOLDER_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("PaperEnabledUsersGroupRemovalDetails", PAPER_ENABLED_USERS_GROUP_REMOVAL_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for PaperContentAddToFolderDetails { +impl ::serde::ser::Serialize for PaperEnabledUsersGroupRemovalDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("PaperContentAddToFolderDetails", 3)?; - self.internal_serialize::(&mut s)?; - s.end() + serializer.serialize_struct("PaperEnabledUsersGroupRemovalDetails", 0)?.end() } } #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct PaperContentAddToFolderType { +pub struct PaperEnabledUsersGroupRemovalType { pub description: String, } -impl PaperContentAddToFolderType { +impl PaperEnabledUsersGroupRemovalType { pub fn new(description: String) -> Self { - PaperContentAddToFolderType { + PaperEnabledUsersGroupRemovalType { description, } } } -const PAPER_CONTENT_ADD_TO_FOLDER_TYPE_FIELDS: &[&str] = &["description"]; -impl PaperContentAddToFolderType { +const PAPER_ENABLED_USERS_GROUP_REMOVAL_TYPE_FIELDS: &[&str] = &["description"]; +impl PaperEnabledUsersGroupRemovalType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -70737,7 +92215,7 @@ impl PaperContentAddToFolderType { if optional && nothing { return Ok(None); } - let result = PaperContentAddToFolderType { + let result = PaperEnabledUsersGroupRemovalType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -70753,62 +92231,62 @@ impl PaperContentAddToFolderType { } } -impl<'de> ::serde::de::Deserialize<'de> for PaperContentAddToFolderType { +impl<'de> ::serde::de::Deserialize<'de> for PaperEnabledUsersGroupRemovalType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = PaperContentAddToFolderType; + type Value = PaperEnabledUsersGroupRemovalType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a PaperContentAddToFolderType struct") + f.write_str("a PaperEnabledUsersGroupRemovalType struct") } fn visit_map>(self, map: V) -> Result { - PaperContentAddToFolderType::internal_deserialize(map) + PaperEnabledUsersGroupRemovalType::internal_deserialize(map) } } - deserializer.deserialize_struct("PaperContentAddToFolderType", PAPER_CONTENT_ADD_TO_FOLDER_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("PaperEnabledUsersGroupRemovalType", PAPER_ENABLED_USERS_GROUP_REMOVAL_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for PaperContentAddToFolderType { +impl ::serde::ser::Serialize for PaperEnabledUsersGroupRemovalType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("PaperContentAddToFolderType", 1)?; + let mut s = serializer.serialize_struct("PaperEnabledUsersGroupRemovalType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Archived Paper doc/folder. +/// Changed Paper external sharing setting to anyone. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct PaperContentArchiveDetails { +pub struct PaperExternalViewAllowDetails { /// Event unique identifier. pub event_uuid: String, } -impl PaperContentArchiveDetails { +impl PaperExternalViewAllowDetails { pub fn new(event_uuid: String) -> Self { - PaperContentArchiveDetails { + PaperExternalViewAllowDetails { event_uuid, } } } -const PAPER_CONTENT_ARCHIVE_DETAILS_FIELDS: &[&str] = &["event_uuid"]; -impl PaperContentArchiveDetails { +const PAPER_EXTERNAL_VIEW_ALLOW_DETAILS_FIELDS: &[&str] = &["event_uuid"]; +impl PaperExternalViewAllowDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_event_uuid = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -70829,7 +92307,7 @@ impl PaperContentArchiveDetails { if optional && nothing { return Ok(None); } - let result = PaperContentArchiveDetails { + let result = PaperExternalViewAllowDetails { event_uuid: field_event_uuid.ok_or_else(|| ::serde::de::Error::missing_field("event_uuid"))?, }; Ok(Some(result)) @@ -70845,29 +92323,29 @@ impl PaperContentArchiveDetails { } } -impl<'de> ::serde::de::Deserialize<'de> for PaperContentArchiveDetails { +impl<'de> ::serde::de::Deserialize<'de> for PaperExternalViewAllowDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = PaperContentArchiveDetails; + type Value = PaperExternalViewAllowDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a PaperContentArchiveDetails struct") + f.write_str("a PaperExternalViewAllowDetails struct") } fn visit_map>(self, map: V) -> Result { - PaperContentArchiveDetails::internal_deserialize(map) + PaperExternalViewAllowDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("PaperContentArchiveDetails", PAPER_CONTENT_ARCHIVE_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("PaperExternalViewAllowDetails", PAPER_EXTERNAL_VIEW_ALLOW_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for PaperContentArchiveDetails { +impl ::serde::ser::Serialize for PaperExternalViewAllowDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("PaperContentArchiveDetails", 1)?; + let mut s = serializer.serialize_struct("PaperExternalViewAllowDetails", 1)?; self.internal_serialize::(&mut s)?; s.end() } @@ -70875,30 +92353,30 @@ impl ::serde::ser::Serialize for PaperContentArchiveDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct PaperContentArchiveType { +pub struct PaperExternalViewAllowType { pub description: String, } -impl PaperContentArchiveType { +impl PaperExternalViewAllowType { pub fn new(description: String) -> Self { - PaperContentArchiveType { + PaperExternalViewAllowType { description, } } } -const PAPER_CONTENT_ARCHIVE_TYPE_FIELDS: &[&str] = &["description"]; -impl PaperContentArchiveType { +const PAPER_EXTERNAL_VIEW_ALLOW_TYPE_FIELDS: &[&str] = &["description"]; +impl PaperExternalViewAllowType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -70919,7 +92397,7 @@ impl PaperContentArchiveType { if optional && nothing { return Ok(None); } - let result = PaperContentArchiveType { + let result = PaperExternalViewAllowType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -70935,62 +92413,62 @@ impl PaperContentArchiveType { } } -impl<'de> ::serde::de::Deserialize<'de> for PaperContentArchiveType { +impl<'de> ::serde::de::Deserialize<'de> for PaperExternalViewAllowType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = PaperContentArchiveType; + type Value = PaperExternalViewAllowType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a PaperContentArchiveType struct") + f.write_str("a PaperExternalViewAllowType struct") } fn visit_map>(self, map: V) -> Result { - PaperContentArchiveType::internal_deserialize(map) + PaperExternalViewAllowType::internal_deserialize(map) } } - deserializer.deserialize_struct("PaperContentArchiveType", PAPER_CONTENT_ARCHIVE_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("PaperExternalViewAllowType", PAPER_EXTERNAL_VIEW_ALLOW_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for PaperContentArchiveType { +impl ::serde::ser::Serialize for PaperExternalViewAllowType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("PaperContentArchiveType", 1)?; + let mut s = serializer.serialize_struct("PaperExternalViewAllowType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Created Paper doc/folder. +/// Changed Paper external sharing setting to default team. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct PaperContentCreateDetails { +pub struct PaperExternalViewDefaultTeamDetails { /// Event unique identifier. pub event_uuid: String, } -impl PaperContentCreateDetails { +impl PaperExternalViewDefaultTeamDetails { pub fn new(event_uuid: String) -> Self { - PaperContentCreateDetails { + PaperExternalViewDefaultTeamDetails { event_uuid, } } } -const PAPER_CONTENT_CREATE_DETAILS_FIELDS: &[&str] = &["event_uuid"]; -impl PaperContentCreateDetails { +const PAPER_EXTERNAL_VIEW_DEFAULT_TEAM_DETAILS_FIELDS: &[&str] = &["event_uuid"]; +impl PaperExternalViewDefaultTeamDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_event_uuid = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -71011,7 +92489,7 @@ impl PaperContentCreateDetails { if optional && nothing { return Ok(None); } - let result = PaperContentCreateDetails { + let result = PaperExternalViewDefaultTeamDetails { event_uuid: field_event_uuid.ok_or_else(|| ::serde::de::Error::missing_field("event_uuid"))?, }; Ok(Some(result)) @@ -71027,29 +92505,29 @@ impl PaperContentCreateDetails { } } -impl<'de> ::serde::de::Deserialize<'de> for PaperContentCreateDetails { +impl<'de> ::serde::de::Deserialize<'de> for PaperExternalViewDefaultTeamDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = PaperContentCreateDetails; + type Value = PaperExternalViewDefaultTeamDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a PaperContentCreateDetails struct") + f.write_str("a PaperExternalViewDefaultTeamDetails struct") } fn visit_map>(self, map: V) -> Result { - PaperContentCreateDetails::internal_deserialize(map) + PaperExternalViewDefaultTeamDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("PaperContentCreateDetails", PAPER_CONTENT_CREATE_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("PaperExternalViewDefaultTeamDetails", PAPER_EXTERNAL_VIEW_DEFAULT_TEAM_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for PaperContentCreateDetails { +impl ::serde::ser::Serialize for PaperExternalViewDefaultTeamDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("PaperContentCreateDetails", 1)?; + let mut s = serializer.serialize_struct("PaperExternalViewDefaultTeamDetails", 1)?; self.internal_serialize::(&mut s)?; s.end() } @@ -71057,30 +92535,30 @@ impl ::serde::ser::Serialize for PaperContentCreateDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct PaperContentCreateType { +pub struct PaperExternalViewDefaultTeamType { pub description: String, } -impl PaperContentCreateType { +impl PaperExternalViewDefaultTeamType { pub fn new(description: String) -> Self { - PaperContentCreateType { + PaperExternalViewDefaultTeamType { description, } } } -const PAPER_CONTENT_CREATE_TYPE_FIELDS: &[&str] = &["description"]; -impl PaperContentCreateType { +const PAPER_EXTERNAL_VIEW_DEFAULT_TEAM_TYPE_FIELDS: &[&str] = &["description"]; +impl PaperExternalViewDefaultTeamType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -71101,7 +92579,7 @@ impl PaperContentCreateType { if optional && nothing { return Ok(None); } - let result = PaperContentCreateType { + let result = PaperExternalViewDefaultTeamType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -71117,62 +92595,62 @@ impl PaperContentCreateType { } } -impl<'de> ::serde::de::Deserialize<'de> for PaperContentCreateType { +impl<'de> ::serde::de::Deserialize<'de> for PaperExternalViewDefaultTeamType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = PaperContentCreateType; + type Value = PaperExternalViewDefaultTeamType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a PaperContentCreateType struct") + f.write_str("a PaperExternalViewDefaultTeamType struct") } fn visit_map>(self, map: V) -> Result { - PaperContentCreateType::internal_deserialize(map) + PaperExternalViewDefaultTeamType::internal_deserialize(map) } } - deserializer.deserialize_struct("PaperContentCreateType", PAPER_CONTENT_CREATE_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("PaperExternalViewDefaultTeamType", PAPER_EXTERNAL_VIEW_DEFAULT_TEAM_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for PaperContentCreateType { +impl ::serde::ser::Serialize for PaperExternalViewDefaultTeamType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("PaperContentCreateType", 1)?; + let mut s = serializer.serialize_struct("PaperExternalViewDefaultTeamType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Permanently deleted Paper doc/folder. +/// Changed Paper external sharing setting to team-only. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct PaperContentPermanentlyDeleteDetails { +pub struct PaperExternalViewForbidDetails { /// Event unique identifier. pub event_uuid: String, } -impl PaperContentPermanentlyDeleteDetails { +impl PaperExternalViewForbidDetails { pub fn new(event_uuid: String) -> Self { - PaperContentPermanentlyDeleteDetails { + PaperExternalViewForbidDetails { event_uuid, } } } -const PAPER_CONTENT_PERMANENTLY_DELETE_DETAILS_FIELDS: &[&str] = &["event_uuid"]; -impl PaperContentPermanentlyDeleteDetails { +const PAPER_EXTERNAL_VIEW_FORBID_DETAILS_FIELDS: &[&str] = &["event_uuid"]; +impl PaperExternalViewForbidDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_event_uuid = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -71193,7 +92671,7 @@ impl PaperContentPermanentlyDeleteDetails { if optional && nothing { return Ok(None); } - let result = PaperContentPermanentlyDeleteDetails { + let result = PaperExternalViewForbidDetails { event_uuid: field_event_uuid.ok_or_else(|| ::serde::de::Error::missing_field("event_uuid"))?, }; Ok(Some(result)) @@ -71209,29 +92687,29 @@ impl PaperContentPermanentlyDeleteDetails { } } -impl<'de> ::serde::de::Deserialize<'de> for PaperContentPermanentlyDeleteDetails { +impl<'de> ::serde::de::Deserialize<'de> for PaperExternalViewForbidDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = PaperContentPermanentlyDeleteDetails; + type Value = PaperExternalViewForbidDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a PaperContentPermanentlyDeleteDetails struct") + f.write_str("a PaperExternalViewForbidDetails struct") } fn visit_map>(self, map: V) -> Result { - PaperContentPermanentlyDeleteDetails::internal_deserialize(map) + PaperExternalViewForbidDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("PaperContentPermanentlyDeleteDetails", PAPER_CONTENT_PERMANENTLY_DELETE_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("PaperExternalViewForbidDetails", PAPER_EXTERNAL_VIEW_FORBID_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for PaperContentPermanentlyDeleteDetails { +impl ::serde::ser::Serialize for PaperExternalViewForbidDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("PaperContentPermanentlyDeleteDetails", 1)?; + let mut s = serializer.serialize_struct("PaperExternalViewForbidDetails", 1)?; self.internal_serialize::(&mut s)?; s.end() } @@ -71239,30 +92717,30 @@ impl ::serde::ser::Serialize for PaperContentPermanentlyDeleteDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct PaperContentPermanentlyDeleteType { +pub struct PaperExternalViewForbidType { pub description: String, } -impl PaperContentPermanentlyDeleteType { +impl PaperExternalViewForbidType { pub fn new(description: String) -> Self { - PaperContentPermanentlyDeleteType { + PaperExternalViewForbidType { description, } } } -const PAPER_CONTENT_PERMANENTLY_DELETE_TYPE_FIELDS: &[&str] = &["description"]; -impl PaperContentPermanentlyDeleteType { +const PAPER_EXTERNAL_VIEW_FORBID_TYPE_FIELDS: &[&str] = &["description"]; +impl PaperExternalViewForbidType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -71283,7 +92761,7 @@ impl PaperContentPermanentlyDeleteType { if optional && nothing { return Ok(None); } - let result = PaperContentPermanentlyDeleteType { + let result = PaperExternalViewForbidType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -71299,83 +92777,78 @@ impl PaperContentPermanentlyDeleteType { } } -impl<'de> ::serde::de::Deserialize<'de> for PaperContentPermanentlyDeleteType { +impl<'de> ::serde::de::Deserialize<'de> for PaperExternalViewForbidType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = PaperContentPermanentlyDeleteType; + type Value = PaperExternalViewForbidType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a PaperContentPermanentlyDeleteType struct") + f.write_str("a PaperExternalViewForbidType struct") } fn visit_map>(self, map: V) -> Result { - PaperContentPermanentlyDeleteType::internal_deserialize(map) + PaperExternalViewForbidType::internal_deserialize(map) } } - deserializer.deserialize_struct("PaperContentPermanentlyDeleteType", PAPER_CONTENT_PERMANENTLY_DELETE_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("PaperExternalViewForbidType", PAPER_EXTERNAL_VIEW_FORBID_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for PaperContentPermanentlyDeleteType { +impl ::serde::ser::Serialize for PaperExternalViewForbidType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("PaperContentPermanentlyDeleteType", 1)?; + let mut s = serializer.serialize_struct("PaperExternalViewForbidType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Removed Paper doc/folder from folder. +/// Followed/unfollowed Paper folder. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct PaperContentRemoveFromFolderDetails { +pub struct PaperFolderChangeSubscriptionDetails { /// Event unique identifier. pub event_uuid: String, - /// Target asset position in the Assets list. - pub target_asset_index: Option, - /// Parent asset position in the Assets list. - pub parent_asset_index: Option, + /// New folder subscription level. + pub new_subscription_level: String, + /// Previous folder subscription level. Might be missing due to historical data gap. + pub previous_subscription_level: Option, } -impl PaperContentRemoveFromFolderDetails { - pub fn new(event_uuid: String) -> Self { - PaperContentRemoveFromFolderDetails { +impl PaperFolderChangeSubscriptionDetails { + pub fn new(event_uuid: String, new_subscription_level: String) -> Self { + PaperFolderChangeSubscriptionDetails { event_uuid, - target_asset_index: None, - parent_asset_index: None, + new_subscription_level, + previous_subscription_level: None, } } - pub fn with_target_asset_index(mut self, value: u64) -> Self { - self.target_asset_index = Some(value); - self - } - - pub fn with_parent_asset_index(mut self, value: u64) -> Self { - self.parent_asset_index = Some(value); + pub fn with_previous_subscription_level(mut self, value: String) -> Self { + self.previous_subscription_level = Some(value); self } } -const PAPER_CONTENT_REMOVE_FROM_FOLDER_DETAILS_FIELDS: &[&str] = &["event_uuid", - "target_asset_index", - "parent_asset_index"]; -impl PaperContentRemoveFromFolderDetails { +const PAPER_FOLDER_CHANGE_SUBSCRIPTION_DETAILS_FIELDS: &[&str] = &["event_uuid", + "new_subscription_level", + "previous_subscription_level"]; +impl PaperFolderChangeSubscriptionDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_event_uuid = None; - let mut field_target_asset_index = None; - let mut field_parent_asset_index = None; + let mut field_new_subscription_level = None; + let mut field_previous_subscription_level = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; @@ -71386,17 +92859,17 @@ impl PaperContentRemoveFromFolderDetails { } field_event_uuid = Some(map.next_value()?); } - "target_asset_index" => { - if field_target_asset_index.is_some() { - return Err(::serde::de::Error::duplicate_field("target_asset_index")); + "new_subscription_level" => { + if field_new_subscription_level.is_some() { + return Err(::serde::de::Error::duplicate_field("new_subscription_level")); } - field_target_asset_index = Some(map.next_value()?); + field_new_subscription_level = Some(map.next_value()?); } - "parent_asset_index" => { - if field_parent_asset_index.is_some() { - return Err(::serde::de::Error::duplicate_field("parent_asset_index")); + "previous_subscription_level" => { + if field_previous_subscription_level.is_some() { + return Err(::serde::de::Error::duplicate_field("previous_subscription_level")); } - field_parent_asset_index = Some(map.next_value()?); + field_previous_subscription_level = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -71407,10 +92880,10 @@ impl PaperContentRemoveFromFolderDetails { if optional && nothing { return Ok(None); } - let result = PaperContentRemoveFromFolderDetails { + let result = PaperFolderChangeSubscriptionDetails { event_uuid: field_event_uuid.ok_or_else(|| ::serde::de::Error::missing_field("event_uuid"))?, - target_asset_index: field_target_asset_index.and_then(Option::flatten), - parent_asset_index: field_parent_asset_index.and_then(Option::flatten), + new_subscription_level: field_new_subscription_level.ok_or_else(|| ::serde::de::Error::missing_field("new_subscription_level"))?, + previous_subscription_level: field_previous_subscription_level.and_then(Option::flatten), }; Ok(Some(result)) } @@ -71421,39 +92894,37 @@ impl PaperContentRemoveFromFolderDetails { ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; s.serialize_field("event_uuid", &self.event_uuid)?; - if let Some(val) = &self.target_asset_index { - s.serialize_field("target_asset_index", val)?; - } - if let Some(val) = &self.parent_asset_index { - s.serialize_field("parent_asset_index", val)?; + s.serialize_field("new_subscription_level", &self.new_subscription_level)?; + if let Some(val) = &self.previous_subscription_level { + s.serialize_field("previous_subscription_level", val)?; } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for PaperContentRemoveFromFolderDetails { +impl<'de> ::serde::de::Deserialize<'de> for PaperFolderChangeSubscriptionDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = PaperContentRemoveFromFolderDetails; + type Value = PaperFolderChangeSubscriptionDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a PaperContentRemoveFromFolderDetails struct") + f.write_str("a PaperFolderChangeSubscriptionDetails struct") } fn visit_map>(self, map: V) -> Result { - PaperContentRemoveFromFolderDetails::internal_deserialize(map) + PaperFolderChangeSubscriptionDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("PaperContentRemoveFromFolderDetails", PAPER_CONTENT_REMOVE_FROM_FOLDER_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("PaperFolderChangeSubscriptionDetails", PAPER_FOLDER_CHANGE_SUBSCRIPTION_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for PaperContentRemoveFromFolderDetails { +impl ::serde::ser::Serialize for PaperFolderChangeSubscriptionDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("PaperContentRemoveFromFolderDetails", 3)?; + let mut s = serializer.serialize_struct("PaperFolderChangeSubscriptionDetails", 3)?; self.internal_serialize::(&mut s)?; s.end() } @@ -71461,30 +92932,30 @@ impl ::serde::ser::Serialize for PaperContentRemoveFromFolderDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct PaperContentRemoveFromFolderType { +pub struct PaperFolderChangeSubscriptionType { pub description: String, } -impl PaperContentRemoveFromFolderType { +impl PaperFolderChangeSubscriptionType { pub fn new(description: String) -> Self { - PaperContentRemoveFromFolderType { + PaperFolderChangeSubscriptionType { description, } } } -const PAPER_CONTENT_REMOVE_FROM_FOLDER_TYPE_FIELDS: &[&str] = &["description"]; -impl PaperContentRemoveFromFolderType { +const PAPER_FOLDER_CHANGE_SUBSCRIPTION_TYPE_FIELDS: &[&str] = &["description"]; +impl PaperFolderChangeSubscriptionType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -71505,7 +92976,7 @@ impl PaperContentRemoveFromFolderType { if optional && nothing { return Ok(None); } - let result = PaperContentRemoveFromFolderType { + let result = PaperFolderChangeSubscriptionType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -71521,62 +92992,62 @@ impl PaperContentRemoveFromFolderType { } } -impl<'de> ::serde::de::Deserialize<'de> for PaperContentRemoveFromFolderType { +impl<'de> ::serde::de::Deserialize<'de> for PaperFolderChangeSubscriptionType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = PaperContentRemoveFromFolderType; + type Value = PaperFolderChangeSubscriptionType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a PaperContentRemoveFromFolderType struct") + f.write_str("a PaperFolderChangeSubscriptionType struct") } fn visit_map>(self, map: V) -> Result { - PaperContentRemoveFromFolderType::internal_deserialize(map) + PaperFolderChangeSubscriptionType::internal_deserialize(map) } } - deserializer.deserialize_struct("PaperContentRemoveFromFolderType", PAPER_CONTENT_REMOVE_FROM_FOLDER_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("PaperFolderChangeSubscriptionType", PAPER_FOLDER_CHANGE_SUBSCRIPTION_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for PaperContentRemoveFromFolderType { +impl ::serde::ser::Serialize for PaperFolderChangeSubscriptionType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("PaperContentRemoveFromFolderType", 1)?; + let mut s = serializer.serialize_struct("PaperFolderChangeSubscriptionType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Removed users and/or groups from Paper doc/folder. +/// Archived Paper folder. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct PaperContentRemoveMemberDetails { +pub struct PaperFolderDeletedDetails { /// Event unique identifier. pub event_uuid: String, } -impl PaperContentRemoveMemberDetails { +impl PaperFolderDeletedDetails { pub fn new(event_uuid: String) -> Self { - PaperContentRemoveMemberDetails { + PaperFolderDeletedDetails { event_uuid, } } } -const PAPER_CONTENT_REMOVE_MEMBER_DETAILS_FIELDS: &[&str] = &["event_uuid"]; -impl PaperContentRemoveMemberDetails { +const PAPER_FOLDER_DELETED_DETAILS_FIELDS: &[&str] = &["event_uuid"]; +impl PaperFolderDeletedDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_event_uuid = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -71597,7 +93068,7 @@ impl PaperContentRemoveMemberDetails { if optional && nothing { return Ok(None); } - let result = PaperContentRemoveMemberDetails { + let result = PaperFolderDeletedDetails { event_uuid: field_event_uuid.ok_or_else(|| ::serde::de::Error::missing_field("event_uuid"))?, }; Ok(Some(result)) @@ -71613,29 +93084,29 @@ impl PaperContentRemoveMemberDetails { } } -impl<'de> ::serde::de::Deserialize<'de> for PaperContentRemoveMemberDetails { +impl<'de> ::serde::de::Deserialize<'de> for PaperFolderDeletedDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = PaperContentRemoveMemberDetails; + type Value = PaperFolderDeletedDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a PaperContentRemoveMemberDetails struct") + f.write_str("a PaperFolderDeletedDetails struct") } fn visit_map>(self, map: V) -> Result { - PaperContentRemoveMemberDetails::internal_deserialize(map) + PaperFolderDeletedDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("PaperContentRemoveMemberDetails", PAPER_CONTENT_REMOVE_MEMBER_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("PaperFolderDeletedDetails", PAPER_FOLDER_DELETED_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for PaperContentRemoveMemberDetails { +impl ::serde::ser::Serialize for PaperFolderDeletedDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("PaperContentRemoveMemberDetails", 1)?; + let mut s = serializer.serialize_struct("PaperFolderDeletedDetails", 1)?; self.internal_serialize::(&mut s)?; s.end() } @@ -71643,30 +93114,30 @@ impl ::serde::ser::Serialize for PaperContentRemoveMemberDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct PaperContentRemoveMemberType { +pub struct PaperFolderDeletedType { pub description: String, } -impl PaperContentRemoveMemberType { +impl PaperFolderDeletedType { pub fn new(description: String) -> Self { - PaperContentRemoveMemberType { + PaperFolderDeletedType { description, } } } -const PAPER_CONTENT_REMOVE_MEMBER_TYPE_FIELDS: &[&str] = &["description"]; -impl PaperContentRemoveMemberType { +const PAPER_FOLDER_DELETED_TYPE_FIELDS: &[&str] = &["description"]; +impl PaperFolderDeletedType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -71687,7 +93158,7 @@ impl PaperContentRemoveMemberType { if optional && nothing { return Ok(None); } - let result = PaperContentRemoveMemberType { + let result = PaperFolderDeletedType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -71703,62 +93174,62 @@ impl PaperContentRemoveMemberType { } } -impl<'de> ::serde::de::Deserialize<'de> for PaperContentRemoveMemberType { +impl<'de> ::serde::de::Deserialize<'de> for PaperFolderDeletedType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = PaperContentRemoveMemberType; + type Value = PaperFolderDeletedType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a PaperContentRemoveMemberType struct") + f.write_str("a PaperFolderDeletedType struct") } fn visit_map>(self, map: V) -> Result { - PaperContentRemoveMemberType::internal_deserialize(map) + PaperFolderDeletedType::internal_deserialize(map) } } - deserializer.deserialize_struct("PaperContentRemoveMemberType", PAPER_CONTENT_REMOVE_MEMBER_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("PaperFolderDeletedType", PAPER_FOLDER_DELETED_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for PaperContentRemoveMemberType { +impl ::serde::ser::Serialize for PaperFolderDeletedType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("PaperContentRemoveMemberType", 1)?; + let mut s = serializer.serialize_struct("PaperFolderDeletedType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Renamed Paper doc/folder. +/// Followed Paper folder. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct PaperContentRenameDetails { +pub struct PaperFolderFollowedDetails { /// Event unique identifier. pub event_uuid: String, } -impl PaperContentRenameDetails { +impl PaperFolderFollowedDetails { pub fn new(event_uuid: String) -> Self { - PaperContentRenameDetails { + PaperFolderFollowedDetails { event_uuid, } } } -const PAPER_CONTENT_RENAME_DETAILS_FIELDS: &[&str] = &["event_uuid"]; -impl PaperContentRenameDetails { +const PAPER_FOLDER_FOLLOWED_DETAILS_FIELDS: &[&str] = &["event_uuid"]; +impl PaperFolderFollowedDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_event_uuid = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -71779,7 +93250,7 @@ impl PaperContentRenameDetails { if optional && nothing { return Ok(None); } - let result = PaperContentRenameDetails { + let result = PaperFolderFollowedDetails { event_uuid: field_event_uuid.ok_or_else(|| ::serde::de::Error::missing_field("event_uuid"))?, }; Ok(Some(result)) @@ -71795,29 +93266,29 @@ impl PaperContentRenameDetails { } } -impl<'de> ::serde::de::Deserialize<'de> for PaperContentRenameDetails { +impl<'de> ::serde::de::Deserialize<'de> for PaperFolderFollowedDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = PaperContentRenameDetails; + type Value = PaperFolderFollowedDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a PaperContentRenameDetails struct") + f.write_str("a PaperFolderFollowedDetails struct") } fn visit_map>(self, map: V) -> Result { - PaperContentRenameDetails::internal_deserialize(map) + PaperFolderFollowedDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("PaperContentRenameDetails", PAPER_CONTENT_RENAME_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("PaperFolderFollowedDetails", PAPER_FOLDER_FOLLOWED_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for PaperContentRenameDetails { +impl ::serde::ser::Serialize for PaperFolderFollowedDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("PaperContentRenameDetails", 1)?; + let mut s = serializer.serialize_struct("PaperFolderFollowedDetails", 1)?; self.internal_serialize::(&mut s)?; s.end() } @@ -71825,132 +93296,40 @@ impl ::serde::ser::Serialize for PaperContentRenameDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct PaperContentRenameType { +pub struct PaperFolderFollowedType { pub description: String, } -impl PaperContentRenameType { +impl PaperFolderFollowedType { pub fn new(description: String) -> Self { - PaperContentRenameType { + PaperFolderFollowedType { description, } } } -const PAPER_CONTENT_RENAME_TYPE_FIELDS: &[&str] = &["description"]; -impl PaperContentRenameType { +const PAPER_FOLDER_FOLLOWED_TYPE_FIELDS: &[&str] = &["description"]; +impl PaperFolderFollowedType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "description" => { - if field_description.is_some() { - return Err(::serde::de::Error::duplicate_field("description")); - } - field_description = Some(map.next_value()?); - } - _ => { - // unknown field allowed and ignored - map.next_value::<::serde_json::Value>()?; - } - } - } - if optional && nothing { - return Ok(None); - } - let result = PaperContentRenameType { - description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, - }; - Ok(Some(result)) - } - - pub(crate) fn internal_serialize( - &self, - s: &mut S::SerializeStruct, - ) -> Result<(), S::Error> { - use serde::ser::SerializeStruct; - s.serialize_field("description", &self.description)?; - Ok(()) - } -} - -impl<'de> ::serde::de::Deserialize<'de> for PaperContentRenameType { - fn deserialize>(deserializer: D) -> Result { - // struct deserializer - use serde::de::{MapAccess, Visitor}; - struct StructVisitor; - impl<'de> Visitor<'de> for StructVisitor { - type Value = PaperContentRenameType; - fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a PaperContentRenameType struct") - } - fn visit_map>(self, map: V) -> Result { - PaperContentRenameType::internal_deserialize(map) - } - } - deserializer.deserialize_struct("PaperContentRenameType", PAPER_CONTENT_RENAME_TYPE_FIELDS, StructVisitor) - } -} - -impl ::serde::ser::Serialize for PaperContentRenameType { - fn serialize(&self, serializer: S) -> Result { - // struct serializer - use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("PaperContentRenameType", 1)?; - self.internal_serialize::(&mut s)?; - s.end() - } -} - -/// Restored archived Paper doc/folder. -#[derive(Debug, Clone, PartialEq, Eq)] -#[non_exhaustive] // structs may have more fields added in the future. -pub struct PaperContentRestoreDetails { - /// Event unique identifier. - pub event_uuid: String, -} - -impl PaperContentRestoreDetails { - pub fn new(event_uuid: String) -> Self { - PaperContentRestoreDetails { - event_uuid, - } - } -} - -const PAPER_CONTENT_RESTORE_DETAILS_FIELDS: &[&str] = &["event_uuid"]; -impl PaperContentRestoreDetails { - pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( - map: V, - ) -> Result { - Self::internal_deserialize_opt(map, false).map(Option::unwrap) - } - - pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( - mut map: V, - optional: bool, - ) -> Result, V::Error> { - let mut field_event_uuid = None; - let mut nothing = true; - while let Some(key) = map.next_key::<&str>()? { - nothing = false; - match key { - "event_uuid" => { - if field_event_uuid.is_some() { - return Err(::serde::de::Error::duplicate_field("event_uuid")); + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); } - field_event_uuid = Some(map.next_value()?); + field_description = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -71961,8 +93340,8 @@ impl PaperContentRestoreDetails { if optional && nothing { return Ok(None); } - let result = PaperContentRestoreDetails { - event_uuid: field_event_uuid.ok_or_else(|| ::serde::de::Error::missing_field("event_uuid"))?, + let result = PaperFolderFollowedType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) } @@ -71972,75 +93351,88 @@ impl PaperContentRestoreDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("event_uuid", &self.event_uuid)?; + s.serialize_field("description", &self.description)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for PaperContentRestoreDetails { +impl<'de> ::serde::de::Deserialize<'de> for PaperFolderFollowedType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = PaperContentRestoreDetails; + type Value = PaperFolderFollowedType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a PaperContentRestoreDetails struct") + f.write_str("a PaperFolderFollowedType struct") } fn visit_map>(self, map: V) -> Result { - PaperContentRestoreDetails::internal_deserialize(map) + PaperFolderFollowedType::internal_deserialize(map) } } - deserializer.deserialize_struct("PaperContentRestoreDetails", PAPER_CONTENT_RESTORE_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("PaperFolderFollowedType", PAPER_FOLDER_FOLLOWED_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for PaperContentRestoreDetails { +impl ::serde::ser::Serialize for PaperFolderFollowedType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("PaperContentRestoreDetails", 1)?; + let mut s = serializer.serialize_struct("PaperFolderFollowedType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } +/// Paper folder's logged information. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct PaperContentRestoreType { - pub description: String, +pub struct PaperFolderLogInfo { + /// Papers folder Id. + pub folder_id: String, + /// Paper folder name. + pub folder_name: String, } -impl PaperContentRestoreType { - pub fn new(description: String) -> Self { - PaperContentRestoreType { - description, +impl PaperFolderLogInfo { + pub fn new(folder_id: String, folder_name: String) -> Self { + PaperFolderLogInfo { + folder_id, + folder_name, } } } -const PAPER_CONTENT_RESTORE_TYPE_FIELDS: &[&str] = &["description"]; -impl PaperContentRestoreType { +const PAPER_FOLDER_LOG_INFO_FIELDS: &[&str] = &["folder_id", + "folder_name"]; +impl PaperFolderLogInfo { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_description = None; + ) -> Result, V::Error> { + let mut field_folder_id = None; + let mut field_folder_name = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "description" => { - if field_description.is_some() { - return Err(::serde::de::Error::duplicate_field("description")); + "folder_id" => { + if field_folder_id.is_some() { + return Err(::serde::de::Error::duplicate_field("folder_id")); } - field_description = Some(map.next_value()?); + field_folder_id = Some(map.next_value()?); + } + "folder_name" => { + if field_folder_name.is_some() { + return Err(::serde::de::Error::duplicate_field("folder_name")); + } + field_folder_name = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -72051,8 +93443,9 @@ impl PaperContentRestoreType { if optional && nothing { return Ok(None); } - let result = PaperContentRestoreType { - description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + let result = PaperFolderLogInfo { + folder_id: field_folder_id.ok_or_else(|| ::serde::de::Error::missing_field("folder_id"))?, + folder_name: field_folder_name.ok_or_else(|| ::serde::de::Error::missing_field("folder_name"))?, }; Ok(Some(result)) } @@ -72062,155 +93455,78 @@ impl PaperContentRestoreType { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("description", &self.description)?; + s.serialize_field("folder_id", &self.folder_id)?; + s.serialize_field("folder_name", &self.folder_name)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for PaperContentRestoreType { +impl<'de> ::serde::de::Deserialize<'de> for PaperFolderLogInfo { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = PaperContentRestoreType; + type Value = PaperFolderLogInfo; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a PaperContentRestoreType struct") + f.write_str("a PaperFolderLogInfo struct") } fn visit_map>(self, map: V) -> Result { - PaperContentRestoreType::internal_deserialize(map) + PaperFolderLogInfo::internal_deserialize(map) } } - deserializer.deserialize_struct("PaperContentRestoreType", PAPER_CONTENT_RESTORE_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("PaperFolderLogInfo", PAPER_FOLDER_LOG_INFO_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for PaperContentRestoreType { +impl ::serde::ser::Serialize for PaperFolderLogInfo { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("PaperContentRestoreType", 1)?; + let mut s = serializer.serialize_struct("PaperFolderLogInfo", 2)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Policy to set default access for newly created Paper folders. -#[derive(Debug, Clone, PartialEq, Eq)] -#[non_exhaustive] // variants may be added in the future -pub enum PaperDefaultFolderPolicy { - EveryoneInTeam, - InviteOnly, - /// Catch-all used for unrecognized values returned from the server. Encountering this value - /// typically indicates that this SDK version is out of date. - Other, -} - -impl<'de> ::serde::de::Deserialize<'de> for PaperDefaultFolderPolicy { - fn deserialize>(deserializer: D) -> Result { - // union deserializer - use serde::de::{self, MapAccess, Visitor}; - struct EnumVisitor; - impl<'de> Visitor<'de> for EnumVisitor { - type Value = PaperDefaultFolderPolicy; - fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a PaperDefaultFolderPolicy structure") - } - fn visit_map>(self, mut map: V) -> Result { - let tag: &str = match map.next_key()? { - Some(".tag") => map.next_value()?, - _ => return Err(de::Error::missing_field(".tag")) - }; - let value = match tag { - "everyone_in_team" => PaperDefaultFolderPolicy::EveryoneInTeam, - "invite_only" => PaperDefaultFolderPolicy::InviteOnly, - _ => PaperDefaultFolderPolicy::Other, - }; - crate::eat_json_fields(&mut map)?; - Ok(value) - } - } - const VARIANTS: &[&str] = &["everyone_in_team", - "invite_only", - "other"]; - deserializer.deserialize_struct("PaperDefaultFolderPolicy", VARIANTS, EnumVisitor) - } -} - -impl ::serde::ser::Serialize for PaperDefaultFolderPolicy { - fn serialize(&self, serializer: S) -> Result { - // union serializer - use serde::ser::SerializeStruct; - match self { - PaperDefaultFolderPolicy::EveryoneInTeam => { - // unit - let mut s = serializer.serialize_struct("PaperDefaultFolderPolicy", 1)?; - s.serialize_field(".tag", "everyone_in_team")?; - s.end() - } - PaperDefaultFolderPolicy::InviteOnly => { - // unit - let mut s = serializer.serialize_struct("PaperDefaultFolderPolicy", 1)?; - s.serialize_field(".tag", "invite_only")?; - s.end() - } - PaperDefaultFolderPolicy::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) - } - } -} - -/// Changed Paper Default Folder Policy setting for team. +/// Shared Paper folder with users and/or groups. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct PaperDefaultFolderPolicyChangedDetails { - /// New Paper Default Folder Policy. - pub new_value: PaperDefaultFolderPolicy, - /// Previous Paper Default Folder Policy. - pub previous_value: PaperDefaultFolderPolicy, +pub struct PaperFolderTeamInviteDetails { + /// Event unique identifier. + pub event_uuid: String, } -impl PaperDefaultFolderPolicyChangedDetails { - pub fn new( - new_value: PaperDefaultFolderPolicy, - previous_value: PaperDefaultFolderPolicy, - ) -> Self { - PaperDefaultFolderPolicyChangedDetails { - new_value, - previous_value, +impl PaperFolderTeamInviteDetails { + pub fn new(event_uuid: String) -> Self { + PaperFolderTeamInviteDetails { + event_uuid, } } } -const PAPER_DEFAULT_FOLDER_POLICY_CHANGED_DETAILS_FIELDS: &[&str] = &["new_value", - "previous_value"]; -impl PaperDefaultFolderPolicyChangedDetails { +const PAPER_FOLDER_TEAM_INVITE_DETAILS_FIELDS: &[&str] = &["event_uuid"]; +impl PaperFolderTeamInviteDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_new_value = None; - let mut field_previous_value = None; + ) -> Result, V::Error> { + let mut field_event_uuid = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "new_value" => { - if field_new_value.is_some() { - return Err(::serde::de::Error::duplicate_field("new_value")); - } - field_new_value = Some(map.next_value()?); - } - "previous_value" => { - if field_previous_value.is_some() { - return Err(::serde::de::Error::duplicate_field("previous_value")); + "event_uuid" => { + if field_event_uuid.is_some() { + return Err(::serde::de::Error::duplicate_field("event_uuid")); } - field_previous_value = Some(map.next_value()?); + field_event_uuid = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -72221,9 +93537,8 @@ impl PaperDefaultFolderPolicyChangedDetails { if optional && nothing { return Ok(None); } - let result = PaperDefaultFolderPolicyChangedDetails { - new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, - previous_value: field_previous_value.ok_or_else(|| ::serde::de::Error::missing_field("previous_value"))?, + let result = PaperFolderTeamInviteDetails { + event_uuid: field_event_uuid.ok_or_else(|| ::serde::de::Error::missing_field("event_uuid"))?, }; Ok(Some(result)) } @@ -72233,35 +93548,34 @@ impl PaperDefaultFolderPolicyChangedDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("new_value", &self.new_value)?; - s.serialize_field("previous_value", &self.previous_value)?; + s.serialize_field("event_uuid", &self.event_uuid)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for PaperDefaultFolderPolicyChangedDetails { +impl<'de> ::serde::de::Deserialize<'de> for PaperFolderTeamInviteDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = PaperDefaultFolderPolicyChangedDetails; + type Value = PaperFolderTeamInviteDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a PaperDefaultFolderPolicyChangedDetails struct") + f.write_str("a PaperFolderTeamInviteDetails struct") } fn visit_map>(self, map: V) -> Result { - PaperDefaultFolderPolicyChangedDetails::internal_deserialize(map) + PaperFolderTeamInviteDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("PaperDefaultFolderPolicyChangedDetails", PAPER_DEFAULT_FOLDER_POLICY_CHANGED_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("PaperFolderTeamInviteDetails", PAPER_FOLDER_TEAM_INVITE_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for PaperDefaultFolderPolicyChangedDetails { +impl ::serde::ser::Serialize for PaperFolderTeamInviteDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("PaperDefaultFolderPolicyChangedDetails", 2)?; + let mut s = serializer.serialize_struct("PaperFolderTeamInviteDetails", 1)?; self.internal_serialize::(&mut s)?; s.end() } @@ -72269,30 +93583,30 @@ impl ::serde::ser::Serialize for PaperDefaultFolderPolicyChangedDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct PaperDefaultFolderPolicyChangedType { +pub struct PaperFolderTeamInviteType { pub description: String, } -impl PaperDefaultFolderPolicyChangedType { +impl PaperFolderTeamInviteType { pub fn new(description: String) -> Self { - PaperDefaultFolderPolicyChangedType { + PaperFolderTeamInviteType { description, } } } -const PAPER_DEFAULT_FOLDER_POLICY_CHANGED_TYPE_FIELDS: &[&str] = &["description"]; -impl PaperDefaultFolderPolicyChangedType { +const PAPER_FOLDER_TEAM_INVITE_TYPE_FIELDS: &[&str] = &["description"]; +impl PaperFolderTeamInviteType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -72313,7 +93627,7 @@ impl PaperDefaultFolderPolicyChangedType { if optional && nothing { return Ok(None); } - let result = PaperDefaultFolderPolicyChangedType { + let result = PaperFolderTeamInviteType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -72329,54 +93643,55 @@ impl PaperDefaultFolderPolicyChangedType { } } -impl<'de> ::serde::de::Deserialize<'de> for PaperDefaultFolderPolicyChangedType { +impl<'de> ::serde::de::Deserialize<'de> for PaperFolderTeamInviteType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = PaperDefaultFolderPolicyChangedType; + type Value = PaperFolderTeamInviteType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a PaperDefaultFolderPolicyChangedType struct") + f.write_str("a PaperFolderTeamInviteType struct") } fn visit_map>(self, map: V) -> Result { - PaperDefaultFolderPolicyChangedType::internal_deserialize(map) + PaperFolderTeamInviteType::internal_deserialize(map) } } - deserializer.deserialize_struct("PaperDefaultFolderPolicyChangedType", PAPER_DEFAULT_FOLDER_POLICY_CHANGED_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("PaperFolderTeamInviteType", PAPER_FOLDER_TEAM_INVITE_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for PaperDefaultFolderPolicyChangedType { +impl ::serde::ser::Serialize for PaperFolderTeamInviteType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("PaperDefaultFolderPolicyChangedType", 1)?; + let mut s = serializer.serialize_struct("PaperFolderTeamInviteType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Policy for controlling if team members can use Paper Desktop +/// Policy for controlling if team members can share Paper documents externally. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // variants may be added in the future -pub enum PaperDesktopPolicy { - Disabled, - Enabled, +pub enum PaperMemberPolicy { + AnyoneWithLink, + OnlyTeam, + TeamAndExplicitlyShared, /// Catch-all used for unrecognized values returned from the server. Encountering this value /// typically indicates that this SDK version is out of date. Other, } -impl<'de> ::serde::de::Deserialize<'de> for PaperDesktopPolicy { +impl<'de> ::serde::de::Deserialize<'de> for PaperMemberPolicy { fn deserialize>(deserializer: D) -> Result { // union deserializer use serde::de::{self, MapAccess, Visitor}; struct EnumVisitor; impl<'de> Visitor<'de> for EnumVisitor { - type Value = PaperDesktopPolicy; + type Value = PaperMemberPolicy; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a PaperDesktopPolicy structure") + f.write_str("a PaperMemberPolicy structure") } fn visit_map>(self, mut map: V) -> Result { let tag: &str = match map.next_key()? { @@ -72384,92 +93699,115 @@ impl<'de> ::serde::de::Deserialize<'de> for PaperDesktopPolicy { _ => return Err(de::Error::missing_field(".tag")) }; let value = match tag { - "disabled" => PaperDesktopPolicy::Disabled, - "enabled" => PaperDesktopPolicy::Enabled, - _ => PaperDesktopPolicy::Other, + "anyone_with_link" => PaperMemberPolicy::AnyoneWithLink, + "only_team" => PaperMemberPolicy::OnlyTeam, + "team_and_explicitly_shared" => PaperMemberPolicy::TeamAndExplicitlyShared, + _ => PaperMemberPolicy::Other, }; crate::eat_json_fields(&mut map)?; Ok(value) } } - const VARIANTS: &[&str] = &["disabled", - "enabled", + const VARIANTS: &[&str] = &["anyone_with_link", + "only_team", + "team_and_explicitly_shared", "other"]; - deserializer.deserialize_struct("PaperDesktopPolicy", VARIANTS, EnumVisitor) + deserializer.deserialize_struct("PaperMemberPolicy", VARIANTS, EnumVisitor) } } -impl ::serde::ser::Serialize for PaperDesktopPolicy { +impl ::serde::ser::Serialize for PaperMemberPolicy { fn serialize(&self, serializer: S) -> Result { // union serializer use serde::ser::SerializeStruct; match self { - PaperDesktopPolicy::Disabled => { + PaperMemberPolicy::AnyoneWithLink => { // unit - let mut s = serializer.serialize_struct("PaperDesktopPolicy", 1)?; - s.serialize_field(".tag", "disabled")?; + let mut s = serializer.serialize_struct("PaperMemberPolicy", 1)?; + s.serialize_field(".tag", "anyone_with_link")?; s.end() } - PaperDesktopPolicy::Enabled => { + PaperMemberPolicy::OnlyTeam => { // unit - let mut s = serializer.serialize_struct("PaperDesktopPolicy", 1)?; - s.serialize_field(".tag", "enabled")?; + let mut s = serializer.serialize_struct("PaperMemberPolicy", 1)?; + s.serialize_field(".tag", "only_team")?; s.end() } - PaperDesktopPolicy::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) + PaperMemberPolicy::TeamAndExplicitlyShared => { + // unit + let mut s = serializer.serialize_struct("PaperMemberPolicy", 1)?; + s.serialize_field(".tag", "team_and_explicitly_shared")?; + s.end() + } + PaperMemberPolicy::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) } } } -/// Enabled/disabled Paper Desktop for team. +/// Changed permissions for published doc. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct PaperDesktopPolicyChangedDetails { - /// New Paper Desktop policy. - pub new_value: PaperDesktopPolicy, - /// Previous Paper Desktop policy. - pub previous_value: PaperDesktopPolicy, +pub struct PaperPublishedLinkChangePermissionDetails { + /// Event unique identifier. + pub event_uuid: String, + /// New permission level. + pub new_permission_level: String, + /// Previous permission level. + pub previous_permission_level: String, } -impl PaperDesktopPolicyChangedDetails { - pub fn new(new_value: PaperDesktopPolicy, previous_value: PaperDesktopPolicy) -> Self { - PaperDesktopPolicyChangedDetails { - new_value, - previous_value, +impl PaperPublishedLinkChangePermissionDetails { + pub fn new( + event_uuid: String, + new_permission_level: String, + previous_permission_level: String, + ) -> Self { + PaperPublishedLinkChangePermissionDetails { + event_uuid, + new_permission_level, + previous_permission_level, } } } -const PAPER_DESKTOP_POLICY_CHANGED_DETAILS_FIELDS: &[&str] = &["new_value", - "previous_value"]; -impl PaperDesktopPolicyChangedDetails { +const PAPER_PUBLISHED_LINK_CHANGE_PERMISSION_DETAILS_FIELDS: &[&str] = &["event_uuid", + "new_permission_level", + "previous_permission_level"]; +impl PaperPublishedLinkChangePermissionDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_new_value = None; - let mut field_previous_value = None; + ) -> Result, V::Error> { + let mut field_event_uuid = None; + let mut field_new_permission_level = None; + let mut field_previous_permission_level = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "new_value" => { - if field_new_value.is_some() { - return Err(::serde::de::Error::duplicate_field("new_value")); + "event_uuid" => { + if field_event_uuid.is_some() { + return Err(::serde::de::Error::duplicate_field("event_uuid")); } - field_new_value = Some(map.next_value()?); + field_event_uuid = Some(map.next_value()?); } - "previous_value" => { - if field_previous_value.is_some() { - return Err(::serde::de::Error::duplicate_field("previous_value")); + "new_permission_level" => { + if field_new_permission_level.is_some() { + return Err(::serde::de::Error::duplicate_field("new_permission_level")); } - field_previous_value = Some(map.next_value()?); + field_new_permission_level = Some(map.next_value()?); + } + "previous_permission_level" => { + if field_previous_permission_level.is_some() { + return Err(::serde::de::Error::duplicate_field("previous_permission_level")); + } + field_previous_permission_level = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -72480,9 +93818,10 @@ impl PaperDesktopPolicyChangedDetails { if optional && nothing { return Ok(None); } - let result = PaperDesktopPolicyChangedDetails { - new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, - previous_value: field_previous_value.ok_or_else(|| ::serde::de::Error::missing_field("previous_value"))?, + let result = PaperPublishedLinkChangePermissionDetails { + event_uuid: field_event_uuid.ok_or_else(|| ::serde::de::Error::missing_field("event_uuid"))?, + new_permission_level: field_new_permission_level.ok_or_else(|| ::serde::de::Error::missing_field("new_permission_level"))?, + previous_permission_level: field_previous_permission_level.ok_or_else(|| ::serde::de::Error::missing_field("previous_permission_level"))?, }; Ok(Some(result)) } @@ -72492,35 +93831,36 @@ impl PaperDesktopPolicyChangedDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("new_value", &self.new_value)?; - s.serialize_field("previous_value", &self.previous_value)?; + s.serialize_field("event_uuid", &self.event_uuid)?; + s.serialize_field("new_permission_level", &self.new_permission_level)?; + s.serialize_field("previous_permission_level", &self.previous_permission_level)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for PaperDesktopPolicyChangedDetails { +impl<'de> ::serde::de::Deserialize<'de> for PaperPublishedLinkChangePermissionDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = PaperDesktopPolicyChangedDetails; + type Value = PaperPublishedLinkChangePermissionDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a PaperDesktopPolicyChangedDetails struct") + f.write_str("a PaperPublishedLinkChangePermissionDetails struct") } fn visit_map>(self, map: V) -> Result { - PaperDesktopPolicyChangedDetails::internal_deserialize(map) + PaperPublishedLinkChangePermissionDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("PaperDesktopPolicyChangedDetails", PAPER_DESKTOP_POLICY_CHANGED_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("PaperPublishedLinkChangePermissionDetails", PAPER_PUBLISHED_LINK_CHANGE_PERMISSION_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for PaperDesktopPolicyChangedDetails { +impl ::serde::ser::Serialize for PaperPublishedLinkChangePermissionDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("PaperDesktopPolicyChangedDetails", 2)?; + let mut s = serializer.serialize_struct("PaperPublishedLinkChangePermissionDetails", 3)?; self.internal_serialize::(&mut s)?; s.end() } @@ -72528,30 +93868,30 @@ impl ::serde::ser::Serialize for PaperDesktopPolicyChangedDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct PaperDesktopPolicyChangedType { +pub struct PaperPublishedLinkChangePermissionType { pub description: String, } -impl PaperDesktopPolicyChangedType { +impl PaperPublishedLinkChangePermissionType { pub fn new(description: String) -> Self { - PaperDesktopPolicyChangedType { + PaperPublishedLinkChangePermissionType { description, } } } -const PAPER_DESKTOP_POLICY_CHANGED_TYPE_FIELDS: &[&str] = &["description"]; -impl PaperDesktopPolicyChangedType { +const PAPER_PUBLISHED_LINK_CHANGE_PERMISSION_TYPE_FIELDS: &[&str] = &["description"]; +impl PaperPublishedLinkChangePermissionType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -72572,7 +93912,7 @@ impl PaperDesktopPolicyChangedType { if optional && nothing { return Ok(None); } - let result = PaperDesktopPolicyChangedType { + let result = PaperPublishedLinkChangePermissionType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -72588,73 +93928,63 @@ impl PaperDesktopPolicyChangedType { } } -impl<'de> ::serde::de::Deserialize<'de> for PaperDesktopPolicyChangedType { +impl<'de> ::serde::de::Deserialize<'de> for PaperPublishedLinkChangePermissionType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = PaperDesktopPolicyChangedType; + type Value = PaperPublishedLinkChangePermissionType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a PaperDesktopPolicyChangedType struct") + f.write_str("a PaperPublishedLinkChangePermissionType struct") } fn visit_map>(self, map: V) -> Result { - PaperDesktopPolicyChangedType::internal_deserialize(map) + PaperPublishedLinkChangePermissionType::internal_deserialize(map) } } - deserializer.deserialize_struct("PaperDesktopPolicyChangedType", PAPER_DESKTOP_POLICY_CHANGED_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("PaperPublishedLinkChangePermissionType", PAPER_PUBLISHED_LINK_CHANGE_PERMISSION_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for PaperDesktopPolicyChangedType { +impl ::serde::ser::Serialize for PaperPublishedLinkChangePermissionType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("PaperDesktopPolicyChangedType", 1)?; + let mut s = serializer.serialize_struct("PaperPublishedLinkChangePermissionType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Added Paper doc comment. +/// Published doc. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct PaperDocAddCommentDetails { +pub struct PaperPublishedLinkCreateDetails { /// Event unique identifier. pub event_uuid: String, - /// Comment text. - pub comment_text: Option, } -impl PaperDocAddCommentDetails { +impl PaperPublishedLinkCreateDetails { pub fn new(event_uuid: String) -> Self { - PaperDocAddCommentDetails { + PaperPublishedLinkCreateDetails { event_uuid, - comment_text: None, } } - - pub fn with_comment_text(mut self, value: String) -> Self { - self.comment_text = Some(value); - self - } } -const PAPER_DOC_ADD_COMMENT_DETAILS_FIELDS: &[&str] = &["event_uuid", - "comment_text"]; -impl PaperDocAddCommentDetails { +const PAPER_PUBLISHED_LINK_CREATE_DETAILS_FIELDS: &[&str] = &["event_uuid"]; +impl PaperPublishedLinkCreateDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_event_uuid = None; - let mut field_comment_text = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; @@ -72665,12 +93995,6 @@ impl PaperDocAddCommentDetails { } field_event_uuid = Some(map.next_value()?); } - "comment_text" => { - if field_comment_text.is_some() { - return Err(::serde::de::Error::duplicate_field("comment_text")); - } - field_comment_text = Some(map.next_value()?); - } _ => { // unknown field allowed and ignored map.next_value::<::serde_json::Value>()?; @@ -72680,9 +94004,8 @@ impl PaperDocAddCommentDetails { if optional && nothing { return Ok(None); } - let result = PaperDocAddCommentDetails { + let result = PaperPublishedLinkCreateDetails { event_uuid: field_event_uuid.ok_or_else(|| ::serde::de::Error::missing_field("event_uuid"))?, - comment_text: field_comment_text.and_then(Option::flatten), }; Ok(Some(result)) } @@ -72693,36 +94016,33 @@ impl PaperDocAddCommentDetails { ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; s.serialize_field("event_uuid", &self.event_uuid)?; - if let Some(val) = &self.comment_text { - s.serialize_field("comment_text", val)?; - } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for PaperDocAddCommentDetails { +impl<'de> ::serde::de::Deserialize<'de> for PaperPublishedLinkCreateDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = PaperDocAddCommentDetails; + type Value = PaperPublishedLinkCreateDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a PaperDocAddCommentDetails struct") + f.write_str("a PaperPublishedLinkCreateDetails struct") } fn visit_map>(self, map: V) -> Result { - PaperDocAddCommentDetails::internal_deserialize(map) + PaperPublishedLinkCreateDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("PaperDocAddCommentDetails", PAPER_DOC_ADD_COMMENT_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("PaperPublishedLinkCreateDetails", PAPER_PUBLISHED_LINK_CREATE_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for PaperDocAddCommentDetails { +impl ::serde::ser::Serialize for PaperPublishedLinkCreateDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("PaperDocAddCommentDetails", 2)?; + let mut s = serializer.serialize_struct("PaperPublishedLinkCreateDetails", 1)?; self.internal_serialize::(&mut s)?; s.end() } @@ -72730,30 +94050,30 @@ impl ::serde::ser::Serialize for PaperDocAddCommentDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct PaperDocAddCommentType { +pub struct PaperPublishedLinkCreateType { pub description: String, } -impl PaperDocAddCommentType { +impl PaperPublishedLinkCreateType { pub fn new(description: String) -> Self { - PaperDocAddCommentType { + PaperPublishedLinkCreateType { description, } } } -const PAPER_DOC_ADD_COMMENT_TYPE_FIELDS: &[&str] = &["description"]; -impl PaperDocAddCommentType { +const PAPER_PUBLISHED_LINK_CREATE_TYPE_FIELDS: &[&str] = &["description"]; +impl PaperPublishedLinkCreateType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -72774,7 +94094,7 @@ impl PaperDocAddCommentType { if optional && nothing { return Ok(None); } - let result = PaperDocAddCommentType { + let result = PaperPublishedLinkCreateType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -72790,68 +94110,63 @@ impl PaperDocAddCommentType { } } -impl<'de> ::serde::de::Deserialize<'de> for PaperDocAddCommentType { +impl<'de> ::serde::de::Deserialize<'de> for PaperPublishedLinkCreateType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = PaperDocAddCommentType; + type Value = PaperPublishedLinkCreateType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a PaperDocAddCommentType struct") + f.write_str("a PaperPublishedLinkCreateType struct") } fn visit_map>(self, map: V) -> Result { - PaperDocAddCommentType::internal_deserialize(map) + PaperPublishedLinkCreateType::internal_deserialize(map) } } - deserializer.deserialize_struct("PaperDocAddCommentType", PAPER_DOC_ADD_COMMENT_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("PaperPublishedLinkCreateType", PAPER_PUBLISHED_LINK_CREATE_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for PaperDocAddCommentType { +impl ::serde::ser::Serialize for PaperPublishedLinkCreateType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("PaperDocAddCommentType", 1)?; + let mut s = serializer.serialize_struct("PaperPublishedLinkCreateType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Changed member permissions for Paper doc. +/// Unpublished doc. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct PaperDocChangeMemberRoleDetails { +pub struct PaperPublishedLinkDisabledDetails { /// Event unique identifier. pub event_uuid: String, - /// Paper doc access type. - pub access_type: PaperAccessType, } -impl PaperDocChangeMemberRoleDetails { - pub fn new(event_uuid: String, access_type: PaperAccessType) -> Self { - PaperDocChangeMemberRoleDetails { +impl PaperPublishedLinkDisabledDetails { + pub fn new(event_uuid: String) -> Self { + PaperPublishedLinkDisabledDetails { event_uuid, - access_type, } } } -const PAPER_DOC_CHANGE_MEMBER_ROLE_DETAILS_FIELDS: &[&str] = &["event_uuid", - "access_type"]; -impl PaperDocChangeMemberRoleDetails { +const PAPER_PUBLISHED_LINK_DISABLED_DETAILS_FIELDS: &[&str] = &["event_uuid"]; +impl PaperPublishedLinkDisabledDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_event_uuid = None; - let mut field_access_type = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; @@ -72862,12 +94177,6 @@ impl PaperDocChangeMemberRoleDetails { } field_event_uuid = Some(map.next_value()?); } - "access_type" => { - if field_access_type.is_some() { - return Err(::serde::de::Error::duplicate_field("access_type")); - } - field_access_type = Some(map.next_value()?); - } _ => { // unknown field allowed and ignored map.next_value::<::serde_json::Value>()?; @@ -72877,9 +94186,8 @@ impl PaperDocChangeMemberRoleDetails { if optional && nothing { return Ok(None); } - let result = PaperDocChangeMemberRoleDetails { + let result = PaperPublishedLinkDisabledDetails { event_uuid: field_event_uuid.ok_or_else(|| ::serde::de::Error::missing_field("event_uuid"))?, - access_type: field_access_type.ok_or_else(|| ::serde::de::Error::missing_field("access_type"))?, }; Ok(Some(result)) } @@ -72890,34 +94198,33 @@ impl PaperDocChangeMemberRoleDetails { ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; s.serialize_field("event_uuid", &self.event_uuid)?; - s.serialize_field("access_type", &self.access_type)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for PaperDocChangeMemberRoleDetails { +impl<'de> ::serde::de::Deserialize<'de> for PaperPublishedLinkDisabledDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = PaperDocChangeMemberRoleDetails; + type Value = PaperPublishedLinkDisabledDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a PaperDocChangeMemberRoleDetails struct") + f.write_str("a PaperPublishedLinkDisabledDetails struct") } fn visit_map>(self, map: V) -> Result { - PaperDocChangeMemberRoleDetails::internal_deserialize(map) + PaperPublishedLinkDisabledDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("PaperDocChangeMemberRoleDetails", PAPER_DOC_CHANGE_MEMBER_ROLE_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("PaperPublishedLinkDisabledDetails", PAPER_PUBLISHED_LINK_DISABLED_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for PaperDocChangeMemberRoleDetails { +impl ::serde::ser::Serialize for PaperPublishedLinkDisabledDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("PaperDocChangeMemberRoleDetails", 2)?; + let mut s = serializer.serialize_struct("PaperPublishedLinkDisabledDetails", 1)?; self.internal_serialize::(&mut s)?; s.end() } @@ -72925,30 +94232,30 @@ impl ::serde::ser::Serialize for PaperDocChangeMemberRoleDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct PaperDocChangeMemberRoleType { +pub struct PaperPublishedLinkDisabledType { pub description: String, } -impl PaperDocChangeMemberRoleType { +impl PaperPublishedLinkDisabledType { pub fn new(description: String) -> Self { - PaperDocChangeMemberRoleType { + PaperPublishedLinkDisabledType { description, } } } -const PAPER_DOC_CHANGE_MEMBER_ROLE_TYPE_FIELDS: &[&str] = &["description"]; -impl PaperDocChangeMemberRoleType { +const PAPER_PUBLISHED_LINK_DISABLED_TYPE_FIELDS: &[&str] = &["description"]; +impl PaperPublishedLinkDisabledType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -72969,7 +94276,7 @@ impl PaperDocChangeMemberRoleType { if optional && nothing { return Ok(None); } - let result = PaperDocChangeMemberRoleType { + let result = PaperPublishedLinkDisabledType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -72985,83 +94292,63 @@ impl PaperDocChangeMemberRoleType { } } -impl<'de> ::serde::de::Deserialize<'de> for PaperDocChangeMemberRoleType { +impl<'de> ::serde::de::Deserialize<'de> for PaperPublishedLinkDisabledType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = PaperDocChangeMemberRoleType; + type Value = PaperPublishedLinkDisabledType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a PaperDocChangeMemberRoleType struct") + f.write_str("a PaperPublishedLinkDisabledType struct") } fn visit_map>(self, map: V) -> Result { - PaperDocChangeMemberRoleType::internal_deserialize(map) + PaperPublishedLinkDisabledType::internal_deserialize(map) } } - deserializer.deserialize_struct("PaperDocChangeMemberRoleType", PAPER_DOC_CHANGE_MEMBER_ROLE_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("PaperPublishedLinkDisabledType", PAPER_PUBLISHED_LINK_DISABLED_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for PaperDocChangeMemberRoleType { +impl ::serde::ser::Serialize for PaperPublishedLinkDisabledType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("PaperDocChangeMemberRoleType", 1)?; + let mut s = serializer.serialize_struct("PaperPublishedLinkDisabledType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Changed sharing setting for Paper doc. +/// Viewed published doc. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct PaperDocChangeSharingPolicyDetails { +pub struct PaperPublishedLinkViewDetails { /// Event unique identifier. pub event_uuid: String, - /// Sharing policy with external users. - pub public_sharing_policy: Option, - /// Sharing policy with team. - pub team_sharing_policy: Option, } -impl PaperDocChangeSharingPolicyDetails { +impl PaperPublishedLinkViewDetails { pub fn new(event_uuid: String) -> Self { - PaperDocChangeSharingPolicyDetails { + PaperPublishedLinkViewDetails { event_uuid, - public_sharing_policy: None, - team_sharing_policy: None, } } - - pub fn with_public_sharing_policy(mut self, value: String) -> Self { - self.public_sharing_policy = Some(value); - self - } - - pub fn with_team_sharing_policy(mut self, value: String) -> Self { - self.team_sharing_policy = Some(value); - self - } } -const PAPER_DOC_CHANGE_SHARING_POLICY_DETAILS_FIELDS: &[&str] = &["event_uuid", - "public_sharing_policy", - "team_sharing_policy"]; -impl PaperDocChangeSharingPolicyDetails { +const PAPER_PUBLISHED_LINK_VIEW_DETAILS_FIELDS: &[&str] = &["event_uuid"]; +impl PaperPublishedLinkViewDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_event_uuid = None; - let mut field_public_sharing_policy = None; - let mut field_team_sharing_policy = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; @@ -73072,18 +94359,6 @@ impl PaperDocChangeSharingPolicyDetails { } field_event_uuid = Some(map.next_value()?); } - "public_sharing_policy" => { - if field_public_sharing_policy.is_some() { - return Err(::serde::de::Error::duplicate_field("public_sharing_policy")); - } - field_public_sharing_policy = Some(map.next_value()?); - } - "team_sharing_policy" => { - if field_team_sharing_policy.is_some() { - return Err(::serde::de::Error::duplicate_field("team_sharing_policy")); - } - field_team_sharing_policy = Some(map.next_value()?); - } _ => { // unknown field allowed and ignored map.next_value::<::serde_json::Value>()?; @@ -73093,10 +94368,8 @@ impl PaperDocChangeSharingPolicyDetails { if optional && nothing { return Ok(None); } - let result = PaperDocChangeSharingPolicyDetails { + let result = PaperPublishedLinkViewDetails { event_uuid: field_event_uuid.ok_or_else(|| ::serde::de::Error::missing_field("event_uuid"))?, - public_sharing_policy: field_public_sharing_policy.and_then(Option::flatten), - team_sharing_policy: field_team_sharing_policy.and_then(Option::flatten), }; Ok(Some(result)) } @@ -73107,39 +94380,33 @@ impl PaperDocChangeSharingPolicyDetails { ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; s.serialize_field("event_uuid", &self.event_uuid)?; - if let Some(val) = &self.public_sharing_policy { - s.serialize_field("public_sharing_policy", val)?; - } - if let Some(val) = &self.team_sharing_policy { - s.serialize_field("team_sharing_policy", val)?; - } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for PaperDocChangeSharingPolicyDetails { +impl<'de> ::serde::de::Deserialize<'de> for PaperPublishedLinkViewDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = PaperDocChangeSharingPolicyDetails; + type Value = PaperPublishedLinkViewDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a PaperDocChangeSharingPolicyDetails struct") + f.write_str("a PaperPublishedLinkViewDetails struct") } fn visit_map>(self, map: V) -> Result { - PaperDocChangeSharingPolicyDetails::internal_deserialize(map) + PaperPublishedLinkViewDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("PaperDocChangeSharingPolicyDetails", PAPER_DOC_CHANGE_SHARING_POLICY_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("PaperPublishedLinkViewDetails", PAPER_PUBLISHED_LINK_VIEW_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for PaperDocChangeSharingPolicyDetails { +impl ::serde::ser::Serialize for PaperPublishedLinkViewDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("PaperDocChangeSharingPolicyDetails", 3)?; + let mut s = serializer.serialize_struct("PaperPublishedLinkViewDetails", 1)?; self.internal_serialize::(&mut s)?; s.end() } @@ -73147,30 +94414,30 @@ impl ::serde::ser::Serialize for PaperDocChangeSharingPolicyDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct PaperDocChangeSharingPolicyType { +pub struct PaperPublishedLinkViewType { pub description: String, } -impl PaperDocChangeSharingPolicyType { +impl PaperPublishedLinkViewType { pub fn new(description: String) -> Self { - PaperDocChangeSharingPolicyType { + PaperPublishedLinkViewType { description, } } } -const PAPER_DOC_CHANGE_SHARING_POLICY_TYPE_FIELDS: &[&str] = &["description"]; -impl PaperDocChangeSharingPolicyType { +const PAPER_PUBLISHED_LINK_VIEW_TYPE_FIELDS: &[&str] = &["description"]; +impl PaperPublishedLinkViewType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -73191,7 +94458,7 @@ impl PaperDocChangeSharingPolicyType { if optional && nothing { return Ok(None); } - let result = PaperDocChangeSharingPolicyType { + let result = PaperPublishedLinkViewType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -73207,185 +94474,250 @@ impl PaperDocChangeSharingPolicyType { } } -impl<'de> ::serde::de::Deserialize<'de> for PaperDocChangeSharingPolicyType { +impl<'de> ::serde::de::Deserialize<'de> for PaperPublishedLinkViewType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = PaperDocChangeSharingPolicyType; + type Value = PaperPublishedLinkViewType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a PaperDocChangeSharingPolicyType struct") + f.write_str("a PaperPublishedLinkViewType struct") } fn visit_map>(self, map: V) -> Result { - PaperDocChangeSharingPolicyType::internal_deserialize(map) + PaperPublishedLinkViewType::internal_deserialize(map) } } - deserializer.deserialize_struct("PaperDocChangeSharingPolicyType", PAPER_DOC_CHANGE_SHARING_POLICY_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("PaperPublishedLinkViewType", PAPER_PUBLISHED_LINK_VIEW_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for PaperDocChangeSharingPolicyType { +impl ::serde::ser::Serialize for PaperPublishedLinkViewType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("PaperDocChangeSharingPolicyType", 1)?; + let mut s = serializer.serialize_struct("PaperPublishedLinkViewType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Followed/unfollowed Paper doc. +/// A user or group #[derive(Debug, Clone, PartialEq, Eq)] -#[non_exhaustive] // structs may have more fields added in the future. -pub struct PaperDocChangeSubscriptionDetails { - /// Event unique identifier. - pub event_uuid: String, - /// New doc subscription level. - pub new_subscription_level: String, - /// Previous doc subscription level. Might be missing due to historical data gap. - pub previous_subscription_level: Option, +#[non_exhaustive] // variants may be added in the future +pub enum ParticipantLogInfo { + /// Group details. + Group(GroupLogInfo), + /// A user with a Dropbox account. + User(UserLogInfo), + /// Catch-all used for unrecognized values returned from the server. Encountering this value + /// typically indicates that this SDK version is out of date. + Other, } -impl PaperDocChangeSubscriptionDetails { - pub fn new(event_uuid: String, new_subscription_level: String) -> Self { - PaperDocChangeSubscriptionDetails { - event_uuid, - new_subscription_level, - previous_subscription_level: None, +impl<'de> ::serde::de::Deserialize<'de> for ParticipantLogInfo { + fn deserialize>(deserializer: D) -> Result { + // union deserializer + use serde::de::{self, MapAccess, Visitor}; + struct EnumVisitor; + impl<'de> Visitor<'de> for EnumVisitor { + type Value = ParticipantLogInfo; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a ParticipantLogInfo structure") + } + fn visit_map>(self, mut map: V) -> Result { + let tag: &str = match map.next_key()? { + Some(".tag") => map.next_value()?, + _ => return Err(de::Error::missing_field(".tag")) + }; + let value = match tag { + "group" => ParticipantLogInfo::Group(GroupLogInfo::internal_deserialize(&mut map)?), + "user" => { + match map.next_key()? { + Some("user") => ParticipantLogInfo::User(map.next_value()?), + None => return Err(de::Error::missing_field("user")), + _ => return Err(de::Error::unknown_field(tag, VARIANTS)) + } + } + _ => ParticipantLogInfo::Other, + }; + crate::eat_json_fields(&mut map)?; + Ok(value) + } } + const VARIANTS: &[&str] = &["group", + "user", + "other"]; + deserializer.deserialize_struct("ParticipantLogInfo", VARIANTS, EnumVisitor) } +} - pub fn with_previous_subscription_level(mut self, value: String) -> Self { - self.previous_subscription_level = Some(value); - self +impl ::serde::ser::Serialize for ParticipantLogInfo { + fn serialize(&self, serializer: S) -> Result { + // union serializer + use serde::ser::SerializeStruct; + match self { + ParticipantLogInfo::Group(x) => { + // struct + let mut s = serializer.serialize_struct("ParticipantLogInfo", 4)?; + s.serialize_field(".tag", "group")?; + x.internal_serialize::(&mut s)?; + s.end() + } + ParticipantLogInfo::User(x) => { + // union or polymporphic struct + let mut s = serializer.serialize_struct("ParticipantLogInfo", 2)?; + s.serialize_field(".tag", "user")?; + s.serialize_field("user", x)?; + s.end() + } + ParticipantLogInfo::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) + } } } -const PAPER_DOC_CHANGE_SUBSCRIPTION_DETAILS_FIELDS: &[&str] = &["event_uuid", - "new_subscription_level", - "previous_subscription_level"]; -impl PaperDocChangeSubscriptionDetails { - pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( - map: V, - ) -> Result { - Self::internal_deserialize_opt(map, false).map(Option::unwrap) - } +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // variants may be added in the future +pub enum PassPolicy { + Allow, + Disabled, + Enabled, + /// Catch-all used for unrecognized values returned from the server. Encountering this value + /// typically indicates that this SDK version is out of date. + Other, +} - pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( - mut map: V, - optional: bool, - ) -> Result, V::Error> { - let mut field_event_uuid = None; - let mut field_new_subscription_level = None; - let mut field_previous_subscription_level = None; - let mut nothing = true; - while let Some(key) = map.next_key::<&str>()? { - nothing = false; - match key { - "event_uuid" => { - if field_event_uuid.is_some() { - return Err(::serde::de::Error::duplicate_field("event_uuid")); - } - field_event_uuid = Some(map.next_value()?); - } - "new_subscription_level" => { - if field_new_subscription_level.is_some() { - return Err(::serde::de::Error::duplicate_field("new_subscription_level")); - } - field_new_subscription_level = Some(map.next_value()?); - } - "previous_subscription_level" => { - if field_previous_subscription_level.is_some() { - return Err(::serde::de::Error::duplicate_field("previous_subscription_level")); - } - field_previous_subscription_level = Some(map.next_value()?); - } - _ => { - // unknown field allowed and ignored - map.next_value::<::serde_json::Value>()?; - } +impl<'de> ::serde::de::Deserialize<'de> for PassPolicy { + fn deserialize>(deserializer: D) -> Result { + // union deserializer + use serde::de::{self, MapAccess, Visitor}; + struct EnumVisitor; + impl<'de> Visitor<'de> for EnumVisitor { + type Value = PassPolicy; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a PassPolicy structure") + } + fn visit_map>(self, mut map: V) -> Result { + let tag: &str = match map.next_key()? { + Some(".tag") => map.next_value()?, + _ => return Err(de::Error::missing_field(".tag")) + }; + let value = match tag { + "allow" => PassPolicy::Allow, + "disabled" => PassPolicy::Disabled, + "enabled" => PassPolicy::Enabled, + _ => PassPolicy::Other, + }; + crate::eat_json_fields(&mut map)?; + Ok(value) } } - if optional && nothing { - return Ok(None); - } - let result = PaperDocChangeSubscriptionDetails { - event_uuid: field_event_uuid.ok_or_else(|| ::serde::de::Error::missing_field("event_uuid"))?, - new_subscription_level: field_new_subscription_level.ok_or_else(|| ::serde::de::Error::missing_field("new_subscription_level"))?, - previous_subscription_level: field_previous_subscription_level.and_then(Option::flatten), - }; - Ok(Some(result)) + const VARIANTS: &[&str] = &["allow", + "disabled", + "enabled", + "other"]; + deserializer.deserialize_struct("PassPolicy", VARIANTS, EnumVisitor) } +} - pub(crate) fn internal_serialize( - &self, - s: &mut S::SerializeStruct, - ) -> Result<(), S::Error> { +impl ::serde::ser::Serialize for PassPolicy { + fn serialize(&self, serializer: S) -> Result { + // union serializer use serde::ser::SerializeStruct; - s.serialize_field("event_uuid", &self.event_uuid)?; - s.serialize_field("new_subscription_level", &self.new_subscription_level)?; - if let Some(val) = &self.previous_subscription_level { - s.serialize_field("previous_subscription_level", val)?; + match self { + PassPolicy::Allow => { + // unit + let mut s = serializer.serialize_struct("PassPolicy", 1)?; + s.serialize_field(".tag", "allow")?; + s.end() + } + PassPolicy::Disabled => { + // unit + let mut s = serializer.serialize_struct("PassPolicy", 1)?; + s.serialize_field(".tag", "disabled")?; + s.end() + } + PassPolicy::Enabled => { + // unit + let mut s = serializer.serialize_struct("PassPolicy", 1)?; + s.serialize_field(".tag", "enabled")?; + s.end() + } + PassPolicy::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) } - Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for PaperDocChangeSubscriptionDetails { +/// Added passkey for login. +#[derive(Debug, Clone, PartialEq, Eq, Default)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct PasskeyAddDetails { +} + +const PASSKEY_ADD_DETAILS_FIELDS: &[&str] = &[]; +impl PasskeyAddDetails { + // no _opt deserializer + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + ) -> Result { + // ignore any fields found; none are presently recognized + crate::eat_json_fields(&mut map)?; + Ok(PasskeyAddDetails {}) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for PasskeyAddDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = PaperDocChangeSubscriptionDetails; + type Value = PasskeyAddDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a PaperDocChangeSubscriptionDetails struct") + f.write_str("a PasskeyAddDetails struct") } fn visit_map>(self, map: V) -> Result { - PaperDocChangeSubscriptionDetails::internal_deserialize(map) + PasskeyAddDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("PaperDocChangeSubscriptionDetails", PAPER_DOC_CHANGE_SUBSCRIPTION_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("PasskeyAddDetails", PASSKEY_ADD_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for PaperDocChangeSubscriptionDetails { +impl ::serde::ser::Serialize for PasskeyAddDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("PaperDocChangeSubscriptionDetails", 3)?; - self.internal_serialize::(&mut s)?; - s.end() + serializer.serialize_struct("PasskeyAddDetails", 0)?.end() } } #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct PaperDocChangeSubscriptionType { +pub struct PasskeyAddType { pub description: String, } -impl PaperDocChangeSubscriptionType { +impl PasskeyAddType { pub fn new(description: String) -> Self { - PaperDocChangeSubscriptionType { + PasskeyAddType { description, } } } -const PAPER_DOC_CHANGE_SUBSCRIPTION_TYPE_FIELDS: &[&str] = &["description"]; -impl PaperDocChangeSubscriptionType { +const PASSKEY_ADD_TYPE_FIELDS: &[&str] = &["description"]; +impl PasskeyAddType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -73406,7 +94738,7 @@ impl PaperDocChangeSubscriptionType { if optional && nothing { return Ok(None); } - let result = PaperDocChangeSubscriptionType { + let result = PasskeyAddType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -73422,88 +94754,161 @@ impl PaperDocChangeSubscriptionType { } } -impl<'de> ::serde::de::Deserialize<'de> for PaperDocChangeSubscriptionType { +impl<'de> ::serde::de::Deserialize<'de> for PasskeyAddType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = PaperDocChangeSubscriptionType; + type Value = PasskeyAddType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a PaperDocChangeSubscriptionType struct") + f.write_str("a PasskeyAddType struct") } fn visit_map>(self, map: V) -> Result { - PaperDocChangeSubscriptionType::internal_deserialize(map) + PasskeyAddType::internal_deserialize(map) } } - deserializer.deserialize_struct("PaperDocChangeSubscriptionType", PAPER_DOC_CHANGE_SUBSCRIPTION_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("PasskeyAddType", PASSKEY_ADD_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for PaperDocChangeSubscriptionType { +impl ::serde::ser::Serialize for PasskeyAddType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("PaperDocChangeSubscriptionType", 1)?; + let mut s = serializer.serialize_struct("PasskeyAddType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Deleted Paper doc comment. +/// Passkey login policy +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // variants may be added in the future +pub enum PasskeyLoginPolicy { + Default, + Disabled, + Enabled, + /// Catch-all used for unrecognized values returned from the server. Encountering this value + /// typically indicates that this SDK version is out of date. + Other, +} + +impl<'de> ::serde::de::Deserialize<'de> for PasskeyLoginPolicy { + fn deserialize>(deserializer: D) -> Result { + // union deserializer + use serde::de::{self, MapAccess, Visitor}; + struct EnumVisitor; + impl<'de> Visitor<'de> for EnumVisitor { + type Value = PasskeyLoginPolicy; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a PasskeyLoginPolicy structure") + } + fn visit_map>(self, mut map: V) -> Result { + let tag: &str = match map.next_key()? { + Some(".tag") => map.next_value()?, + _ => return Err(de::Error::missing_field(".tag")) + }; + let value = match tag { + "default" => PasskeyLoginPolicy::Default, + "disabled" => PasskeyLoginPolicy::Disabled, + "enabled" => PasskeyLoginPolicy::Enabled, + _ => PasskeyLoginPolicy::Other, + }; + crate::eat_json_fields(&mut map)?; + Ok(value) + } + } + const VARIANTS: &[&str] = &["default", + "disabled", + "enabled", + "other"]; + deserializer.deserialize_struct("PasskeyLoginPolicy", VARIANTS, EnumVisitor) + } +} + +impl ::serde::ser::Serialize for PasskeyLoginPolicy { + fn serialize(&self, serializer: S) -> Result { + // union serializer + use serde::ser::SerializeStruct; + match self { + PasskeyLoginPolicy::Default => { + // unit + let mut s = serializer.serialize_struct("PasskeyLoginPolicy", 1)?; + s.serialize_field(".tag", "default")?; + s.end() + } + PasskeyLoginPolicy::Disabled => { + // unit + let mut s = serializer.serialize_struct("PasskeyLoginPolicy", 1)?; + s.serialize_field(".tag", "disabled")?; + s.end() + } + PasskeyLoginPolicy::Enabled => { + // unit + let mut s = serializer.serialize_struct("PasskeyLoginPolicy", 1)?; + s.serialize_field(".tag", "enabled")?; + s.end() + } + PasskeyLoginPolicy::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) + } + } +} + +/// Changed passkey login policy for team. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct PaperDocDeleteCommentDetails { - /// Event unique identifier. - pub event_uuid: String, - /// Comment text. - pub comment_text: Option, +pub struct PasskeyLoginPolicyChangedDetails { + /// New passkey login policy. + pub new_value: PasskeyLoginPolicy, + /// Previous passkey login policy. Might be missing due to historical data gap. + pub previous_value: Option, } -impl PaperDocDeleteCommentDetails { - pub fn new(event_uuid: String) -> Self { - PaperDocDeleteCommentDetails { - event_uuid, - comment_text: None, +impl PasskeyLoginPolicyChangedDetails { + pub fn new(new_value: PasskeyLoginPolicy) -> Self { + PasskeyLoginPolicyChangedDetails { + new_value, + previous_value: None, } } - pub fn with_comment_text(mut self, value: String) -> Self { - self.comment_text = Some(value); + pub fn with_previous_value(mut self, value: PasskeyLoginPolicy) -> Self { + self.previous_value = Some(value); self } } -const PAPER_DOC_DELETE_COMMENT_DETAILS_FIELDS: &[&str] = &["event_uuid", - "comment_text"]; -impl PaperDocDeleteCommentDetails { +const PASSKEY_LOGIN_POLICY_CHANGED_DETAILS_FIELDS: &[&str] = &["new_value", + "previous_value"]; +impl PasskeyLoginPolicyChangedDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_event_uuid = None; - let mut field_comment_text = None; + ) -> Result, V::Error> { + let mut field_new_value = None; + let mut field_previous_value = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "event_uuid" => { - if field_event_uuid.is_some() { - return Err(::serde::de::Error::duplicate_field("event_uuid")); + "new_value" => { + if field_new_value.is_some() { + return Err(::serde::de::Error::duplicate_field("new_value")); } - field_event_uuid = Some(map.next_value()?); + field_new_value = Some(map.next_value()?); } - "comment_text" => { - if field_comment_text.is_some() { - return Err(::serde::de::Error::duplicate_field("comment_text")); + "previous_value" => { + if field_previous_value.is_some() { + return Err(::serde::de::Error::duplicate_field("previous_value")); } - field_comment_text = Some(map.next_value()?); + field_previous_value = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -73514,9 +94919,9 @@ impl PaperDocDeleteCommentDetails { if optional && nothing { return Ok(None); } - let result = PaperDocDeleteCommentDetails { - event_uuid: field_event_uuid.ok_or_else(|| ::serde::de::Error::missing_field("event_uuid"))?, - comment_text: field_comment_text.and_then(Option::flatten), + let result = PasskeyLoginPolicyChangedDetails { + new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, + previous_value: field_previous_value.and_then(Option::flatten), }; Ok(Some(result)) } @@ -73526,37 +94931,37 @@ impl PaperDocDeleteCommentDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("event_uuid", &self.event_uuid)?; - if let Some(val) = &self.comment_text { - s.serialize_field("comment_text", val)?; + s.serialize_field("new_value", &self.new_value)?; + if let Some(val) = &self.previous_value { + s.serialize_field("previous_value", val)?; } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for PaperDocDeleteCommentDetails { +impl<'de> ::serde::de::Deserialize<'de> for PasskeyLoginPolicyChangedDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = PaperDocDeleteCommentDetails; + type Value = PasskeyLoginPolicyChangedDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a PaperDocDeleteCommentDetails struct") + f.write_str("a PasskeyLoginPolicyChangedDetails struct") } fn visit_map>(self, map: V) -> Result { - PaperDocDeleteCommentDetails::internal_deserialize(map) + PasskeyLoginPolicyChangedDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("PaperDocDeleteCommentDetails", PAPER_DOC_DELETE_COMMENT_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("PasskeyLoginPolicyChangedDetails", PASSKEY_LOGIN_POLICY_CHANGED_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for PaperDocDeleteCommentDetails { +impl ::serde::ser::Serialize for PasskeyLoginPolicyChangedDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("PaperDocDeleteCommentDetails", 2)?; + let mut s = serializer.serialize_struct("PasskeyLoginPolicyChangedDetails", 2)?; self.internal_serialize::(&mut s)?; s.end() } @@ -73564,30 +94969,30 @@ impl ::serde::ser::Serialize for PaperDocDeleteCommentDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct PaperDocDeleteCommentType { +pub struct PasskeyLoginPolicyChangedType { pub description: String, } -impl PaperDocDeleteCommentType { +impl PasskeyLoginPolicyChangedType { pub fn new(description: String) -> Self { - PaperDocDeleteCommentType { + PasskeyLoginPolicyChangedType { description, } } } -const PAPER_DOC_DELETE_COMMENT_TYPE_FIELDS: &[&str] = &["description"]; -impl PaperDocDeleteCommentType { +const PASSKEY_LOGIN_POLICY_CHANGED_TYPE_FIELDS: &[&str] = &["description"]; +impl PasskeyLoginPolicyChangedType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -73608,7 +95013,7 @@ impl PaperDocDeleteCommentType { if optional && nothing { return Ok(None); } - let result = PaperDocDeleteCommentType { + let result = PasskeyLoginPolicyChangedType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -73624,152 +95029,104 @@ impl PaperDocDeleteCommentType { } } -impl<'de> ::serde::de::Deserialize<'de> for PaperDocDeleteCommentType { +impl<'de> ::serde::de::Deserialize<'de> for PasskeyLoginPolicyChangedType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = PaperDocDeleteCommentType; + type Value = PasskeyLoginPolicyChangedType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a PaperDocDeleteCommentType struct") + f.write_str("a PasskeyLoginPolicyChangedType struct") } fn visit_map>(self, map: V) -> Result { - PaperDocDeleteCommentType::internal_deserialize(map) + PasskeyLoginPolicyChangedType::internal_deserialize(map) } } - deserializer.deserialize_struct("PaperDocDeleteCommentType", PAPER_DOC_DELETE_COMMENT_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("PasskeyLoginPolicyChangedType", PASSKEY_LOGIN_POLICY_CHANGED_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for PaperDocDeleteCommentType { +impl ::serde::ser::Serialize for PasskeyLoginPolicyChangedType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("PaperDocDeleteCommentType", 1)?; + let mut s = serializer.serialize_struct("PasskeyLoginPolicyChangedType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Archived Paper doc. -#[derive(Debug, Clone, PartialEq, Eq)] +/// Removed passkey for login. +#[derive(Debug, Clone, PartialEq, Eq, Default)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct PaperDocDeletedDetails { - /// Event unique identifier. - pub event_uuid: String, -} - -impl PaperDocDeletedDetails { - pub fn new(event_uuid: String) -> Self { - PaperDocDeletedDetails { - event_uuid, - } - } +pub struct PasskeyRemoveDetails { } -const PAPER_DOC_DELETED_DETAILS_FIELDS: &[&str] = &["event_uuid"]; -impl PaperDocDeletedDetails { +const PASSKEY_REMOVE_DETAILS_FIELDS: &[&str] = &[]; +impl PasskeyRemoveDetails { + // no _opt deserializer pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( - map: V, - ) -> Result { - Self::internal_deserialize_opt(map, false).map(Option::unwrap) - } - - pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - optional: bool, - ) -> Result, V::Error> { - let mut field_event_uuid = None; - let mut nothing = true; - while let Some(key) = map.next_key::<&str>()? { - nothing = false; - match key { - "event_uuid" => { - if field_event_uuid.is_some() { - return Err(::serde::de::Error::duplicate_field("event_uuid")); - } - field_event_uuid = Some(map.next_value()?); - } - _ => { - // unknown field allowed and ignored - map.next_value::<::serde_json::Value>()?; - } - } - } - if optional && nothing { - return Ok(None); - } - let result = PaperDocDeletedDetails { - event_uuid: field_event_uuid.ok_or_else(|| ::serde::de::Error::missing_field("event_uuid"))?, - }; - Ok(Some(result)) - } - - pub(crate) fn internal_serialize( - &self, - s: &mut S::SerializeStruct, - ) -> Result<(), S::Error> { - use serde::ser::SerializeStruct; - s.serialize_field("event_uuid", &self.event_uuid)?; - Ok(()) + ) -> Result { + // ignore any fields found; none are presently recognized + crate::eat_json_fields(&mut map)?; + Ok(PasskeyRemoveDetails {}) } } -impl<'de> ::serde::de::Deserialize<'de> for PaperDocDeletedDetails { +impl<'de> ::serde::de::Deserialize<'de> for PasskeyRemoveDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = PaperDocDeletedDetails; + type Value = PasskeyRemoveDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a PaperDocDeletedDetails struct") + f.write_str("a PasskeyRemoveDetails struct") } fn visit_map>(self, map: V) -> Result { - PaperDocDeletedDetails::internal_deserialize(map) + PasskeyRemoveDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("PaperDocDeletedDetails", PAPER_DOC_DELETED_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("PasskeyRemoveDetails", PASSKEY_REMOVE_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for PaperDocDeletedDetails { +impl ::serde::ser::Serialize for PasskeyRemoveDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("PaperDocDeletedDetails", 1)?; - self.internal_serialize::(&mut s)?; - s.end() + serializer.serialize_struct("PasskeyRemoveDetails", 0)?.end() } } #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct PaperDocDeletedType { +pub struct PasskeyRemoveType { pub description: String, } -impl PaperDocDeletedType { +impl PasskeyRemoveType { pub fn new(description: String) -> Self { - PaperDocDeletedType { + PasskeyRemoveType { description, } } } -const PAPER_DOC_DELETED_TYPE_FIELDS: &[&str] = &["description"]; -impl PaperDocDeletedType { +const PASSKEY_REMOVE_TYPE_FIELDS: &[&str] = &["description"]; +impl PasskeyRemoveType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -73790,7 +95147,7 @@ impl PaperDocDeletedType { if optional && nothing { return Ok(None); } - let result = PaperDocDeletedType { + let result = PasskeyRemoveType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -73806,83 +95163,114 @@ impl PaperDocDeletedType { } } -impl<'de> ::serde::de::Deserialize<'de> for PaperDocDeletedType { +impl<'de> ::serde::de::Deserialize<'de> for PasskeyRemoveType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = PaperDocDeletedType; + type Value = PasskeyRemoveType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a PaperDocDeletedType struct") + f.write_str("a PasskeyRemoveType struct") } fn visit_map>(self, map: V) -> Result { - PaperDocDeletedType::internal_deserialize(map) + PasskeyRemoveType::internal_deserialize(map) } } - deserializer.deserialize_struct("PaperDocDeletedType", PAPER_DOC_DELETED_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("PasskeyRemoveType", PASSKEY_REMOVE_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for PaperDocDeletedType { +impl ::serde::ser::Serialize for PasskeyRemoveType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("PaperDocDeletedType", 1)?; + let mut s = serializer.serialize_struct("PasskeyRemoveType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Downloaded Paper doc in specific format. +/// Changed password. +#[derive(Debug, Clone, PartialEq, Eq, Default)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct PasswordChangeDetails { +} + +const PASSWORD_CHANGE_DETAILS_FIELDS: &[&str] = &[]; +impl PasswordChangeDetails { + // no _opt deserializer + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + ) -> Result { + // ignore any fields found; none are presently recognized + crate::eat_json_fields(&mut map)?; + Ok(PasswordChangeDetails {}) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for PasswordChangeDetails { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = PasswordChangeDetails; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a PasswordChangeDetails struct") + } + fn visit_map>(self, map: V) -> Result { + PasswordChangeDetails::internal_deserialize(map) + } + } + deserializer.deserialize_struct("PasswordChangeDetails", PASSWORD_CHANGE_DETAILS_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for PasswordChangeDetails { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + serializer.serialize_struct("PasswordChangeDetails", 0)?.end() + } +} + #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct PaperDocDownloadDetails { - /// Event unique identifier. - pub event_uuid: String, - /// Export file format. - pub export_file_format: PaperDownloadFormat, +pub struct PasswordChangeType { + pub description: String, } -impl PaperDocDownloadDetails { - pub fn new(event_uuid: String, export_file_format: PaperDownloadFormat) -> Self { - PaperDocDownloadDetails { - event_uuid, - export_file_format, +impl PasswordChangeType { + pub fn new(description: String) -> Self { + PasswordChangeType { + description, } } } -const PAPER_DOC_DOWNLOAD_DETAILS_FIELDS: &[&str] = &["event_uuid", - "export_file_format"]; -impl PaperDocDownloadDetails { +const PASSWORD_CHANGE_TYPE_FIELDS: &[&str] = &["description"]; +impl PasswordChangeType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_event_uuid = None; - let mut field_export_file_format = None; + ) -> Result, V::Error> { + let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "event_uuid" => { - if field_event_uuid.is_some() { - return Err(::serde::de::Error::duplicate_field("event_uuid")); - } - field_event_uuid = Some(map.next_value()?); - } - "export_file_format" => { - if field_export_file_format.is_some() { - return Err(::serde::de::Error::duplicate_field("export_file_format")); + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); } - field_export_file_format = Some(map.next_value()?); + field_description = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -73893,9 +95281,8 @@ impl PaperDocDownloadDetails { if optional && nothing { return Ok(None); } - let result = PaperDocDownloadDetails { - event_uuid: field_event_uuid.ok_or_else(|| ::serde::de::Error::missing_field("event_uuid"))?, - export_file_format: field_export_file_format.ok_or_else(|| ::serde::de::Error::missing_field("export_file_format"))?, + let result = PasswordChangeType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) } @@ -73905,66 +95292,109 @@ impl PaperDocDownloadDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("event_uuid", &self.event_uuid)?; - s.serialize_field("export_file_format", &self.export_file_format)?; + s.serialize_field("description", &self.description)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for PaperDocDownloadDetails { +impl<'de> ::serde::de::Deserialize<'de> for PasswordChangeType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = PaperDocDownloadDetails; + type Value = PasswordChangeType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a PaperDocDownloadDetails struct") + f.write_str("a PasswordChangeType struct") } fn visit_map>(self, map: V) -> Result { - PaperDocDownloadDetails::internal_deserialize(map) + PasswordChangeType::internal_deserialize(map) } } - deserializer.deserialize_struct("PaperDocDownloadDetails", PAPER_DOC_DOWNLOAD_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("PasswordChangeType", PASSWORD_CHANGE_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for PaperDocDownloadDetails { +impl ::serde::ser::Serialize for PasswordChangeType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("PaperDocDownloadDetails", 2)?; + let mut s = serializer.serialize_struct("PasswordChangeType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } +/// Reset all team member passwords. +#[derive(Debug, Clone, PartialEq, Eq, Default)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct PasswordResetAllDetails { +} + +const PASSWORD_RESET_ALL_DETAILS_FIELDS: &[&str] = &[]; +impl PasswordResetAllDetails { + // no _opt deserializer + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + ) -> Result { + // ignore any fields found; none are presently recognized + crate::eat_json_fields(&mut map)?; + Ok(PasswordResetAllDetails {}) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for PasswordResetAllDetails { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = PasswordResetAllDetails; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a PasswordResetAllDetails struct") + } + fn visit_map>(self, map: V) -> Result { + PasswordResetAllDetails::internal_deserialize(map) + } + } + deserializer.deserialize_struct("PasswordResetAllDetails", PASSWORD_RESET_ALL_DETAILS_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for PasswordResetAllDetails { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + serializer.serialize_struct("PasswordResetAllDetails", 0)?.end() + } +} + #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct PaperDocDownloadType { +pub struct PasswordResetAllType { pub description: String, } -impl PaperDocDownloadType { +impl PasswordResetAllType { pub fn new(description: String) -> Self { - PaperDocDownloadType { + PasswordResetAllType { description, } } } -const PAPER_DOC_DOWNLOAD_TYPE_FIELDS: &[&str] = &["description"]; -impl PaperDocDownloadType { +const PASSWORD_RESET_ALL_TYPE_FIELDS: &[&str] = &["description"]; +impl PasswordResetAllType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -73985,7 +95415,7 @@ impl PaperDocDownloadType { if optional && nothing { return Ok(None); } - let result = PaperDocDownloadType { + let result = PasswordResetAllType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -74001,88 +95431,114 @@ impl PaperDocDownloadType { } } -impl<'de> ::serde::de::Deserialize<'de> for PaperDocDownloadType { +impl<'de> ::serde::de::Deserialize<'de> for PasswordResetAllType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = PaperDocDownloadType; + type Value = PasswordResetAllType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a PaperDocDownloadType struct") + f.write_str("a PasswordResetAllType struct") } fn visit_map>(self, map: V) -> Result { - PaperDocDownloadType::internal_deserialize(map) + PasswordResetAllType::internal_deserialize(map) } } - deserializer.deserialize_struct("PaperDocDownloadType", PAPER_DOC_DOWNLOAD_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("PasswordResetAllType", PASSWORD_RESET_ALL_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for PaperDocDownloadType { +impl ::serde::ser::Serialize for PasswordResetAllType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("PaperDocDownloadType", 1)?; + let mut s = serializer.serialize_struct("PasswordResetAllType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Edited Paper doc comment. -#[derive(Debug, Clone, PartialEq, Eq)] +/// Reset password. +#[derive(Debug, Clone, PartialEq, Eq, Default)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct PaperDocEditCommentDetails { - /// Event unique identifier. - pub event_uuid: String, - /// Comment text. - pub comment_text: Option, +pub struct PasswordResetDetails { } -impl PaperDocEditCommentDetails { - pub fn new(event_uuid: String) -> Self { - PaperDocEditCommentDetails { - event_uuid, - comment_text: None, +const PASSWORD_RESET_DETAILS_FIELDS: &[&str] = &[]; +impl PasswordResetDetails { + // no _opt deserializer + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + ) -> Result { + // ignore any fields found; none are presently recognized + crate::eat_json_fields(&mut map)?; + Ok(PasswordResetDetails {}) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for PasswordResetDetails { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = PasswordResetDetails; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a PasswordResetDetails struct") + } + fn visit_map>(self, map: V) -> Result { + PasswordResetDetails::internal_deserialize(map) + } } + deserializer.deserialize_struct("PasswordResetDetails", PASSWORD_RESET_DETAILS_FIELDS, StructVisitor) } +} - pub fn with_comment_text(mut self, value: String) -> Self { - self.comment_text = Some(value); - self +impl ::serde::ser::Serialize for PasswordResetDetails { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + serializer.serialize_struct("PasswordResetDetails", 0)?.end() } } -const PAPER_DOC_EDIT_COMMENT_DETAILS_FIELDS: &[&str] = &["event_uuid", - "comment_text"]; -impl PaperDocEditCommentDetails { +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct PasswordResetType { + pub description: String, +} + +impl PasswordResetType { + pub fn new(description: String) -> Self { + PasswordResetType { + description, + } + } +} + +const PASSWORD_RESET_TYPE_FIELDS: &[&str] = &["description"]; +impl PasswordResetType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_event_uuid = None; - let mut field_comment_text = None; + ) -> Result, V::Error> { + let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "event_uuid" => { - if field_event_uuid.is_some() { - return Err(::serde::de::Error::duplicate_field("event_uuid")); - } - field_event_uuid = Some(map.next_value()?); - } - "comment_text" => { - if field_comment_text.is_some() { - return Err(::serde::de::Error::duplicate_field("comment_text")); + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); } - field_comment_text = Some(map.next_value()?); + field_description = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -74093,9 +95549,8 @@ impl PaperDocEditCommentDetails { if optional && nothing { return Ok(None); } - let result = PaperDocEditCommentDetails { - event_uuid: field_event_uuid.ok_or_else(|| ::serde::de::Error::missing_field("event_uuid"))?, - comment_text: field_comment_text.and_then(Option::flatten), + let result = PasswordResetType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) } @@ -74105,78 +95560,91 @@ impl PaperDocEditCommentDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("event_uuid", &self.event_uuid)?; - if let Some(val) = &self.comment_text { - s.serialize_field("comment_text", val)?; - } + s.serialize_field("description", &self.description)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for PaperDocEditCommentDetails { +impl<'de> ::serde::de::Deserialize<'de> for PasswordResetType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = PaperDocEditCommentDetails; + type Value = PasswordResetType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a PaperDocEditCommentDetails struct") + f.write_str("a PasswordResetType struct") } fn visit_map>(self, map: V) -> Result { - PaperDocEditCommentDetails::internal_deserialize(map) + PasswordResetType::internal_deserialize(map) } } - deserializer.deserialize_struct("PaperDocEditCommentDetails", PAPER_DOC_EDIT_COMMENT_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("PasswordResetType", PASSWORD_RESET_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for PaperDocEditCommentDetails { +impl ::serde::ser::Serialize for PasswordResetType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("PaperDocEditCommentDetails", 2)?; + let mut s = serializer.serialize_struct("PasswordResetType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } +/// Changed team password strength requirements. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct PaperDocEditCommentType { - pub description: String, +pub struct PasswordStrengthRequirementsChangePolicyDetails { + /// Old password strength policy. + pub previous_value: crate::types::team_policies::PasswordStrengthPolicy, + /// New password strength policy. + pub new_value: crate::types::team_policies::PasswordStrengthPolicy, } -impl PaperDocEditCommentType { - pub fn new(description: String) -> Self { - PaperDocEditCommentType { - description, +impl PasswordStrengthRequirementsChangePolicyDetails { + pub fn new( + previous_value: crate::types::team_policies::PasswordStrengthPolicy, + new_value: crate::types::team_policies::PasswordStrengthPolicy, + ) -> Self { + PasswordStrengthRequirementsChangePolicyDetails { + previous_value, + new_value, } } } -const PAPER_DOC_EDIT_COMMENT_TYPE_FIELDS: &[&str] = &["description"]; -impl PaperDocEditCommentType { +const PASSWORD_STRENGTH_REQUIREMENTS_CHANGE_POLICY_DETAILS_FIELDS: &[&str] = &["previous_value", + "new_value"]; +impl PasswordStrengthRequirementsChangePolicyDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_description = None; + ) -> Result, V::Error> { + let mut field_previous_value = None; + let mut field_new_value = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "description" => { - if field_description.is_some() { - return Err(::serde::de::Error::duplicate_field("description")); + "previous_value" => { + if field_previous_value.is_some() { + return Err(::serde::de::Error::duplicate_field("previous_value")); } - field_description = Some(map.next_value()?); + field_previous_value = Some(map.next_value()?); + } + "new_value" => { + if field_new_value.is_some() { + return Err(::serde::de::Error::duplicate_field("new_value")); + } + field_new_value = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -74187,8 +95655,9 @@ impl PaperDocEditCommentType { if optional && nothing { return Ok(None); } - let result = PaperDocEditCommentType { - description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + let result = PasswordStrengthRequirementsChangePolicyDetails { + previous_value: field_previous_value.ok_or_else(|| ::serde::de::Error::missing_field("previous_value"))?, + new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, }; Ok(Some(result)) } @@ -74198,77 +95667,76 @@ impl PaperDocEditCommentType { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("description", &self.description)?; + s.serialize_field("previous_value", &self.previous_value)?; + s.serialize_field("new_value", &self.new_value)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for PaperDocEditCommentType { +impl<'de> ::serde::de::Deserialize<'de> for PasswordStrengthRequirementsChangePolicyDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = PaperDocEditCommentType; + type Value = PasswordStrengthRequirementsChangePolicyDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a PaperDocEditCommentType struct") + f.write_str("a PasswordStrengthRequirementsChangePolicyDetails struct") } fn visit_map>(self, map: V) -> Result { - PaperDocEditCommentType::internal_deserialize(map) + PasswordStrengthRequirementsChangePolicyDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("PaperDocEditCommentType", PAPER_DOC_EDIT_COMMENT_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("PasswordStrengthRequirementsChangePolicyDetails", PASSWORD_STRENGTH_REQUIREMENTS_CHANGE_POLICY_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for PaperDocEditCommentType { +impl ::serde::ser::Serialize for PasswordStrengthRequirementsChangePolicyDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("PaperDocEditCommentType", 1)?; + let mut s = serializer.serialize_struct("PasswordStrengthRequirementsChangePolicyDetails", 2)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Edited Paper doc. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct PaperDocEditDetails { - /// Event unique identifier. - pub event_uuid: String, +pub struct PasswordStrengthRequirementsChangePolicyType { + pub description: String, } -impl PaperDocEditDetails { - pub fn new(event_uuid: String) -> Self { - PaperDocEditDetails { - event_uuid, +impl PasswordStrengthRequirementsChangePolicyType { + pub fn new(description: String) -> Self { + PasswordStrengthRequirementsChangePolicyType { + description, } } } -const PAPER_DOC_EDIT_DETAILS_FIELDS: &[&str] = &["event_uuid"]; -impl PaperDocEditDetails { +const PASSWORD_STRENGTH_REQUIREMENTS_CHANGE_POLICY_TYPE_FIELDS: &[&str] = &["description"]; +impl PasswordStrengthRequirementsChangePolicyType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_event_uuid = None; + ) -> Result, V::Error> { + let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "event_uuid" => { - if field_event_uuid.is_some() { - return Err(::serde::de::Error::duplicate_field("event_uuid")); + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); } - field_event_uuid = Some(map.next_value()?); + field_description = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -74279,8 +95747,8 @@ impl PaperDocEditDetails { if optional && nothing { return Ok(None); } - let result = PaperDocEditDetails { - event_uuid: field_event_uuid.ok_or_else(|| ::serde::de::Error::missing_field("event_uuid"))?, + let result = PasswordStrengthRequirementsChangePolicyType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) } @@ -74290,75 +95758,93 @@ impl PaperDocEditDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("event_uuid", &self.event_uuid)?; + s.serialize_field("description", &self.description)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for PaperDocEditDetails { +impl<'de> ::serde::de::Deserialize<'de> for PasswordStrengthRequirementsChangePolicyType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = PaperDocEditDetails; + type Value = PasswordStrengthRequirementsChangePolicyType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a PaperDocEditDetails struct") + f.write_str("a PasswordStrengthRequirementsChangePolicyType struct") } fn visit_map>(self, map: V) -> Result { - PaperDocEditDetails::internal_deserialize(map) + PasswordStrengthRequirementsChangePolicyType::internal_deserialize(map) } } - deserializer.deserialize_struct("PaperDocEditDetails", PAPER_DOC_EDIT_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("PasswordStrengthRequirementsChangePolicyType", PASSWORD_STRENGTH_REQUIREMENTS_CHANGE_POLICY_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for PaperDocEditDetails { +impl ::serde::ser::Serialize for PasswordStrengthRequirementsChangePolicyType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("PaperDocEditDetails", 1)?; + let mut s = serializer.serialize_struct("PasswordStrengthRequirementsChangePolicyType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } +/// Path's details. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct PaperDocEditType { - pub description: String, +pub struct PathLogInfo { + /// Path relative to the namespace containing the content. + pub namespace_relative: NamespaceRelativePathLogInfo, + /// Fully qualified path relative to event's context. + pub contextual: Option, } -impl PaperDocEditType { - pub fn new(description: String) -> Self { - PaperDocEditType { - description, +impl PathLogInfo { + pub fn new(namespace_relative: NamespaceRelativePathLogInfo) -> Self { + PathLogInfo { + namespace_relative, + contextual: None, } } + + pub fn with_contextual(mut self, value: FilePath) -> Self { + self.contextual = Some(value); + self + } } -const PAPER_DOC_EDIT_TYPE_FIELDS: &[&str] = &["description"]; -impl PaperDocEditType { +const PATH_LOG_INFO_FIELDS: &[&str] = &["namespace_relative", + "contextual"]; +impl PathLogInfo { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_description = None; + ) -> Result, V::Error> { + let mut field_namespace_relative = None; + let mut field_contextual = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "description" => { - if field_description.is_some() { - return Err(::serde::de::Error::duplicate_field("description")); + "namespace_relative" => { + if field_namespace_relative.is_some() { + return Err(::serde::de::Error::duplicate_field("namespace_relative")); } - field_description = Some(map.next_value()?); + field_namespace_relative = Some(map.next_value()?); + } + "contextual" => { + if field_contextual.is_some() { + return Err(::serde::de::Error::duplicate_field("contextual")); + } + field_contextual = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -74369,8 +95855,9 @@ impl PaperDocEditType { if optional && nothing { return Ok(None); } - let result = PaperDocEditType { - description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + let result = PathLogInfo { + namespace_relative: field_namespace_relative.ok_or_else(|| ::serde::de::Error::missing_field("namespace_relative"))?, + contextual: field_contextual.and_then(Option::flatten), }; Ok(Some(result)) } @@ -74380,77 +95867,80 @@ impl PaperDocEditType { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("description", &self.description)?; + s.serialize_field("namespace_relative", &self.namespace_relative)?; + if let Some(val) = &self.contextual { + s.serialize_field("contextual", val)?; + } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for PaperDocEditType { +impl<'de> ::serde::de::Deserialize<'de> for PathLogInfo { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = PaperDocEditType; + type Value = PathLogInfo; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a PaperDocEditType struct") + f.write_str("a PathLogInfo struct") } fn visit_map>(self, map: V) -> Result { - PaperDocEditType::internal_deserialize(map) + PathLogInfo::internal_deserialize(map) } } - deserializer.deserialize_struct("PaperDocEditType", PAPER_DOC_EDIT_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("PathLogInfo", PATH_LOG_INFO_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for PaperDocEditType { +impl ::serde::ser::Serialize for PathLogInfo { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("PaperDocEditType", 1)?; + let mut s = serializer.serialize_struct("PathLogInfo", 2)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Followed Paper doc. +/// Added pending secondary email. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct PaperDocFollowedDetails { - /// Event unique identifier. - pub event_uuid: String, +pub struct PendingSecondaryEmailAddedDetails { + /// New pending secondary email. + pub secondary_email: EmailAddress, } -impl PaperDocFollowedDetails { - pub fn new(event_uuid: String) -> Self { - PaperDocFollowedDetails { - event_uuid, +impl PendingSecondaryEmailAddedDetails { + pub fn new(secondary_email: EmailAddress) -> Self { + PendingSecondaryEmailAddedDetails { + secondary_email, } } } -const PAPER_DOC_FOLLOWED_DETAILS_FIELDS: &[&str] = &["event_uuid"]; -impl PaperDocFollowedDetails { +const PENDING_SECONDARY_EMAIL_ADDED_DETAILS_FIELDS: &[&str] = &["secondary_email"]; +impl PendingSecondaryEmailAddedDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_event_uuid = None; + ) -> Result, V::Error> { + let mut field_secondary_email = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "event_uuid" => { - if field_event_uuid.is_some() { - return Err(::serde::de::Error::duplicate_field("event_uuid")); + "secondary_email" => { + if field_secondary_email.is_some() { + return Err(::serde::de::Error::duplicate_field("secondary_email")); } - field_event_uuid = Some(map.next_value()?); + field_secondary_email = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -74461,8 +95951,8 @@ impl PaperDocFollowedDetails { if optional && nothing { return Ok(None); } - let result = PaperDocFollowedDetails { - event_uuid: field_event_uuid.ok_or_else(|| ::serde::de::Error::missing_field("event_uuid"))?, + let result = PendingSecondaryEmailAddedDetails { + secondary_email: field_secondary_email.ok_or_else(|| ::serde::de::Error::missing_field("secondary_email"))?, }; Ok(Some(result)) } @@ -74472,34 +95962,34 @@ impl PaperDocFollowedDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("event_uuid", &self.event_uuid)?; + s.serialize_field("secondary_email", &self.secondary_email)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for PaperDocFollowedDetails { +impl<'de> ::serde::de::Deserialize<'de> for PendingSecondaryEmailAddedDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = PaperDocFollowedDetails; + type Value = PendingSecondaryEmailAddedDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a PaperDocFollowedDetails struct") + f.write_str("a PendingSecondaryEmailAddedDetails struct") } fn visit_map>(self, map: V) -> Result { - PaperDocFollowedDetails::internal_deserialize(map) + PendingSecondaryEmailAddedDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("PaperDocFollowedDetails", PAPER_DOC_FOLLOWED_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("PendingSecondaryEmailAddedDetails", PENDING_SECONDARY_EMAIL_ADDED_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for PaperDocFollowedDetails { +impl ::serde::ser::Serialize for PendingSecondaryEmailAddedDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("PaperDocFollowedDetails", 1)?; + let mut s = serializer.serialize_struct("PendingSecondaryEmailAddedDetails", 1)?; self.internal_serialize::(&mut s)?; s.end() } @@ -74507,30 +95997,30 @@ impl ::serde::ser::Serialize for PaperDocFollowedDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct PaperDocFollowedType { +pub struct PendingSecondaryEmailAddedType { pub description: String, } -impl PaperDocFollowedType { +impl PendingSecondaryEmailAddedType { pub fn new(description: String) -> Self { - PaperDocFollowedType { + PendingSecondaryEmailAddedType { description, } } } -const PAPER_DOC_FOLLOWED_TYPE_FIELDS: &[&str] = &["description"]; -impl PaperDocFollowedType { +const PENDING_SECONDARY_EMAIL_ADDED_TYPE_FIELDS: &[&str] = &["description"]; +impl PendingSecondaryEmailAddedType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -74551,7 +96041,7 @@ impl PaperDocFollowedType { if optional && nothing { return Ok(None); } - let result = PaperDocFollowedType { + let result = PendingSecondaryEmailAddedType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -74567,72 +96057,88 @@ impl PaperDocFollowedType { } } -impl<'de> ::serde::de::Deserialize<'de> for PaperDocFollowedType { +impl<'de> ::serde::de::Deserialize<'de> for PendingSecondaryEmailAddedType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = PaperDocFollowedType; + type Value = PendingSecondaryEmailAddedType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a PaperDocFollowedType struct") + f.write_str("a PendingSecondaryEmailAddedType struct") } fn visit_map>(self, map: V) -> Result { - PaperDocFollowedType::internal_deserialize(map) + PendingSecondaryEmailAddedType::internal_deserialize(map) } } - deserializer.deserialize_struct("PaperDocFollowedType", PAPER_DOC_FOLLOWED_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("PendingSecondaryEmailAddedType", PENDING_SECONDARY_EMAIL_ADDED_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for PaperDocFollowedType { +impl ::serde::ser::Serialize for PendingSecondaryEmailAddedType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("PaperDocFollowedType", 1)?; + let mut s = serializer.serialize_struct("PendingSecondaryEmailAddedType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Mentioned user in Paper doc. +/// Enabled/disabled ability of team members to permanently delete content. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct PaperDocMentionDetails { - /// Event unique identifier. - pub event_uuid: String, +pub struct PermanentDeleteChangePolicyDetails { + /// New permanent delete content policy. + pub new_value: ContentPermanentDeletePolicy, + /// Previous permanent delete content policy. Might be missing due to historical data gap. + pub previous_value: Option, } -impl PaperDocMentionDetails { - pub fn new(event_uuid: String) -> Self { - PaperDocMentionDetails { - event_uuid, +impl PermanentDeleteChangePolicyDetails { + pub fn new(new_value: ContentPermanentDeletePolicy) -> Self { + PermanentDeleteChangePolicyDetails { + new_value, + previous_value: None, } } + + pub fn with_previous_value(mut self, value: ContentPermanentDeletePolicy) -> Self { + self.previous_value = Some(value); + self + } } -const PAPER_DOC_MENTION_DETAILS_FIELDS: &[&str] = &["event_uuid"]; -impl PaperDocMentionDetails { +const PERMANENT_DELETE_CHANGE_POLICY_DETAILS_FIELDS: &[&str] = &["new_value", + "previous_value"]; +impl PermanentDeleteChangePolicyDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_event_uuid = None; + ) -> Result, V::Error> { + let mut field_new_value = None; + let mut field_previous_value = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "event_uuid" => { - if field_event_uuid.is_some() { - return Err(::serde::de::Error::duplicate_field("event_uuid")); + "new_value" => { + if field_new_value.is_some() { + return Err(::serde::de::Error::duplicate_field("new_value")); } - field_event_uuid = Some(map.next_value()?); + field_new_value = Some(map.next_value()?); + } + "previous_value" => { + if field_previous_value.is_some() { + return Err(::serde::de::Error::duplicate_field("previous_value")); + } + field_previous_value = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -74643,8 +96149,9 @@ impl PaperDocMentionDetails { if optional && nothing { return Ok(None); } - let result = PaperDocMentionDetails { - event_uuid: field_event_uuid.ok_or_else(|| ::serde::de::Error::missing_field("event_uuid"))?, + let result = PermanentDeleteChangePolicyDetails { + new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, + previous_value: field_previous_value.and_then(Option::flatten), }; Ok(Some(result)) } @@ -74654,34 +96161,37 @@ impl PaperDocMentionDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("event_uuid", &self.event_uuid)?; + s.serialize_field("new_value", &self.new_value)?; + if let Some(val) = &self.previous_value { + s.serialize_field("previous_value", val)?; + } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for PaperDocMentionDetails { +impl<'de> ::serde::de::Deserialize<'de> for PermanentDeleteChangePolicyDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = PaperDocMentionDetails; + type Value = PermanentDeleteChangePolicyDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a PaperDocMentionDetails struct") + f.write_str("a PermanentDeleteChangePolicyDetails struct") } fn visit_map>(self, map: V) -> Result { - PaperDocMentionDetails::internal_deserialize(map) + PermanentDeleteChangePolicyDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("PaperDocMentionDetails", PAPER_DOC_MENTION_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("PermanentDeleteChangePolicyDetails", PERMANENT_DELETE_CHANGE_POLICY_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for PaperDocMentionDetails { +impl ::serde::ser::Serialize for PermanentDeleteChangePolicyDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("PaperDocMentionDetails", 1)?; + let mut s = serializer.serialize_struct("PermanentDeleteChangePolicyDetails", 2)?; self.internal_serialize::(&mut s)?; s.end() } @@ -74689,30 +96199,30 @@ impl ::serde::ser::Serialize for PaperDocMentionDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct PaperDocMentionType { +pub struct PermanentDeleteChangePolicyType { pub description: String, } -impl PaperDocMentionType { +impl PermanentDeleteChangePolicyType { pub fn new(description: String) -> Self { - PaperDocMentionType { + PermanentDeleteChangePolicyType { description, } } } -const PAPER_DOC_MENTION_TYPE_FIELDS: &[&str] = &["description"]; -impl PaperDocMentionType { +const PERMANENT_DELETE_CHANGE_POLICY_TYPE_FIELDS: &[&str] = &["description"]; +impl PermanentDeleteChangePolicyType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -74733,7 +96243,7 @@ impl PaperDocMentionType { if optional && nothing { return Ok(None); } - let result = PaperDocMentionType { + let result = PermanentDeleteChangePolicyType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -74749,102 +96259,327 @@ impl PaperDocMentionType { } } -impl<'de> ::serde::de::Deserialize<'de> for PaperDocMentionType { +impl<'de> ::serde::de::Deserialize<'de> for PermanentDeleteChangePolicyType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = PaperDocMentionType; + type Value = PermanentDeleteChangePolicyType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a PaperDocMentionType struct") + f.write_str("a PermanentDeleteChangePolicyType struct") } fn visit_map>(self, map: V) -> Result { - PaperDocMentionType::internal_deserialize(map) + PermanentDeleteChangePolicyType::internal_deserialize(map) } } - deserializer.deserialize_struct("PaperDocMentionType", PAPER_DOC_MENTION_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("PermanentDeleteChangePolicyType", PERMANENT_DELETE_CHANGE_POLICY_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for PaperDocMentionType { +impl ::serde::ser::Serialize for PermanentDeleteChangePolicyType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("PaperDocMentionType", 1)?; + let mut s = serializer.serialize_struct("PermanentDeleteChangePolicyType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Transferred ownership of Paper doc. #[derive(Debug, Clone, PartialEq, Eq)] -#[non_exhaustive] // structs may have more fields added in the future. -pub struct PaperDocOwnershipChangedDetails { - /// Event unique identifier. - pub event_uuid: String, - /// New owner. - pub new_owner_user_id: crate::types::users_common::AccountId, - /// Previous owner. - pub old_owner_user_id: Option, +#[non_exhaustive] // variants may be added in the future +pub enum PlacementRestriction { + AustraliaOnly, + CanadaOnly, + EuropeOnly, + JapanOnly, + None, + UkOnly, + UsS3Only, + /// Catch-all used for unrecognized values returned from the server. Encountering this value + /// typically indicates that this SDK version is out of date. + Other, } -impl PaperDocOwnershipChangedDetails { - pub fn new( - event_uuid: String, - new_owner_user_id: crate::types::users_common::AccountId, - ) -> Self { - PaperDocOwnershipChangedDetails { - event_uuid, - new_owner_user_id, - old_owner_user_id: None, +impl<'de> ::serde::de::Deserialize<'de> for PlacementRestriction { + fn deserialize>(deserializer: D) -> Result { + // union deserializer + use serde::de::{self, MapAccess, Visitor}; + struct EnumVisitor; + impl<'de> Visitor<'de> for EnumVisitor { + type Value = PlacementRestriction; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a PlacementRestriction structure") + } + fn visit_map>(self, mut map: V) -> Result { + let tag: &str = match map.next_key()? { + Some(".tag") => map.next_value()?, + _ => return Err(de::Error::missing_field(".tag")) + }; + let value = match tag { + "australia_only" => PlacementRestriction::AustraliaOnly, + "canada_only" => PlacementRestriction::CanadaOnly, + "europe_only" => PlacementRestriction::EuropeOnly, + "japan_only" => PlacementRestriction::JapanOnly, + "none" => PlacementRestriction::None, + "uk_only" => PlacementRestriction::UkOnly, + "us_s3_only" => PlacementRestriction::UsS3Only, + _ => PlacementRestriction::Other, + }; + crate::eat_json_fields(&mut map)?; + Ok(value) + } + } + const VARIANTS: &[&str] = &["australia_only", + "canada_only", + "europe_only", + "japan_only", + "none", + "uk_only", + "us_s3_only", + "other"]; + deserializer.deserialize_struct("PlacementRestriction", VARIANTS, EnumVisitor) + } +} + +impl ::serde::ser::Serialize for PlacementRestriction { + fn serialize(&self, serializer: S) -> Result { + // union serializer + use serde::ser::SerializeStruct; + match self { + PlacementRestriction::AustraliaOnly => { + // unit + let mut s = serializer.serialize_struct("PlacementRestriction", 1)?; + s.serialize_field(".tag", "australia_only")?; + s.end() + } + PlacementRestriction::CanadaOnly => { + // unit + let mut s = serializer.serialize_struct("PlacementRestriction", 1)?; + s.serialize_field(".tag", "canada_only")?; + s.end() + } + PlacementRestriction::EuropeOnly => { + // unit + let mut s = serializer.serialize_struct("PlacementRestriction", 1)?; + s.serialize_field(".tag", "europe_only")?; + s.end() + } + PlacementRestriction::JapanOnly => { + // unit + let mut s = serializer.serialize_struct("PlacementRestriction", 1)?; + s.serialize_field(".tag", "japan_only")?; + s.end() + } + PlacementRestriction::None => { + // unit + let mut s = serializer.serialize_struct("PlacementRestriction", 1)?; + s.serialize_field(".tag", "none")?; + s.end() + } + PlacementRestriction::UkOnly => { + // unit + let mut s = serializer.serialize_struct("PlacementRestriction", 1)?; + s.serialize_field(".tag", "uk_only")?; + s.end() + } + PlacementRestriction::UsS3Only => { + // unit + let mut s = serializer.serialize_struct("PlacementRestriction", 1)?; + s.serialize_field(".tag", "us_s3_only")?; + s.end() + } + PlacementRestriction::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) + } + } +} + +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // variants may be added in the future +pub enum PolicyType { + Disposition, + Retention, + /// Catch-all used for unrecognized values returned from the server. Encountering this value + /// typically indicates that this SDK version is out of date. + Other, +} + +impl<'de> ::serde::de::Deserialize<'de> for PolicyType { + fn deserialize>(deserializer: D) -> Result { + // union deserializer + use serde::de::{self, MapAccess, Visitor}; + struct EnumVisitor; + impl<'de> Visitor<'de> for EnumVisitor { + type Value = PolicyType; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a PolicyType structure") + } + fn visit_map>(self, mut map: V) -> Result { + let tag: &str = match map.next_key()? { + Some(".tag") => map.next_value()?, + _ => return Err(de::Error::missing_field(".tag")) + }; + let value = match tag { + "disposition" => PolicyType::Disposition, + "retention" => PolicyType::Retention, + _ => PolicyType::Other, + }; + crate::eat_json_fields(&mut map)?; + Ok(value) + } + } + const VARIANTS: &[&str] = &["disposition", + "retention", + "other"]; + deserializer.deserialize_struct("PolicyType", VARIANTS, EnumVisitor) + } +} + +impl ::serde::ser::Serialize for PolicyType { + fn serialize(&self, serializer: S) -> Result { + // union serializer + use serde::ser::SerializeStruct; + match self { + PolicyType::Disposition => { + // unit + let mut s = serializer.serialize_struct("PolicyType", 1)?; + s.serialize_field(".tag", "disposition")?; + s.end() + } + PolicyType::Retention => { + // unit + let mut s = serializer.serialize_struct("PolicyType", 1)?; + s.serialize_field(".tag", "retention")?; + s.end() + } + PolicyType::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) + } + } +} + +/// Policy for deciding whether team users can use Previews AI +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // variants may be added in the future +pub enum PreviewsAiPolicy { + Default, + Disabled, + Enabled, + /// Catch-all used for unrecognized values returned from the server. Encountering this value + /// typically indicates that this SDK version is out of date. + Other, +} + +impl<'de> ::serde::de::Deserialize<'de> for PreviewsAiPolicy { + fn deserialize>(deserializer: D) -> Result { + // union deserializer + use serde::de::{self, MapAccess, Visitor}; + struct EnumVisitor; + impl<'de> Visitor<'de> for EnumVisitor { + type Value = PreviewsAiPolicy; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a PreviewsAiPolicy structure") + } + fn visit_map>(self, mut map: V) -> Result { + let tag: &str = match map.next_key()? { + Some(".tag") => map.next_value()?, + _ => return Err(de::Error::missing_field(".tag")) + }; + let value = match tag { + "default" => PreviewsAiPolicy::Default, + "disabled" => PreviewsAiPolicy::Disabled, + "enabled" => PreviewsAiPolicy::Enabled, + _ => PreviewsAiPolicy::Other, + }; + crate::eat_json_fields(&mut map)?; + Ok(value) + } + } + const VARIANTS: &[&str] = &["default", + "disabled", + "enabled", + "other"]; + deserializer.deserialize_struct("PreviewsAiPolicy", VARIANTS, EnumVisitor) + } +} + +impl ::serde::ser::Serialize for PreviewsAiPolicy { + fn serialize(&self, serializer: S) -> Result { + // union serializer + use serde::ser::SerializeStruct; + match self { + PreviewsAiPolicy::Default => { + // unit + let mut s = serializer.serialize_struct("PreviewsAiPolicy", 1)?; + s.serialize_field(".tag", "default")?; + s.end() + } + PreviewsAiPolicy::Disabled => { + // unit + let mut s = serializer.serialize_struct("PreviewsAiPolicy", 1)?; + s.serialize_field(".tag", "disabled")?; + s.end() + } + PreviewsAiPolicy::Enabled => { + // unit + let mut s = serializer.serialize_struct("PreviewsAiPolicy", 1)?; + s.serialize_field(".tag", "enabled")?; + s.end() + } + PreviewsAiPolicy::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) } } +} - pub fn with_old_owner_user_id(mut self, value: crate::types::users_common::AccountId) -> Self { - self.old_owner_user_id = Some(value); - self +/// Changed Dropbox AI policy for team. +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct PreviewsAiPolicyChangedDetails { + /// To. + pub new_value: PreviewsAiPolicy, + /// From. + pub previous_value: PreviewsAiPolicy, +} + +impl PreviewsAiPolicyChangedDetails { + pub fn new(new_value: PreviewsAiPolicy, previous_value: PreviewsAiPolicy) -> Self { + PreviewsAiPolicyChangedDetails { + new_value, + previous_value, + } } } -const PAPER_DOC_OWNERSHIP_CHANGED_DETAILS_FIELDS: &[&str] = &["event_uuid", - "new_owner_user_id", - "old_owner_user_id"]; -impl PaperDocOwnershipChangedDetails { +const PREVIEWS_AI_POLICY_CHANGED_DETAILS_FIELDS: &[&str] = &["new_value", + "previous_value"]; +impl PreviewsAiPolicyChangedDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_event_uuid = None; - let mut field_new_owner_user_id = None; - let mut field_old_owner_user_id = None; + ) -> Result, V::Error> { + let mut field_new_value = None; + let mut field_previous_value = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "event_uuid" => { - if field_event_uuid.is_some() { - return Err(::serde::de::Error::duplicate_field("event_uuid")); - } - field_event_uuid = Some(map.next_value()?); - } - "new_owner_user_id" => { - if field_new_owner_user_id.is_some() { - return Err(::serde::de::Error::duplicate_field("new_owner_user_id")); + "new_value" => { + if field_new_value.is_some() { + return Err(::serde::de::Error::duplicate_field("new_value")); } - field_new_owner_user_id = Some(map.next_value()?); + field_new_value = Some(map.next_value()?); } - "old_owner_user_id" => { - if field_old_owner_user_id.is_some() { - return Err(::serde::de::Error::duplicate_field("old_owner_user_id")); + "previous_value" => { + if field_previous_value.is_some() { + return Err(::serde::de::Error::duplicate_field("previous_value")); } - field_old_owner_user_id = Some(map.next_value()?); + field_previous_value = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -74855,10 +96590,9 @@ impl PaperDocOwnershipChangedDetails { if optional && nothing { return Ok(None); } - let result = PaperDocOwnershipChangedDetails { - event_uuid: field_event_uuid.ok_or_else(|| ::serde::de::Error::missing_field("event_uuid"))?, - new_owner_user_id: field_new_owner_user_id.ok_or_else(|| ::serde::de::Error::missing_field("new_owner_user_id"))?, - old_owner_user_id: field_old_owner_user_id.and_then(Option::flatten), + let result = PreviewsAiPolicyChangedDetails { + new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, + previous_value: field_previous_value.ok_or_else(|| ::serde::de::Error::missing_field("previous_value"))?, }; Ok(Some(result)) } @@ -74868,38 +96602,35 @@ impl PaperDocOwnershipChangedDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("event_uuid", &self.event_uuid)?; - s.serialize_field("new_owner_user_id", &self.new_owner_user_id)?; - if let Some(val) = &self.old_owner_user_id { - s.serialize_field("old_owner_user_id", val)?; - } + s.serialize_field("new_value", &self.new_value)?; + s.serialize_field("previous_value", &self.previous_value)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for PaperDocOwnershipChangedDetails { +impl<'de> ::serde::de::Deserialize<'de> for PreviewsAiPolicyChangedDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = PaperDocOwnershipChangedDetails; + type Value = PreviewsAiPolicyChangedDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a PaperDocOwnershipChangedDetails struct") + f.write_str("a PreviewsAiPolicyChangedDetails struct") } fn visit_map>(self, map: V) -> Result { - PaperDocOwnershipChangedDetails::internal_deserialize(map) + PreviewsAiPolicyChangedDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("PaperDocOwnershipChangedDetails", PAPER_DOC_OWNERSHIP_CHANGED_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("PreviewsAiPolicyChangedDetails", PREVIEWS_AI_POLICY_CHANGED_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for PaperDocOwnershipChangedDetails { +impl ::serde::ser::Serialize for PreviewsAiPolicyChangedDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("PaperDocOwnershipChangedDetails", 3)?; + let mut s = serializer.serialize_struct("PreviewsAiPolicyChangedDetails", 2)?; self.internal_serialize::(&mut s)?; s.end() } @@ -74907,30 +96638,30 @@ impl ::serde::ser::Serialize for PaperDocOwnershipChangedDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct PaperDocOwnershipChangedType { +pub struct PreviewsAiPolicyChangedType { pub description: String, } -impl PaperDocOwnershipChangedType { +impl PreviewsAiPolicyChangedType { pub fn new(description: String) -> Self { - PaperDocOwnershipChangedType { + PreviewsAiPolicyChangedType { description, } } } -const PAPER_DOC_OWNERSHIP_CHANGED_TYPE_FIELDS: &[&str] = &["description"]; -impl PaperDocOwnershipChangedType { +const PREVIEWS_AI_POLICY_CHANGED_TYPE_FIELDS: &[&str] = &["description"]; +impl PreviewsAiPolicyChangedType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -74951,7 +96682,7 @@ impl PaperDocOwnershipChangedType { if optional && nothing { return Ok(None); } - let result = PaperDocOwnershipChangedType { + let result = PreviewsAiPolicyChangedType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -74967,72 +96698,83 @@ impl PaperDocOwnershipChangedType { } } -impl<'de> ::serde::de::Deserialize<'de> for PaperDocOwnershipChangedType { +impl<'de> ::serde::de::Deserialize<'de> for PreviewsAiPolicyChangedType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = PaperDocOwnershipChangedType; + type Value = PreviewsAiPolicyChangedType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a PaperDocOwnershipChangedType struct") + f.write_str("a PreviewsAiPolicyChangedType struct") } fn visit_map>(self, map: V) -> Result { - PaperDocOwnershipChangedType::internal_deserialize(map) + PreviewsAiPolicyChangedType::internal_deserialize(map) } } - deserializer.deserialize_struct("PaperDocOwnershipChangedType", PAPER_DOC_OWNERSHIP_CHANGED_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("PreviewsAiPolicyChangedType", PREVIEWS_AI_POLICY_CHANGED_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for PaperDocOwnershipChangedType { +impl ::serde::ser::Serialize for PreviewsAiPolicyChangedType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("PaperDocOwnershipChangedType", 1)?; + let mut s = serializer.serialize_struct("PreviewsAiPolicyChangedType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Requested access to Paper doc. +/// Team merge request acceptance details shown to the primary team #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct PaperDocRequestAccessDetails { - /// Event unique identifier. - pub event_uuid: String, +pub struct PrimaryTeamRequestAcceptedDetails { + /// The secondary team name. + pub secondary_team: String, + /// The name of the secondary team admin who sent the request originally. + pub sent_by: String, } -impl PaperDocRequestAccessDetails { - pub fn new(event_uuid: String) -> Self { - PaperDocRequestAccessDetails { - event_uuid, +impl PrimaryTeamRequestAcceptedDetails { + pub fn new(secondary_team: String, sent_by: String) -> Self { + PrimaryTeamRequestAcceptedDetails { + secondary_team, + sent_by, } } } -const PAPER_DOC_REQUEST_ACCESS_DETAILS_FIELDS: &[&str] = &["event_uuid"]; -impl PaperDocRequestAccessDetails { +const PRIMARY_TEAM_REQUEST_ACCEPTED_DETAILS_FIELDS: &[&str] = &["secondary_team", + "sent_by"]; +impl PrimaryTeamRequestAcceptedDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_event_uuid = None; + ) -> Result, V::Error> { + let mut field_secondary_team = None; + let mut field_sent_by = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "event_uuid" => { - if field_event_uuid.is_some() { - return Err(::serde::de::Error::duplicate_field("event_uuid")); + "secondary_team" => { + if field_secondary_team.is_some() { + return Err(::serde::de::Error::duplicate_field("secondary_team")); } - field_event_uuid = Some(map.next_value()?); + field_secondary_team = Some(map.next_value()?); + } + "sent_by" => { + if field_sent_by.is_some() { + return Err(::serde::de::Error::duplicate_field("sent_by")); + } + field_sent_by = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -75043,8 +96785,9 @@ impl PaperDocRequestAccessDetails { if optional && nothing { return Ok(None); } - let result = PaperDocRequestAccessDetails { - event_uuid: field_event_uuid.ok_or_else(|| ::serde::de::Error::missing_field("event_uuid"))?, + let result = PrimaryTeamRequestAcceptedDetails { + secondary_team: field_secondary_team.ok_or_else(|| ::serde::de::Error::missing_field("secondary_team"))?, + sent_by: field_sent_by.ok_or_else(|| ::serde::de::Error::missing_field("sent_by"))?, }; Ok(Some(result)) } @@ -75054,75 +96797,89 @@ impl PaperDocRequestAccessDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("event_uuid", &self.event_uuid)?; + s.serialize_field("secondary_team", &self.secondary_team)?; + s.serialize_field("sent_by", &self.sent_by)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for PaperDocRequestAccessDetails { +impl<'de> ::serde::de::Deserialize<'de> for PrimaryTeamRequestAcceptedDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = PaperDocRequestAccessDetails; + type Value = PrimaryTeamRequestAcceptedDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a PaperDocRequestAccessDetails struct") + f.write_str("a PrimaryTeamRequestAcceptedDetails struct") } fn visit_map>(self, map: V) -> Result { - PaperDocRequestAccessDetails::internal_deserialize(map) + PrimaryTeamRequestAcceptedDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("PaperDocRequestAccessDetails", PAPER_DOC_REQUEST_ACCESS_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("PrimaryTeamRequestAcceptedDetails", PRIMARY_TEAM_REQUEST_ACCEPTED_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for PaperDocRequestAccessDetails { +impl ::serde::ser::Serialize for PrimaryTeamRequestAcceptedDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("PaperDocRequestAccessDetails", 1)?; + let mut s = serializer.serialize_struct("PrimaryTeamRequestAcceptedDetails", 2)?; self.internal_serialize::(&mut s)?; s.end() } } +/// Team merge request cancellation details shown to the primary team #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct PaperDocRequestAccessType { - pub description: String, +pub struct PrimaryTeamRequestCanceledDetails { + /// The secondary team name. + pub secondary_team: String, + /// The name of the secondary team admin who sent the request originally. + pub sent_by: String, } -impl PaperDocRequestAccessType { - pub fn new(description: String) -> Self { - PaperDocRequestAccessType { - description, +impl PrimaryTeamRequestCanceledDetails { + pub fn new(secondary_team: String, sent_by: String) -> Self { + PrimaryTeamRequestCanceledDetails { + secondary_team, + sent_by, } } } -const PAPER_DOC_REQUEST_ACCESS_TYPE_FIELDS: &[&str] = &["description"]; -impl PaperDocRequestAccessType { +const PRIMARY_TEAM_REQUEST_CANCELED_DETAILS_FIELDS: &[&str] = &["secondary_team", + "sent_by"]; +impl PrimaryTeamRequestCanceledDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_description = None; + ) -> Result, V::Error> { + let mut field_secondary_team = None; + let mut field_sent_by = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "description" => { - if field_description.is_some() { - return Err(::serde::de::Error::duplicate_field("description")); + "secondary_team" => { + if field_secondary_team.is_some() { + return Err(::serde::de::Error::duplicate_field("secondary_team")); } - field_description = Some(map.next_value()?); + field_secondary_team = Some(map.next_value()?); + } + "sent_by" => { + if field_sent_by.is_some() { + return Err(::serde::de::Error::duplicate_field("sent_by")); + } + field_sent_by = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -75133,8 +96890,9 @@ impl PaperDocRequestAccessType { if optional && nothing { return Ok(None); } - let result = PaperDocRequestAccessType { - description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + let result = PrimaryTeamRequestCanceledDetails { + secondary_team: field_secondary_team.ok_or_else(|| ::serde::de::Error::missing_field("secondary_team"))?, + sent_by: field_sent_by.ok_or_else(|| ::serde::de::Error::missing_field("sent_by"))?, }; Ok(Some(result)) } @@ -75144,93 +96902,89 @@ impl PaperDocRequestAccessType { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("description", &self.description)?; + s.serialize_field("secondary_team", &self.secondary_team)?; + s.serialize_field("sent_by", &self.sent_by)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for PaperDocRequestAccessType { +impl<'de> ::serde::de::Deserialize<'de> for PrimaryTeamRequestCanceledDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = PaperDocRequestAccessType; + type Value = PrimaryTeamRequestCanceledDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a PaperDocRequestAccessType struct") + f.write_str("a PrimaryTeamRequestCanceledDetails struct") } fn visit_map>(self, map: V) -> Result { - PaperDocRequestAccessType::internal_deserialize(map) + PrimaryTeamRequestCanceledDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("PaperDocRequestAccessType", PAPER_DOC_REQUEST_ACCESS_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("PrimaryTeamRequestCanceledDetails", PRIMARY_TEAM_REQUEST_CANCELED_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for PaperDocRequestAccessType { +impl ::serde::ser::Serialize for PrimaryTeamRequestCanceledDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("PaperDocRequestAccessType", 1)?; + let mut s = serializer.serialize_struct("PrimaryTeamRequestCanceledDetails", 2)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Resolved Paper doc comment. +/// Team merge request expiration details shown to the primary team #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct PaperDocResolveCommentDetails { - /// Event unique identifier. - pub event_uuid: String, - /// Comment text. - pub comment_text: Option, +pub struct PrimaryTeamRequestExpiredDetails { + /// The secondary team name. + pub secondary_team: String, + /// The name of the secondary team admin who sent the request originally. + pub sent_by: String, } -impl PaperDocResolveCommentDetails { - pub fn new(event_uuid: String) -> Self { - PaperDocResolveCommentDetails { - event_uuid, - comment_text: None, +impl PrimaryTeamRequestExpiredDetails { + pub fn new(secondary_team: String, sent_by: String) -> Self { + PrimaryTeamRequestExpiredDetails { + secondary_team, + sent_by, } } - - pub fn with_comment_text(mut self, value: String) -> Self { - self.comment_text = Some(value); - self - } } -const PAPER_DOC_RESOLVE_COMMENT_DETAILS_FIELDS: &[&str] = &["event_uuid", - "comment_text"]; -impl PaperDocResolveCommentDetails { +const PRIMARY_TEAM_REQUEST_EXPIRED_DETAILS_FIELDS: &[&str] = &["secondary_team", + "sent_by"]; +impl PrimaryTeamRequestExpiredDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_event_uuid = None; - let mut field_comment_text = None; + ) -> Result, V::Error> { + let mut field_secondary_team = None; + let mut field_sent_by = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "event_uuid" => { - if field_event_uuid.is_some() { - return Err(::serde::de::Error::duplicate_field("event_uuid")); + "secondary_team" => { + if field_secondary_team.is_some() { + return Err(::serde::de::Error::duplicate_field("secondary_team")); } - field_event_uuid = Some(map.next_value()?); + field_secondary_team = Some(map.next_value()?); } - "comment_text" => { - if field_comment_text.is_some() { - return Err(::serde::de::Error::duplicate_field("comment_text")); + "sent_by" => { + if field_sent_by.is_some() { + return Err(::serde::de::Error::duplicate_field("sent_by")); } - field_comment_text = Some(map.next_value()?); + field_sent_by = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -75241,9 +96995,9 @@ impl PaperDocResolveCommentDetails { if optional && nothing { return Ok(None); } - let result = PaperDocResolveCommentDetails { - event_uuid: field_event_uuid.ok_or_else(|| ::serde::de::Error::missing_field("event_uuid"))?, - comment_text: field_comment_text.and_then(Option::flatten), + let result = PrimaryTeamRequestExpiredDetails { + secondary_team: field_secondary_team.ok_or_else(|| ::serde::de::Error::missing_field("secondary_team"))?, + sent_by: field_sent_by.ok_or_else(|| ::serde::de::Error::missing_field("sent_by"))?, }; Ok(Some(result)) } @@ -75253,78 +97007,89 @@ impl PaperDocResolveCommentDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("event_uuid", &self.event_uuid)?; - if let Some(val) = &self.comment_text { - s.serialize_field("comment_text", val)?; - } + s.serialize_field("secondary_team", &self.secondary_team)?; + s.serialize_field("sent_by", &self.sent_by)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for PaperDocResolveCommentDetails { +impl<'de> ::serde::de::Deserialize<'de> for PrimaryTeamRequestExpiredDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = PaperDocResolveCommentDetails; + type Value = PrimaryTeamRequestExpiredDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a PaperDocResolveCommentDetails struct") + f.write_str("a PrimaryTeamRequestExpiredDetails struct") } fn visit_map>(self, map: V) -> Result { - PaperDocResolveCommentDetails::internal_deserialize(map) + PrimaryTeamRequestExpiredDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("PaperDocResolveCommentDetails", PAPER_DOC_RESOLVE_COMMENT_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("PrimaryTeamRequestExpiredDetails", PRIMARY_TEAM_REQUEST_EXPIRED_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for PaperDocResolveCommentDetails { +impl ::serde::ser::Serialize for PrimaryTeamRequestExpiredDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("PaperDocResolveCommentDetails", 2)?; + let mut s = serializer.serialize_struct("PrimaryTeamRequestExpiredDetails", 2)?; self.internal_serialize::(&mut s)?; s.end() } } +/// Team merge request reminder details shown to the primary team #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct PaperDocResolveCommentType { - pub description: String, +pub struct PrimaryTeamRequestReminderDetails { + /// The secondary team name. + pub secondary_team: String, + /// The name of the primary team admin the request was sent to. + pub sent_to: String, } -impl PaperDocResolveCommentType { - pub fn new(description: String) -> Self { - PaperDocResolveCommentType { - description, +impl PrimaryTeamRequestReminderDetails { + pub fn new(secondary_team: String, sent_to: String) -> Self { + PrimaryTeamRequestReminderDetails { + secondary_team, + sent_to, } } } -const PAPER_DOC_RESOLVE_COMMENT_TYPE_FIELDS: &[&str] = &["description"]; -impl PaperDocResolveCommentType { +const PRIMARY_TEAM_REQUEST_REMINDER_DETAILS_FIELDS: &[&str] = &["secondary_team", + "sent_to"]; +impl PrimaryTeamRequestReminderDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_description = None; + ) -> Result, V::Error> { + let mut field_secondary_team = None; + let mut field_sent_to = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "description" => { - if field_description.is_some() { - return Err(::serde::de::Error::duplicate_field("description")); + "secondary_team" => { + if field_secondary_team.is_some() { + return Err(::serde::de::Error::duplicate_field("secondary_team")); } - field_description = Some(map.next_value()?); + field_secondary_team = Some(map.next_value()?); + } + "sent_to" => { + if field_sent_to.is_some() { + return Err(::serde::de::Error::duplicate_field("sent_to")); + } + field_sent_to = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -75335,8 +97100,9 @@ impl PaperDocResolveCommentType { if optional && nothing { return Ok(None); } - let result = PaperDocResolveCommentType { - description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + let result = PrimaryTeamRequestReminderDetails { + secondary_team: field_secondary_team.ok_or_else(|| ::serde::de::Error::missing_field("secondary_team"))?, + sent_to: field_sent_to.ok_or_else(|| ::serde::de::Error::missing_field("sent_to"))?, }; Ok(Some(result)) } @@ -75346,77 +97112,89 @@ impl PaperDocResolveCommentType { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("description", &self.description)?; + s.serialize_field("secondary_team", &self.secondary_team)?; + s.serialize_field("sent_to", &self.sent_to)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for PaperDocResolveCommentType { +impl<'de> ::serde::de::Deserialize<'de> for PrimaryTeamRequestReminderDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = PaperDocResolveCommentType; + type Value = PrimaryTeamRequestReminderDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a PaperDocResolveCommentType struct") + f.write_str("a PrimaryTeamRequestReminderDetails struct") } fn visit_map>(self, map: V) -> Result { - PaperDocResolveCommentType::internal_deserialize(map) + PrimaryTeamRequestReminderDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("PaperDocResolveCommentType", PAPER_DOC_RESOLVE_COMMENT_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("PrimaryTeamRequestReminderDetails", PRIMARY_TEAM_REQUEST_REMINDER_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for PaperDocResolveCommentType { +impl ::serde::ser::Serialize for PrimaryTeamRequestReminderDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("PaperDocResolveCommentType", 1)?; + let mut s = serializer.serialize_struct("PrimaryTeamRequestReminderDetails", 2)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Restored Paper doc to previous version. +/// Product assigned to team member. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct PaperDocRevertDetails { - /// Event unique identifier. - pub event_uuid: String, +pub struct ProductAssignedToMemberDetails { + /// User's name. + pub user_name: UserNameLogInfo, + /// Product name. + pub product_name: ProductLogInfo, } -impl PaperDocRevertDetails { - pub fn new(event_uuid: String) -> Self { - PaperDocRevertDetails { - event_uuid, +impl ProductAssignedToMemberDetails { + pub fn new(user_name: UserNameLogInfo, product_name: ProductLogInfo) -> Self { + ProductAssignedToMemberDetails { + user_name, + product_name, } } } -const PAPER_DOC_REVERT_DETAILS_FIELDS: &[&str] = &["event_uuid"]; -impl PaperDocRevertDetails { +const PRODUCT_ASSIGNED_TO_MEMBER_DETAILS_FIELDS: &[&str] = &["user_name", + "product_name"]; +impl ProductAssignedToMemberDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_event_uuid = None; + ) -> Result, V::Error> { + let mut field_user_name = None; + let mut field_product_name = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "event_uuid" => { - if field_event_uuid.is_some() { - return Err(::serde::de::Error::duplicate_field("event_uuid")); + "user_name" => { + if field_user_name.is_some() { + return Err(::serde::de::Error::duplicate_field("user_name")); } - field_event_uuid = Some(map.next_value()?); + field_user_name = Some(map.next_value()?); + } + "product_name" => { + if field_product_name.is_some() { + return Err(::serde::de::Error::duplicate_field("product_name")); + } + field_product_name = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -75427,8 +97205,9 @@ impl PaperDocRevertDetails { if optional && nothing { return Ok(None); } - let result = PaperDocRevertDetails { - event_uuid: field_event_uuid.ok_or_else(|| ::serde::de::Error::missing_field("event_uuid"))?, + let result = ProductAssignedToMemberDetails { + user_name: field_user_name.ok_or_else(|| ::serde::de::Error::missing_field("user_name"))?, + product_name: field_product_name.ok_or_else(|| ::serde::de::Error::missing_field("product_name"))?, }; Ok(Some(result)) } @@ -75438,34 +97217,35 @@ impl PaperDocRevertDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("event_uuid", &self.event_uuid)?; + s.serialize_field("user_name", &self.user_name)?; + s.serialize_field("product_name", &self.product_name)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for PaperDocRevertDetails { +impl<'de> ::serde::de::Deserialize<'de> for ProductAssignedToMemberDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = PaperDocRevertDetails; + type Value = ProductAssignedToMemberDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a PaperDocRevertDetails struct") + f.write_str("a ProductAssignedToMemberDetails struct") } fn visit_map>(self, map: V) -> Result { - PaperDocRevertDetails::internal_deserialize(map) + ProductAssignedToMemberDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("PaperDocRevertDetails", PAPER_DOC_REVERT_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("ProductAssignedToMemberDetails", PRODUCT_ASSIGNED_TO_MEMBER_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for PaperDocRevertDetails { +impl ::serde::ser::Serialize for ProductAssignedToMemberDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("PaperDocRevertDetails", 1)?; + let mut s = serializer.serialize_struct("ProductAssignedToMemberDetails", 2)?; self.internal_serialize::(&mut s)?; s.end() } @@ -75473,30 +97253,30 @@ impl ::serde::ser::Serialize for PaperDocRevertDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct PaperDocRevertType { +pub struct ProductAssignedToMemberType { pub description: String, } -impl PaperDocRevertType { +impl ProductAssignedToMemberType { pub fn new(description: String) -> Self { - PaperDocRevertType { + ProductAssignedToMemberType { description, } } } -const PAPER_DOC_REVERT_TYPE_FIELDS: &[&str] = &["description"]; -impl PaperDocRevertType { +const PRODUCT_ASSIGNED_TO_MEMBER_TYPE_FIELDS: &[&str] = &["description"]; +impl ProductAssignedToMemberType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -75517,7 +97297,7 @@ impl PaperDocRevertType { if optional && nothing { return Ok(None); } - let result = PaperDocRevertType { + let result = ProductAssignedToMemberType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -75533,162 +97313,72 @@ impl PaperDocRevertType { } } -impl<'de> ::serde::de::Deserialize<'de> for PaperDocRevertType { - fn deserialize>(deserializer: D) -> Result { - // struct deserializer - use serde::de::{MapAccess, Visitor}; - struct StructVisitor; - impl<'de> Visitor<'de> for StructVisitor { - type Value = PaperDocRevertType; - fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a PaperDocRevertType struct") - } - fn visit_map>(self, map: V) -> Result { - PaperDocRevertType::internal_deserialize(map) - } - } - deserializer.deserialize_struct("PaperDocRevertType", PAPER_DOC_REVERT_TYPE_FIELDS, StructVisitor) - } -} - -impl ::serde::ser::Serialize for PaperDocRevertType { - fn serialize(&self, serializer: S) -> Result { - // struct serializer - use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("PaperDocRevertType", 1)?; - self.internal_serialize::(&mut s)?; - s.end() - } -} - -/// Shared Paper doc via Slack. -#[derive(Debug, Clone, PartialEq, Eq)] -#[non_exhaustive] // structs may have more fields added in the future. -pub struct PaperDocSlackShareDetails { - /// Event unique identifier. - pub event_uuid: String, -} - -impl PaperDocSlackShareDetails { - pub fn new(event_uuid: String) -> Self { - PaperDocSlackShareDetails { - event_uuid, - } - } -} - -const PAPER_DOC_SLACK_SHARE_DETAILS_FIELDS: &[&str] = &["event_uuid"]; -impl PaperDocSlackShareDetails { - pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( - map: V, - ) -> Result { - Self::internal_deserialize_opt(map, false).map(Option::unwrap) - } - - pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( - mut map: V, - optional: bool, - ) -> Result, V::Error> { - let mut field_event_uuid = None; - let mut nothing = true; - while let Some(key) = map.next_key::<&str>()? { - nothing = false; - match key { - "event_uuid" => { - if field_event_uuid.is_some() { - return Err(::serde::de::Error::duplicate_field("event_uuid")); - } - field_event_uuid = Some(map.next_value()?); - } - _ => { - // unknown field allowed and ignored - map.next_value::<::serde_json::Value>()?; - } - } - } - if optional && nothing { - return Ok(None); - } - let result = PaperDocSlackShareDetails { - event_uuid: field_event_uuid.ok_or_else(|| ::serde::de::Error::missing_field("event_uuid"))?, - }; - Ok(Some(result)) - } - - pub(crate) fn internal_serialize( - &self, - s: &mut S::SerializeStruct, - ) -> Result<(), S::Error> { - use serde::ser::SerializeStruct; - s.serialize_field("event_uuid", &self.event_uuid)?; - Ok(()) - } -} - -impl<'de> ::serde::de::Deserialize<'de> for PaperDocSlackShareDetails { +impl<'de> ::serde::de::Deserialize<'de> for ProductAssignedToMemberType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = PaperDocSlackShareDetails; + type Value = ProductAssignedToMemberType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a PaperDocSlackShareDetails struct") + f.write_str("a ProductAssignedToMemberType struct") } fn visit_map>(self, map: V) -> Result { - PaperDocSlackShareDetails::internal_deserialize(map) + ProductAssignedToMemberType::internal_deserialize(map) } } - deserializer.deserialize_struct("PaperDocSlackShareDetails", PAPER_DOC_SLACK_SHARE_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("ProductAssignedToMemberType", PRODUCT_ASSIGNED_TO_MEMBER_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for PaperDocSlackShareDetails { +impl ::serde::ser::Serialize for ProductAssignedToMemberType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("PaperDocSlackShareDetails", 1)?; + let mut s = serializer.serialize_struct("ProductAssignedToMemberType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } +/// Product logged information #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct PaperDocSlackShareType { - pub description: String, +pub struct ProductLogInfo { + /// Product name. + pub product_name: String, } -impl PaperDocSlackShareType { - pub fn new(description: String) -> Self { - PaperDocSlackShareType { - description, +impl ProductLogInfo { + pub fn new(product_name: String) -> Self { + ProductLogInfo { + product_name, } } } -const PAPER_DOC_SLACK_SHARE_TYPE_FIELDS: &[&str] = &["description"]; -impl PaperDocSlackShareType { +const PRODUCT_LOG_INFO_FIELDS: &[&str] = &["product_name"]; +impl ProductLogInfo { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_description = None; + ) -> Result, V::Error> { + let mut field_product_name = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "description" => { - if field_description.is_some() { - return Err(::serde::de::Error::duplicate_field("description")); + "product_name" => { + if field_product_name.is_some() { + return Err(::serde::de::Error::duplicate_field("product_name")); } - field_description = Some(map.next_value()?); + field_product_name = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -75699,8 +97389,8 @@ impl PaperDocSlackShareType { if optional && nothing { return Ok(None); } - let result = PaperDocSlackShareType { - description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + let result = ProductLogInfo { + product_name: field_product_name.ok_or_else(|| ::serde::de::Error::missing_field("product_name"))?, }; Ok(Some(result)) } @@ -75710,77 +97400,88 @@ impl PaperDocSlackShareType { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("description", &self.description)?; + s.serialize_field("product_name", &self.product_name)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for PaperDocSlackShareType { +impl<'de> ::serde::de::Deserialize<'de> for ProductLogInfo { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = PaperDocSlackShareType; + type Value = ProductLogInfo; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a PaperDocSlackShareType struct") + f.write_str("a ProductLogInfo struct") } fn visit_map>(self, map: V) -> Result { - PaperDocSlackShareType::internal_deserialize(map) + ProductLogInfo::internal_deserialize(map) } } - deserializer.deserialize_struct("PaperDocSlackShareType", PAPER_DOC_SLACK_SHARE_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("ProductLogInfo", PRODUCT_LOG_INFO_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for PaperDocSlackShareType { +impl ::serde::ser::Serialize for ProductLogInfo { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("PaperDocSlackShareType", 1)?; + let mut s = serializer.serialize_struct("ProductLogInfo", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Shared Paper doc with users and/or groups. +/// Product removed from team member. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct PaperDocTeamInviteDetails { - /// Event unique identifier. - pub event_uuid: String, +pub struct ProductRemovedFromMemberDetails { + /// User's name. + pub user_name: UserNameLogInfo, + /// Product name. + pub product_name: ProductLogInfo, } -impl PaperDocTeamInviteDetails { - pub fn new(event_uuid: String) -> Self { - PaperDocTeamInviteDetails { - event_uuid, +impl ProductRemovedFromMemberDetails { + pub fn new(user_name: UserNameLogInfo, product_name: ProductLogInfo) -> Self { + ProductRemovedFromMemberDetails { + user_name, + product_name, } } } -const PAPER_DOC_TEAM_INVITE_DETAILS_FIELDS: &[&str] = &["event_uuid"]; -impl PaperDocTeamInviteDetails { +const PRODUCT_REMOVED_FROM_MEMBER_DETAILS_FIELDS: &[&str] = &["user_name", + "product_name"]; +impl ProductRemovedFromMemberDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_event_uuid = None; + ) -> Result, V::Error> { + let mut field_user_name = None; + let mut field_product_name = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "event_uuid" => { - if field_event_uuid.is_some() { - return Err(::serde::de::Error::duplicate_field("event_uuid")); + "user_name" => { + if field_user_name.is_some() { + return Err(::serde::de::Error::duplicate_field("user_name")); } - field_event_uuid = Some(map.next_value()?); + field_user_name = Some(map.next_value()?); + } + "product_name" => { + if field_product_name.is_some() { + return Err(::serde::de::Error::duplicate_field("product_name")); + } + field_product_name = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -75791,8 +97492,9 @@ impl PaperDocTeamInviteDetails { if optional && nothing { return Ok(None); } - let result = PaperDocTeamInviteDetails { - event_uuid: field_event_uuid.ok_or_else(|| ::serde::de::Error::missing_field("event_uuid"))?, + let result = ProductRemovedFromMemberDetails { + user_name: field_user_name.ok_or_else(|| ::serde::de::Error::missing_field("user_name"))?, + product_name: field_product_name.ok_or_else(|| ::serde::de::Error::missing_field("product_name"))?, }; Ok(Some(result)) } @@ -75802,34 +97504,35 @@ impl PaperDocTeamInviteDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("event_uuid", &self.event_uuid)?; + s.serialize_field("user_name", &self.user_name)?; + s.serialize_field("product_name", &self.product_name)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for PaperDocTeamInviteDetails { +impl<'de> ::serde::de::Deserialize<'de> for ProductRemovedFromMemberDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = PaperDocTeamInviteDetails; + type Value = ProductRemovedFromMemberDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a PaperDocTeamInviteDetails struct") + f.write_str("a ProductRemovedFromMemberDetails struct") } fn visit_map>(self, map: V) -> Result { - PaperDocTeamInviteDetails::internal_deserialize(map) + ProductRemovedFromMemberDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("PaperDocTeamInviteDetails", PAPER_DOC_TEAM_INVITE_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("ProductRemovedFromMemberDetails", PRODUCT_REMOVED_FROM_MEMBER_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for PaperDocTeamInviteDetails { +impl ::serde::ser::Serialize for ProductRemovedFromMemberDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("PaperDocTeamInviteDetails", 1)?; + let mut s = serializer.serialize_struct("ProductRemovedFromMemberDetails", 2)?; self.internal_serialize::(&mut s)?; s.end() } @@ -75837,30 +97540,30 @@ impl ::serde::ser::Serialize for PaperDocTeamInviteDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct PaperDocTeamInviteType { +pub struct ProductRemovedFromMemberType { pub description: String, } -impl PaperDocTeamInviteType { +impl ProductRemovedFromMemberType { pub fn new(description: String) -> Self { - PaperDocTeamInviteType { + ProductRemovedFromMemberType { description, } } } -const PAPER_DOC_TEAM_INVITE_TYPE_FIELDS: &[&str] = &["description"]; -impl PaperDocTeamInviteType { +const PRODUCT_REMOVED_FROM_MEMBER_TYPE_FIELDS: &[&str] = &["description"]; +impl ProductRemovedFromMemberType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -75881,7 +97584,7 @@ impl PaperDocTeamInviteType { if optional && nothing { return Ok(None); } - let result = PaperDocTeamInviteType { + let result = ProductRemovedFromMemberType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -75897,72 +97600,216 @@ impl PaperDocTeamInviteType { } } -impl<'de> ::serde::de::Deserialize<'de> for PaperDocTeamInviteType { +impl<'de> ::serde::de::Deserialize<'de> for ProductRemovedFromMemberType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = PaperDocTeamInviteType; + type Value = ProductRemovedFromMemberType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a PaperDocTeamInviteType struct") + f.write_str("a ProductRemovedFromMemberType struct") } fn visit_map>(self, map: V) -> Result { - PaperDocTeamInviteType::internal_deserialize(map) + ProductRemovedFromMemberType::internal_deserialize(map) } } - deserializer.deserialize_struct("PaperDocTeamInviteType", PAPER_DOC_TEAM_INVITE_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("ProductRemovedFromMemberType", PRODUCT_REMOVED_FROM_MEMBER_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for PaperDocTeamInviteType { +impl ::serde::ser::Serialize for ProductRemovedFromMemberType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("PaperDocTeamInviteType", 1)?; + let mut s = serializer.serialize_struct("ProductRemovedFromMemberType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Deleted Paper doc. +/// Quick action type. +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // variants may be added in the future +pub enum QuickActionType { + DeleteSharedLink, + ResetPassword, + RestoreFileOrFolder, + UnlinkApp, + UnlinkDevice, + UnlinkSession, + /// Catch-all used for unrecognized values returned from the server. Encountering this value + /// typically indicates that this SDK version is out of date. + Other, +} + +impl<'de> ::serde::de::Deserialize<'de> for QuickActionType { + fn deserialize>(deserializer: D) -> Result { + // union deserializer + use serde::de::{self, MapAccess, Visitor}; + struct EnumVisitor; + impl<'de> Visitor<'de> for EnumVisitor { + type Value = QuickActionType; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a QuickActionType structure") + } + fn visit_map>(self, mut map: V) -> Result { + let tag: &str = match map.next_key()? { + Some(".tag") => map.next_value()?, + _ => return Err(de::Error::missing_field(".tag")) + }; + let value = match tag { + "delete_shared_link" => QuickActionType::DeleteSharedLink, + "reset_password" => QuickActionType::ResetPassword, + "restore_file_or_folder" => QuickActionType::RestoreFileOrFolder, + "unlink_app" => QuickActionType::UnlinkApp, + "unlink_device" => QuickActionType::UnlinkDevice, + "unlink_session" => QuickActionType::UnlinkSession, + _ => QuickActionType::Other, + }; + crate::eat_json_fields(&mut map)?; + Ok(value) + } + } + const VARIANTS: &[&str] = &["delete_shared_link", + "reset_password", + "restore_file_or_folder", + "unlink_app", + "unlink_device", + "unlink_session", + "other"]; + deserializer.deserialize_struct("QuickActionType", VARIANTS, EnumVisitor) + } +} + +impl ::serde::ser::Serialize for QuickActionType { + fn serialize(&self, serializer: S) -> Result { + // union serializer + use serde::ser::SerializeStruct; + match self { + QuickActionType::DeleteSharedLink => { + // unit + let mut s = serializer.serialize_struct("QuickActionType", 1)?; + s.serialize_field(".tag", "delete_shared_link")?; + s.end() + } + QuickActionType::ResetPassword => { + // unit + let mut s = serializer.serialize_struct("QuickActionType", 1)?; + s.serialize_field(".tag", "reset_password")?; + s.end() + } + QuickActionType::RestoreFileOrFolder => { + // unit + let mut s = serializer.serialize_struct("QuickActionType", 1)?; + s.serialize_field(".tag", "restore_file_or_folder")?; + s.end() + } + QuickActionType::UnlinkApp => { + // unit + let mut s = serializer.serialize_struct("QuickActionType", 1)?; + s.serialize_field(".tag", "unlink_app")?; + s.end() + } + QuickActionType::UnlinkDevice => { + // unit + let mut s = serializer.serialize_struct("QuickActionType", 1)?; + s.serialize_field(".tag", "unlink_device")?; + s.end() + } + QuickActionType::UnlinkSession => { + // unit + let mut s = serializer.serialize_struct("QuickActionType", 1)?; + s.serialize_field(".tag", "unlink_session")?; + s.end() + } + QuickActionType::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) + } + } +} + +/// Created ransomware report. +#[derive(Debug, Clone, PartialEq, Eq, Default)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct RansomwareAlertCreateReportDetails { +} + +const RANSOMWARE_ALERT_CREATE_REPORT_DETAILS_FIELDS: &[&str] = &[]; +impl RansomwareAlertCreateReportDetails { + // no _opt deserializer + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + ) -> Result { + // ignore any fields found; none are presently recognized + crate::eat_json_fields(&mut map)?; + Ok(RansomwareAlertCreateReportDetails {}) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for RansomwareAlertCreateReportDetails { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = RansomwareAlertCreateReportDetails; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a RansomwareAlertCreateReportDetails struct") + } + fn visit_map>(self, map: V) -> Result { + RansomwareAlertCreateReportDetails::internal_deserialize(map) + } + } + deserializer.deserialize_struct("RansomwareAlertCreateReportDetails", RANSOMWARE_ALERT_CREATE_REPORT_DETAILS_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for RansomwareAlertCreateReportDetails { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + serializer.serialize_struct("RansomwareAlertCreateReportDetails", 0)?.end() + } +} + +/// Couldn't generate ransomware report. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct PaperDocTrashedDetails { - /// Event unique identifier. - pub event_uuid: String, +pub struct RansomwareAlertCreateReportFailedDetails { + /// Failure reason. + pub failure_reason: crate::types::team::TeamReportFailureReason, } -impl PaperDocTrashedDetails { - pub fn new(event_uuid: String) -> Self { - PaperDocTrashedDetails { - event_uuid, +impl RansomwareAlertCreateReportFailedDetails { + pub fn new(failure_reason: crate::types::team::TeamReportFailureReason) -> Self { + RansomwareAlertCreateReportFailedDetails { + failure_reason, } } } -const PAPER_DOC_TRASHED_DETAILS_FIELDS: &[&str] = &["event_uuid"]; -impl PaperDocTrashedDetails { +const RANSOMWARE_ALERT_CREATE_REPORT_FAILED_DETAILS_FIELDS: &[&str] = &["failure_reason"]; +impl RansomwareAlertCreateReportFailedDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_event_uuid = None; + ) -> Result, V::Error> { + let mut field_failure_reason = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "event_uuid" => { - if field_event_uuid.is_some() { - return Err(::serde::de::Error::duplicate_field("event_uuid")); + "failure_reason" => { + if field_failure_reason.is_some() { + return Err(::serde::de::Error::duplicate_field("failure_reason")); } - field_event_uuid = Some(map.next_value()?); + field_failure_reason = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -75973,8 +97820,8 @@ impl PaperDocTrashedDetails { if optional && nothing { return Ok(None); } - let result = PaperDocTrashedDetails { - event_uuid: field_event_uuid.ok_or_else(|| ::serde::de::Error::missing_field("event_uuid"))?, + let result = RansomwareAlertCreateReportFailedDetails { + failure_reason: field_failure_reason.ok_or_else(|| ::serde::de::Error::missing_field("failure_reason"))?, }; Ok(Some(result)) } @@ -75984,34 +97831,34 @@ impl PaperDocTrashedDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("event_uuid", &self.event_uuid)?; + s.serialize_field("failure_reason", &self.failure_reason)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for PaperDocTrashedDetails { +impl<'de> ::serde::de::Deserialize<'de> for RansomwareAlertCreateReportFailedDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = PaperDocTrashedDetails; + type Value = RansomwareAlertCreateReportFailedDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a PaperDocTrashedDetails struct") + f.write_str("a RansomwareAlertCreateReportFailedDetails struct") } fn visit_map>(self, map: V) -> Result { - PaperDocTrashedDetails::internal_deserialize(map) + RansomwareAlertCreateReportFailedDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("PaperDocTrashedDetails", PAPER_DOC_TRASHED_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("RansomwareAlertCreateReportFailedDetails", RANSOMWARE_ALERT_CREATE_REPORT_FAILED_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for PaperDocTrashedDetails { +impl ::serde::ser::Serialize for RansomwareAlertCreateReportFailedDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("PaperDocTrashedDetails", 1)?; + let mut s = serializer.serialize_struct("RansomwareAlertCreateReportFailedDetails", 1)?; self.internal_serialize::(&mut s)?; s.end() } @@ -76019,30 +97866,30 @@ impl ::serde::ser::Serialize for PaperDocTrashedDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct PaperDocTrashedType { +pub struct RansomwareAlertCreateReportFailedType { pub description: String, } -impl PaperDocTrashedType { +impl RansomwareAlertCreateReportFailedType { pub fn new(description: String) -> Self { - PaperDocTrashedType { + RansomwareAlertCreateReportFailedType { description, } } } -const PAPER_DOC_TRASHED_TYPE_FIELDS: &[&str] = &["description"]; -impl PaperDocTrashedType { +const RANSOMWARE_ALERT_CREATE_REPORT_FAILED_TYPE_FIELDS: &[&str] = &["description"]; +impl RansomwareAlertCreateReportFailedType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -76063,7 +97910,7 @@ impl PaperDocTrashedType { if optional && nothing { return Ok(None); } - let result = PaperDocTrashedType { + let result = RansomwareAlertCreateReportFailedType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -76079,88 +97926,70 @@ impl PaperDocTrashedType { } } -impl<'de> ::serde::de::Deserialize<'de> for PaperDocTrashedType { +impl<'de> ::serde::de::Deserialize<'de> for RansomwareAlertCreateReportFailedType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = PaperDocTrashedType; + type Value = RansomwareAlertCreateReportFailedType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a PaperDocTrashedType struct") + f.write_str("a RansomwareAlertCreateReportFailedType struct") } fn visit_map>(self, map: V) -> Result { - PaperDocTrashedType::internal_deserialize(map) + RansomwareAlertCreateReportFailedType::internal_deserialize(map) } } - deserializer.deserialize_struct("PaperDocTrashedType", PAPER_DOC_TRASHED_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("RansomwareAlertCreateReportFailedType", RANSOMWARE_ALERT_CREATE_REPORT_FAILED_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for PaperDocTrashedType { +impl ::serde::ser::Serialize for RansomwareAlertCreateReportFailedType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("PaperDocTrashedType", 1)?; + let mut s = serializer.serialize_struct("RansomwareAlertCreateReportFailedType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Unresolved Paper doc comment. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct PaperDocUnresolveCommentDetails { - /// Event unique identifier. - pub event_uuid: String, - /// Comment text. - pub comment_text: Option, +pub struct RansomwareAlertCreateReportType { + pub description: String, } -impl PaperDocUnresolveCommentDetails { - pub fn new(event_uuid: String) -> Self { - PaperDocUnresolveCommentDetails { - event_uuid, - comment_text: None, +impl RansomwareAlertCreateReportType { + pub fn new(description: String) -> Self { + RansomwareAlertCreateReportType { + description, } } - - pub fn with_comment_text(mut self, value: String) -> Self { - self.comment_text = Some(value); - self - } } -const PAPER_DOC_UNRESOLVE_COMMENT_DETAILS_FIELDS: &[&str] = &["event_uuid", - "comment_text"]; -impl PaperDocUnresolveCommentDetails { +const RANSOMWARE_ALERT_CREATE_REPORT_TYPE_FIELDS: &[&str] = &["description"]; +impl RansomwareAlertCreateReportType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_event_uuid = None; - let mut field_comment_text = None; + ) -> Result, V::Error> { + let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "event_uuid" => { - if field_event_uuid.is_some() { - return Err(::serde::de::Error::duplicate_field("event_uuid")); - } - field_event_uuid = Some(map.next_value()?); - } - "comment_text" => { - if field_comment_text.is_some() { - return Err(::serde::de::Error::duplicate_field("comment_text")); + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); } - field_comment_text = Some(map.next_value()?); + field_description = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -76171,9 +98000,8 @@ impl PaperDocUnresolveCommentDetails { if optional && nothing { return Ok(None); } - let result = PaperDocUnresolveCommentDetails { - event_uuid: field_event_uuid.ok_or_else(|| ::serde::de::Error::missing_field("event_uuid"))?, - comment_text: field_comment_text.and_then(Option::flatten), + let result = RansomwareAlertCreateReportType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) } @@ -76183,78 +98011,103 @@ impl PaperDocUnresolveCommentDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("event_uuid", &self.event_uuid)?; - if let Some(val) = &self.comment_text { - s.serialize_field("comment_text", val)?; - } + s.serialize_field("description", &self.description)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for PaperDocUnresolveCommentDetails { +impl<'de> ::serde::de::Deserialize<'de> for RansomwareAlertCreateReportType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = PaperDocUnresolveCommentDetails; + type Value = RansomwareAlertCreateReportType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a PaperDocUnresolveCommentDetails struct") + f.write_str("a RansomwareAlertCreateReportType struct") } fn visit_map>(self, map: V) -> Result { - PaperDocUnresolveCommentDetails::internal_deserialize(map) + RansomwareAlertCreateReportType::internal_deserialize(map) } } - deserializer.deserialize_struct("PaperDocUnresolveCommentDetails", PAPER_DOC_UNRESOLVE_COMMENT_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("RansomwareAlertCreateReportType", RANSOMWARE_ALERT_CREATE_REPORT_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for PaperDocUnresolveCommentDetails { +impl ::serde::ser::Serialize for RansomwareAlertCreateReportType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("PaperDocUnresolveCommentDetails", 2)?; + let mut s = serializer.serialize_struct("RansomwareAlertCreateReportType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } +/// Completed ransomware restore process. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct PaperDocUnresolveCommentType { - pub description: String, +pub struct RansomwareRestoreProcessCompletedDetails { + /// The status of the restore process. + pub status: String, + /// Restored files count. + pub restored_files_count: i64, + /// Restored files failed count. + pub restored_files_failed_count: i64, } -impl PaperDocUnresolveCommentType { - pub fn new(description: String) -> Self { - PaperDocUnresolveCommentType { - description, +impl RansomwareRestoreProcessCompletedDetails { + pub fn new( + status: String, + restored_files_count: i64, + restored_files_failed_count: i64, + ) -> Self { + RansomwareRestoreProcessCompletedDetails { + status, + restored_files_count, + restored_files_failed_count, } } } -const PAPER_DOC_UNRESOLVE_COMMENT_TYPE_FIELDS: &[&str] = &["description"]; -impl PaperDocUnresolveCommentType { +const RANSOMWARE_RESTORE_PROCESS_COMPLETED_DETAILS_FIELDS: &[&str] = &["status", + "restored_files_count", + "restored_files_failed_count"]; +impl RansomwareRestoreProcessCompletedDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_description = None; + ) -> Result, V::Error> { + let mut field_status = None; + let mut field_restored_files_count = None; + let mut field_restored_files_failed_count = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "description" => { - if field_description.is_some() { - return Err(::serde::de::Error::duplicate_field("description")); + "status" => { + if field_status.is_some() { + return Err(::serde::de::Error::duplicate_field("status")); } - field_description = Some(map.next_value()?); + field_status = Some(map.next_value()?); + } + "restored_files_count" => { + if field_restored_files_count.is_some() { + return Err(::serde::de::Error::duplicate_field("restored_files_count")); + } + field_restored_files_count = Some(map.next_value()?); + } + "restored_files_failed_count" => { + if field_restored_files_failed_count.is_some() { + return Err(::serde::de::Error::duplicate_field("restored_files_failed_count")); + } + field_restored_files_failed_count = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -76265,8 +98118,10 @@ impl PaperDocUnresolveCommentType { if optional && nothing { return Ok(None); } - let result = PaperDocUnresolveCommentType { - description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + let result = RansomwareRestoreProcessCompletedDetails { + status: field_status.ok_or_else(|| ::serde::de::Error::missing_field("status"))?, + restored_files_count: field_restored_files_count.ok_or_else(|| ::serde::de::Error::missing_field("restored_files_count"))?, + restored_files_failed_count: field_restored_files_failed_count.ok_or_else(|| ::serde::de::Error::missing_field("restored_files_failed_count"))?, }; Ok(Some(result)) } @@ -76276,77 +98131,77 @@ impl PaperDocUnresolveCommentType { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("description", &self.description)?; + s.serialize_field("status", &self.status)?; + s.serialize_field("restored_files_count", &self.restored_files_count)?; + s.serialize_field("restored_files_failed_count", &self.restored_files_failed_count)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for PaperDocUnresolveCommentType { +impl<'de> ::serde::de::Deserialize<'de> for RansomwareRestoreProcessCompletedDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = PaperDocUnresolveCommentType; + type Value = RansomwareRestoreProcessCompletedDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a PaperDocUnresolveCommentType struct") + f.write_str("a RansomwareRestoreProcessCompletedDetails struct") } fn visit_map>(self, map: V) -> Result { - PaperDocUnresolveCommentType::internal_deserialize(map) + RansomwareRestoreProcessCompletedDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("PaperDocUnresolveCommentType", PAPER_DOC_UNRESOLVE_COMMENT_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("RansomwareRestoreProcessCompletedDetails", RANSOMWARE_RESTORE_PROCESS_COMPLETED_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for PaperDocUnresolveCommentType { +impl ::serde::ser::Serialize for RansomwareRestoreProcessCompletedDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("PaperDocUnresolveCommentType", 1)?; + let mut s = serializer.serialize_struct("RansomwareRestoreProcessCompletedDetails", 3)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Restored Paper doc. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct PaperDocUntrashedDetails { - /// Event unique identifier. - pub event_uuid: String, +pub struct RansomwareRestoreProcessCompletedType { + pub description: String, } -impl PaperDocUntrashedDetails { - pub fn new(event_uuid: String) -> Self { - PaperDocUntrashedDetails { - event_uuid, +impl RansomwareRestoreProcessCompletedType { + pub fn new(description: String) -> Self { + RansomwareRestoreProcessCompletedType { + description, } } } -const PAPER_DOC_UNTRASHED_DETAILS_FIELDS: &[&str] = &["event_uuid"]; -impl PaperDocUntrashedDetails { +const RANSOMWARE_RESTORE_PROCESS_COMPLETED_TYPE_FIELDS: &[&str] = &["description"]; +impl RansomwareRestoreProcessCompletedType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_event_uuid = None; + ) -> Result, V::Error> { + let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "event_uuid" => { - if field_event_uuid.is_some() { - return Err(::serde::de::Error::duplicate_field("event_uuid")); + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); } - field_event_uuid = Some(map.next_value()?); + field_description = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -76357,8 +98212,8 @@ impl PaperDocUntrashedDetails { if optional && nothing { return Ok(None); } - let result = PaperDocUntrashedDetails { - event_uuid: field_event_uuid.ok_or_else(|| ::serde::de::Error::missing_field("event_uuid"))?, + let result = RansomwareRestoreProcessCompletedType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) } @@ -76368,75 +98223,77 @@ impl PaperDocUntrashedDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("event_uuid", &self.event_uuid)?; + s.serialize_field("description", &self.description)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for PaperDocUntrashedDetails { +impl<'de> ::serde::de::Deserialize<'de> for RansomwareRestoreProcessCompletedType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = PaperDocUntrashedDetails; + type Value = RansomwareRestoreProcessCompletedType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a PaperDocUntrashedDetails struct") + f.write_str("a RansomwareRestoreProcessCompletedType struct") } fn visit_map>(self, map: V) -> Result { - PaperDocUntrashedDetails::internal_deserialize(map) + RansomwareRestoreProcessCompletedType::internal_deserialize(map) } } - deserializer.deserialize_struct("PaperDocUntrashedDetails", PAPER_DOC_UNTRASHED_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("RansomwareRestoreProcessCompletedType", RANSOMWARE_RESTORE_PROCESS_COMPLETED_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for PaperDocUntrashedDetails { +impl ::serde::ser::Serialize for RansomwareRestoreProcessCompletedType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("PaperDocUntrashedDetails", 1)?; + let mut s = serializer.serialize_struct("RansomwareRestoreProcessCompletedType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } +/// Started ransomware restore process. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct PaperDocUntrashedType { - pub description: String, +pub struct RansomwareRestoreProcessStartedDetails { + /// Ransomware filename extension. + pub extension: String, } -impl PaperDocUntrashedType { - pub fn new(description: String) -> Self { - PaperDocUntrashedType { - description, +impl RansomwareRestoreProcessStartedDetails { + pub fn new(extension: String) -> Self { + RansomwareRestoreProcessStartedDetails { + extension, } } } -const PAPER_DOC_UNTRASHED_TYPE_FIELDS: &[&str] = &["description"]; -impl PaperDocUntrashedType { +const RANSOMWARE_RESTORE_PROCESS_STARTED_DETAILS_FIELDS: &[&str] = &["extension"]; +impl RansomwareRestoreProcessStartedDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_description = None; + ) -> Result, V::Error> { + let mut field_extension = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "description" => { - if field_description.is_some() { - return Err(::serde::de::Error::duplicate_field("description")); + "extension" => { + if field_extension.is_some() { + return Err(::serde::de::Error::duplicate_field("extension")); } - field_description = Some(map.next_value()?); + field_extension = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -76447,8 +98304,8 @@ impl PaperDocUntrashedType { if optional && nothing { return Ok(None); } - let result = PaperDocUntrashedType { - description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + let result = RansomwareRestoreProcessStartedDetails { + extension: field_extension.ok_or_else(|| ::serde::de::Error::missing_field("extension"))?, }; Ok(Some(result)) } @@ -76458,77 +98315,75 @@ impl PaperDocUntrashedType { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("description", &self.description)?; + s.serialize_field("extension", &self.extension)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for PaperDocUntrashedType { +impl<'de> ::serde::de::Deserialize<'de> for RansomwareRestoreProcessStartedDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = PaperDocUntrashedType; + type Value = RansomwareRestoreProcessStartedDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a PaperDocUntrashedType struct") + f.write_str("a RansomwareRestoreProcessStartedDetails struct") } fn visit_map>(self, map: V) -> Result { - PaperDocUntrashedType::internal_deserialize(map) + RansomwareRestoreProcessStartedDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("PaperDocUntrashedType", PAPER_DOC_UNTRASHED_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("RansomwareRestoreProcessStartedDetails", RANSOMWARE_RESTORE_PROCESS_STARTED_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for PaperDocUntrashedType { +impl ::serde::ser::Serialize for RansomwareRestoreProcessStartedDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("PaperDocUntrashedType", 1)?; + let mut s = serializer.serialize_struct("RansomwareRestoreProcessStartedDetails", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Viewed Paper doc. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct PaperDocViewDetails { - /// Event unique identifier. - pub event_uuid: String, +pub struct RansomwareRestoreProcessStartedType { + pub description: String, } -impl PaperDocViewDetails { - pub fn new(event_uuid: String) -> Self { - PaperDocViewDetails { - event_uuid, +impl RansomwareRestoreProcessStartedType { + pub fn new(description: String) -> Self { + RansomwareRestoreProcessStartedType { + description, } } } -const PAPER_DOC_VIEW_DETAILS_FIELDS: &[&str] = &["event_uuid"]; -impl PaperDocViewDetails { +const RANSOMWARE_RESTORE_PROCESS_STARTED_TYPE_FIELDS: &[&str] = &["description"]; +impl RansomwareRestoreProcessStartedType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_event_uuid = None; + ) -> Result, V::Error> { + let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "event_uuid" => { - if field_event_uuid.is_some() { - return Err(::serde::de::Error::duplicate_field("event_uuid")); + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); } - field_event_uuid = Some(map.next_value()?); + field_description = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -76539,8 +98394,8 @@ impl PaperDocViewDetails { if optional && nothing { return Ok(None); } - let result = PaperDocViewDetails { - event_uuid: field_event_uuid.ok_or_else(|| ::serde::de::Error::missing_field("event_uuid"))?, + let result = RansomwareRestoreProcessStartedType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) } @@ -76550,75 +98405,98 @@ impl PaperDocViewDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("event_uuid", &self.event_uuid)?; + s.serialize_field("description", &self.description)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for PaperDocViewDetails { +impl<'de> ::serde::de::Deserialize<'de> for RansomwareRestoreProcessStartedType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = PaperDocViewDetails; + type Value = RansomwareRestoreProcessStartedType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a PaperDocViewDetails struct") + f.write_str("a RansomwareRestoreProcessStartedType struct") } fn visit_map>(self, map: V) -> Result { - PaperDocViewDetails::internal_deserialize(map) + RansomwareRestoreProcessStartedType::internal_deserialize(map) } } - deserializer.deserialize_struct("PaperDocViewDetails", PAPER_DOC_VIEW_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("RansomwareRestoreProcessStartedType", RANSOMWARE_RESTORE_PROCESS_STARTED_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for PaperDocViewDetails { +impl ::serde::ser::Serialize for RansomwareRestoreProcessStartedType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("PaperDocViewDetails", 1)?; + let mut s = serializer.serialize_struct("RansomwareRestoreProcessStartedType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -#[derive(Debug, Clone, PartialEq, Eq)] +/// Recipients Configuration +#[derive(Debug, Clone, PartialEq, Eq, Default)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct PaperDocViewType { - pub description: String, +pub struct RecipientsConfiguration { + /// Recipients setting type. + pub recipient_setting_type: Option, + /// A list of user emails to notify. + pub emails: Option>, + /// A list of groups to notify. + pub groups: Option>, } -impl PaperDocViewType { - pub fn new(description: String) -> Self { - PaperDocViewType { - description, - } +impl RecipientsConfiguration { + pub fn with_recipient_setting_type(mut self, value: AlertRecipientsSettingType) -> Self { + self.recipient_setting_type = Some(value); + self } -} -const PAPER_DOC_VIEW_TYPE_FIELDS: &[&str] = &["description"]; -impl PaperDocViewType { - pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( - map: V, - ) -> Result { - Self::internal_deserialize_opt(map, false).map(Option::unwrap) + pub fn with_emails(mut self, value: Vec) -> Self { + self.emails = Some(value); + self } - pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + pub fn with_groups(mut self, value: Vec) -> Self { + self.groups = Some(value); + self + } +} + +const RECIPIENTS_CONFIGURATION_FIELDS: &[&str] = &["recipient_setting_type", + "emails", + "groups"]; +impl RecipientsConfiguration { + // no _opt deserializer + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - optional: bool, - ) -> Result, V::Error> { - let mut field_description = None; - let mut nothing = true; + ) -> Result { + let mut field_recipient_setting_type = None; + let mut field_emails = None; + let mut field_groups = None; while let Some(key) = map.next_key::<&str>()? { - nothing = false; match key { - "description" => { - if field_description.is_some() { - return Err(::serde::de::Error::duplicate_field("description")); + "recipient_setting_type" => { + if field_recipient_setting_type.is_some() { + return Err(::serde::de::Error::duplicate_field("recipient_setting_type")); } - field_description = Some(map.next_value()?); + field_recipient_setting_type = Some(map.next_value()?); + } + "emails" => { + if field_emails.is_some() { + return Err(::serde::de::Error::duplicate_field("emails")); + } + field_emails = Some(map.next_value()?); + } + "groups" => { + if field_groups.is_some() { + return Err(::serde::de::Error::duplicate_field("groups")); + } + field_groups = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -76626,13 +98504,12 @@ impl PaperDocViewType { } } } - if optional && nothing { - return Ok(None); - } - let result = PaperDocViewType { - description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + let result = RecipientsConfiguration { + recipient_setting_type: field_recipient_setting_type.and_then(Option::flatten), + emails: field_emails.and_then(Option::flatten), + groups: field_groups.and_then(Option::flatten), }; - Ok(Some(result)) + Ok(result) } pub(crate) fn internal_serialize( @@ -76640,88 +98517,96 @@ impl PaperDocViewType { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("description", &self.description)?; + if let Some(val) = &self.recipient_setting_type { + s.serialize_field("recipient_setting_type", val)?; + } + if let Some(val) = &self.emails { + s.serialize_field("emails", val)?; + } + if let Some(val) = &self.groups { + s.serialize_field("groups", val)?; + } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for PaperDocViewType { +impl<'de> ::serde::de::Deserialize<'de> for RecipientsConfiguration { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = PaperDocViewType; + type Value = RecipientsConfiguration; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a PaperDocViewType struct") + f.write_str("a RecipientsConfiguration struct") } fn visit_map>(self, map: V) -> Result { - PaperDocViewType::internal_deserialize(map) + RecipientsConfiguration::internal_deserialize(map) } } - deserializer.deserialize_struct("PaperDocViewType", PAPER_DOC_VIEW_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("RecipientsConfiguration", RECIPIENTS_CONFIGURATION_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for PaperDocViewType { +impl ::serde::ser::Serialize for RecipientsConfiguration { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("PaperDocViewType", 1)?; + let mut s = serializer.serialize_struct("RecipientsConfiguration", 3)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Paper document's logged information. +/// Provides the indices of the source asset and the destination asset for a relocate action. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct PaperDocumentLogInfo { - /// Papers document Id. - pub doc_id: String, - /// Paper document title. - pub doc_title: String, +pub struct RelocateAssetReferencesLogInfo { + /// Source asset position in the Assets list. + pub src_asset_index: u64, + /// Destination asset position in the Assets list. + pub dest_asset_index: u64, } -impl PaperDocumentLogInfo { - pub fn new(doc_id: String, doc_title: String) -> Self { - PaperDocumentLogInfo { - doc_id, - doc_title, +impl RelocateAssetReferencesLogInfo { + pub fn new(src_asset_index: u64, dest_asset_index: u64) -> Self { + RelocateAssetReferencesLogInfo { + src_asset_index, + dest_asset_index, } } } -const PAPER_DOCUMENT_LOG_INFO_FIELDS: &[&str] = &["doc_id", - "doc_title"]; -impl PaperDocumentLogInfo { +const RELOCATE_ASSET_REFERENCES_LOG_INFO_FIELDS: &[&str] = &["src_asset_index", + "dest_asset_index"]; +impl RelocateAssetReferencesLogInfo { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_doc_id = None; - let mut field_doc_title = None; + ) -> Result, V::Error> { + let mut field_src_asset_index = None; + let mut field_dest_asset_index = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "doc_id" => { - if field_doc_id.is_some() { - return Err(::serde::de::Error::duplicate_field("doc_id")); + "src_asset_index" => { + if field_src_asset_index.is_some() { + return Err(::serde::de::Error::duplicate_field("src_asset_index")); } - field_doc_id = Some(map.next_value()?); + field_src_asset_index = Some(map.next_value()?); } - "doc_title" => { - if field_doc_title.is_some() { - return Err(::serde::de::Error::duplicate_field("doc_title")); + "dest_asset_index" => { + if field_dest_asset_index.is_some() { + return Err(::serde::de::Error::duplicate_field("dest_asset_index")); } - field_doc_title = Some(map.next_value()?); + field_dest_asset_index = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -76732,9 +98617,9 @@ impl PaperDocumentLogInfo { if optional && nothing { return Ok(None); } - let result = PaperDocumentLogInfo { - doc_id: field_doc_id.ok_or_else(|| ::serde::de::Error::missing_field("doc_id"))?, - doc_title: field_doc_title.ok_or_else(|| ::serde::de::Error::missing_field("doc_title"))?, + let result = RelocateAssetReferencesLogInfo { + src_asset_index: field_src_asset_index.ok_or_else(|| ::serde::de::Error::missing_field("src_asset_index"))?, + dest_asset_index: field_dest_asset_index.ok_or_else(|| ::serde::de::Error::missing_field("dest_asset_index"))?, }; Ok(Some(result)) } @@ -76744,61 +98629,61 @@ impl PaperDocumentLogInfo { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("doc_id", &self.doc_id)?; - s.serialize_field("doc_title", &self.doc_title)?; + s.serialize_field("src_asset_index", &self.src_asset_index)?; + s.serialize_field("dest_asset_index", &self.dest_asset_index)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for PaperDocumentLogInfo { +impl<'de> ::serde::de::Deserialize<'de> for RelocateAssetReferencesLogInfo { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = PaperDocumentLogInfo; + type Value = RelocateAssetReferencesLogInfo; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a PaperDocumentLogInfo struct") + f.write_str("a RelocateAssetReferencesLogInfo struct") } fn visit_map>(self, map: V) -> Result { - PaperDocumentLogInfo::internal_deserialize(map) + RelocateAssetReferencesLogInfo::internal_deserialize(map) } } - deserializer.deserialize_struct("PaperDocumentLogInfo", PAPER_DOCUMENT_LOG_INFO_FIELDS, StructVisitor) + deserializer.deserialize_struct("RelocateAssetReferencesLogInfo", RELOCATE_ASSET_REFERENCES_LOG_INFO_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for PaperDocumentLogInfo { +impl ::serde::ser::Serialize for RelocateAssetReferencesLogInfo { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("PaperDocumentLogInfo", 2)?; + let mut s = serializer.serialize_struct("RelocateAssetReferencesLogInfo", 2)?; self.internal_serialize::(&mut s)?; s.end() } } +/// Policy for deciding who can be added to Replay content #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // variants may be added in the future -pub enum PaperDownloadFormat { - Docx, - Html, - Markdown, - Pdf, +pub enum ReplayAddingPeoplePolicy { + Anyone, + TeamAndAllowlist, + TeamOnly, /// Catch-all used for unrecognized values returned from the server. Encountering this value /// typically indicates that this SDK version is out of date. Other, } -impl<'de> ::serde::de::Deserialize<'de> for PaperDownloadFormat { +impl<'de> ::serde::de::Deserialize<'de> for ReplayAddingPeoplePolicy { fn deserialize>(deserializer: D) -> Result { // union deserializer use serde::de::{self, MapAccess, Visitor}; struct EnumVisitor; impl<'de> Visitor<'de> for EnumVisitor { - type Value = PaperDownloadFormat; + type Value = ReplayAddingPeoplePolicy; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a PaperDownloadFormat structure") + f.write_str("a ReplayAddingPeoplePolicy structure") } fn visit_map>(self, mut map: V) -> Result { let tag: &str = match map.next_key()? { @@ -76806,129 +98691,185 @@ impl<'de> ::serde::de::Deserialize<'de> for PaperDownloadFormat { _ => return Err(de::Error::missing_field(".tag")) }; let value = match tag { - "docx" => PaperDownloadFormat::Docx, - "html" => PaperDownloadFormat::Html, - "markdown" => PaperDownloadFormat::Markdown, - "pdf" => PaperDownloadFormat::Pdf, - _ => PaperDownloadFormat::Other, + "anyone" => ReplayAddingPeoplePolicy::Anyone, + "team_and_allowlist" => ReplayAddingPeoplePolicy::TeamAndAllowlist, + "team_only" => ReplayAddingPeoplePolicy::TeamOnly, + _ => ReplayAddingPeoplePolicy::Other, }; crate::eat_json_fields(&mut map)?; Ok(value) } } - const VARIANTS: &[&str] = &["docx", - "html", - "markdown", - "pdf", + const VARIANTS: &[&str] = &["anyone", + "team_and_allowlist", + "team_only", "other"]; - deserializer.deserialize_struct("PaperDownloadFormat", VARIANTS, EnumVisitor) + deserializer.deserialize_struct("ReplayAddingPeoplePolicy", VARIANTS, EnumVisitor) } } -impl ::serde::ser::Serialize for PaperDownloadFormat { +impl ::serde::ser::Serialize for ReplayAddingPeoplePolicy { fn serialize(&self, serializer: S) -> Result { // union serializer use serde::ser::SerializeStruct; match self { - PaperDownloadFormat::Docx => { - // unit - let mut s = serializer.serialize_struct("PaperDownloadFormat", 1)?; - s.serialize_field(".tag", "docx")?; - s.end() - } - PaperDownloadFormat::Html => { + ReplayAddingPeoplePolicy::Anyone => { // unit - let mut s = serializer.serialize_struct("PaperDownloadFormat", 1)?; - s.serialize_field(".tag", "html")?; + let mut s = serializer.serialize_struct("ReplayAddingPeoplePolicy", 1)?; + s.serialize_field(".tag", "anyone")?; s.end() } - PaperDownloadFormat::Markdown => { + ReplayAddingPeoplePolicy::TeamAndAllowlist => { // unit - let mut s = serializer.serialize_struct("PaperDownloadFormat", 1)?; - s.serialize_field(".tag", "markdown")?; + let mut s = serializer.serialize_struct("ReplayAddingPeoplePolicy", 1)?; + s.serialize_field(".tag", "team_and_allowlist")?; s.end() } - PaperDownloadFormat::Pdf => { + ReplayAddingPeoplePolicy::TeamOnly => { // unit - let mut s = serializer.serialize_struct("PaperDownloadFormat", 1)?; - s.serialize_field(".tag", "pdf")?; + let mut s = serializer.serialize_struct("ReplayAddingPeoplePolicy", 1)?; + s.serialize_field(".tag", "team_only")?; s.end() } - PaperDownloadFormat::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) + ReplayAddingPeoplePolicy::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) } } } -/// Added users to Paper-enabled users list. -#[derive(Debug, Clone, PartialEq, Eq, Default)] +/// Changed the policy for adding people to Replay content. +#[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct PaperEnabledUsersGroupAdditionDetails { +pub struct ReplayAddingPeoplePolicyChangedDetails { + /// To. + pub new_value: ReplayAddingPeoplePolicy, + /// From. + pub previous_value: ReplayAddingPeoplePolicy, } -const PAPER_ENABLED_USERS_GROUP_ADDITION_DETAILS_FIELDS: &[&str] = &[]; -impl PaperEnabledUsersGroupAdditionDetails { - // no _opt deserializer +impl ReplayAddingPeoplePolicyChangedDetails { + pub fn new( + new_value: ReplayAddingPeoplePolicy, + previous_value: ReplayAddingPeoplePolicy, + ) -> Self { + ReplayAddingPeoplePolicyChangedDetails { + new_value, + previous_value, + } + } +} + +const REPLAY_ADDING_PEOPLE_POLICY_CHANGED_DETAILS_FIELDS: &[&str] = &["new_value", + "previous_value"]; +impl ReplayAddingPeoplePolicyChangedDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - ) -> Result { - // ignore any fields found; none are presently recognized - crate::eat_json_fields(&mut map)?; - Ok(PaperEnabledUsersGroupAdditionDetails {}) + optional: bool, + ) -> Result, V::Error> { + let mut field_new_value = None; + let mut field_previous_value = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "new_value" => { + if field_new_value.is_some() { + return Err(::serde::de::Error::duplicate_field("new_value")); + } + field_new_value = Some(map.next_value()?); + } + "previous_value" => { + if field_previous_value.is_some() { + return Err(::serde::de::Error::duplicate_field("previous_value")); + } + field_previous_value = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } + } + } + if optional && nothing { + return Ok(None); + } + let result = ReplayAddingPeoplePolicyChangedDetails { + new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, + previous_value: field_previous_value.ok_or_else(|| ::serde::de::Error::missing_field("previous_value"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("new_value", &self.new_value)?; + s.serialize_field("previous_value", &self.previous_value)?; + Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for PaperEnabledUsersGroupAdditionDetails { +impl<'de> ::serde::de::Deserialize<'de> for ReplayAddingPeoplePolicyChangedDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = PaperEnabledUsersGroupAdditionDetails; + type Value = ReplayAddingPeoplePolicyChangedDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a PaperEnabledUsersGroupAdditionDetails struct") + f.write_str("a ReplayAddingPeoplePolicyChangedDetails struct") } fn visit_map>(self, map: V) -> Result { - PaperEnabledUsersGroupAdditionDetails::internal_deserialize(map) + ReplayAddingPeoplePolicyChangedDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("PaperEnabledUsersGroupAdditionDetails", PAPER_ENABLED_USERS_GROUP_ADDITION_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("ReplayAddingPeoplePolicyChangedDetails", REPLAY_ADDING_PEOPLE_POLICY_CHANGED_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for PaperEnabledUsersGroupAdditionDetails { +impl ::serde::ser::Serialize for ReplayAddingPeoplePolicyChangedDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - serializer.serialize_struct("PaperEnabledUsersGroupAdditionDetails", 0)?.end() + let mut s = serializer.serialize_struct("ReplayAddingPeoplePolicyChangedDetails", 2)?; + self.internal_serialize::(&mut s)?; + s.end() } } #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct PaperEnabledUsersGroupAdditionType { +pub struct ReplayAddingPeoplePolicyChangedType { pub description: String, } -impl PaperEnabledUsersGroupAdditionType { +impl ReplayAddingPeoplePolicyChangedType { pub fn new(description: String) -> Self { - PaperEnabledUsersGroupAdditionType { + ReplayAddingPeoplePolicyChangedType { description, } } } -const PAPER_ENABLED_USERS_GROUP_ADDITION_TYPE_FIELDS: &[&str] = &["description"]; -impl PaperEnabledUsersGroupAdditionType { +const REPLAY_ADDING_PEOPLE_POLICY_CHANGED_TYPE_FIELDS: &[&str] = &["description"]; +impl ReplayAddingPeoplePolicyChangedType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -76949,7 +98890,7 @@ impl PaperEnabledUsersGroupAdditionType { if optional && nothing { return Ok(None); } - let result = PaperEnabledUsersGroupAdditionType { + let result = ReplayAddingPeoplePolicyChangedType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -76965,104 +98906,104 @@ impl PaperEnabledUsersGroupAdditionType { } } -impl<'de> ::serde::de::Deserialize<'de> for PaperEnabledUsersGroupAdditionType { +impl<'de> ::serde::de::Deserialize<'de> for ReplayAddingPeoplePolicyChangedType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = PaperEnabledUsersGroupAdditionType; + type Value = ReplayAddingPeoplePolicyChangedType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a PaperEnabledUsersGroupAdditionType struct") + f.write_str("a ReplayAddingPeoplePolicyChangedType struct") } fn visit_map>(self, map: V) -> Result { - PaperEnabledUsersGroupAdditionType::internal_deserialize(map) + ReplayAddingPeoplePolicyChangedType::internal_deserialize(map) } } - deserializer.deserialize_struct("PaperEnabledUsersGroupAdditionType", PAPER_ENABLED_USERS_GROUP_ADDITION_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("ReplayAddingPeoplePolicyChangedType", REPLAY_ADDING_PEOPLE_POLICY_CHANGED_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for PaperEnabledUsersGroupAdditionType { +impl ::serde::ser::Serialize for ReplayAddingPeoplePolicyChangedType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("PaperEnabledUsersGroupAdditionType", 1)?; + let mut s = serializer.serialize_struct("ReplayAddingPeoplePolicyChangedType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Removed users from Paper-enabled users list. +/// Deleted files in Replay. #[derive(Debug, Clone, PartialEq, Eq, Default)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct PaperEnabledUsersGroupRemovalDetails { +pub struct ReplayFileDeleteDetails { } -const PAPER_ENABLED_USERS_GROUP_REMOVAL_DETAILS_FIELDS: &[&str] = &[]; -impl PaperEnabledUsersGroupRemovalDetails { +const REPLAY_FILE_DELETE_DETAILS_FIELDS: &[&str] = &[]; +impl ReplayFileDeleteDetails { // no _opt deserializer pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - ) -> Result { + ) -> Result { // ignore any fields found; none are presently recognized crate::eat_json_fields(&mut map)?; - Ok(PaperEnabledUsersGroupRemovalDetails {}) + Ok(ReplayFileDeleteDetails {}) } } -impl<'de> ::serde::de::Deserialize<'de> for PaperEnabledUsersGroupRemovalDetails { +impl<'de> ::serde::de::Deserialize<'de> for ReplayFileDeleteDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = PaperEnabledUsersGroupRemovalDetails; + type Value = ReplayFileDeleteDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a PaperEnabledUsersGroupRemovalDetails struct") + f.write_str("a ReplayFileDeleteDetails struct") } fn visit_map>(self, map: V) -> Result { - PaperEnabledUsersGroupRemovalDetails::internal_deserialize(map) + ReplayFileDeleteDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("PaperEnabledUsersGroupRemovalDetails", PAPER_ENABLED_USERS_GROUP_REMOVAL_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("ReplayFileDeleteDetails", REPLAY_FILE_DELETE_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for PaperEnabledUsersGroupRemovalDetails { +impl ::serde::ser::Serialize for ReplayFileDeleteDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - serializer.serialize_struct("PaperEnabledUsersGroupRemovalDetails", 0)?.end() + serializer.serialize_struct("ReplayFileDeleteDetails", 0)?.end() } } #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct PaperEnabledUsersGroupRemovalType { +pub struct ReplayFileDeleteType { pub description: String, } -impl PaperEnabledUsersGroupRemovalType { +impl ReplayFileDeleteType { pub fn new(description: String) -> Self { - PaperEnabledUsersGroupRemovalType { + ReplayFileDeleteType { description, } } } -const PAPER_ENABLED_USERS_GROUP_REMOVAL_TYPE_FIELDS: &[&str] = &["description"]; -impl PaperEnabledUsersGroupRemovalType { +const REPLAY_FILE_DELETE_TYPE_FIELDS: &[&str] = &["description"]; +impl ReplayFileDeleteType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -77083,7 +99024,7 @@ impl PaperEnabledUsersGroupRemovalType { if optional && nothing { return Ok(None); } - let result = PaperEnabledUsersGroupRemovalType { + let result = ReplayFileDeleteType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -77099,152 +99040,104 @@ impl PaperEnabledUsersGroupRemovalType { } } -impl<'de> ::serde::de::Deserialize<'de> for PaperEnabledUsersGroupRemovalType { +impl<'de> ::serde::de::Deserialize<'de> for ReplayFileDeleteType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = PaperEnabledUsersGroupRemovalType; + type Value = ReplayFileDeleteType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a PaperEnabledUsersGroupRemovalType struct") + f.write_str("a ReplayFileDeleteType struct") } fn visit_map>(self, map: V) -> Result { - PaperEnabledUsersGroupRemovalType::internal_deserialize(map) + ReplayFileDeleteType::internal_deserialize(map) } } - deserializer.deserialize_struct("PaperEnabledUsersGroupRemovalType", PAPER_ENABLED_USERS_GROUP_REMOVAL_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("ReplayFileDeleteType", REPLAY_FILE_DELETE_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for PaperEnabledUsersGroupRemovalType { +impl ::serde::ser::Serialize for ReplayFileDeleteType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("PaperEnabledUsersGroupRemovalType", 1)?; + let mut s = serializer.serialize_struct("ReplayFileDeleteType", 1)?; self.internal_serialize::(&mut s)?; s.end() } -} - -/// Changed Paper external sharing setting to anyone. -#[derive(Debug, Clone, PartialEq, Eq)] -#[non_exhaustive] // structs may have more fields added in the future. -pub struct PaperExternalViewAllowDetails { - /// Event unique identifier. - pub event_uuid: String, -} - -impl PaperExternalViewAllowDetails { - pub fn new(event_uuid: String) -> Self { - PaperExternalViewAllowDetails { - event_uuid, - } - } -} - -const PAPER_EXTERNAL_VIEW_ALLOW_DETAILS_FIELDS: &[&str] = &["event_uuid"]; -impl PaperExternalViewAllowDetails { - pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( - map: V, - ) -> Result { - Self::internal_deserialize_opt(map, false).map(Option::unwrap) - } - - pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( - mut map: V, - optional: bool, - ) -> Result, V::Error> { - let mut field_event_uuid = None; - let mut nothing = true; - while let Some(key) = map.next_key::<&str>()? { - nothing = false; - match key { - "event_uuid" => { - if field_event_uuid.is_some() { - return Err(::serde::de::Error::duplicate_field("event_uuid")); - } - field_event_uuid = Some(map.next_value()?); - } - _ => { - // unknown field allowed and ignored - map.next_value::<::serde_json::Value>()?; - } - } - } - if optional && nothing { - return Ok(None); - } - let result = PaperExternalViewAllowDetails { - event_uuid: field_event_uuid.ok_or_else(|| ::serde::de::Error::missing_field("event_uuid"))?, - }; - Ok(Some(result)) - } +} - pub(crate) fn internal_serialize( - &self, - s: &mut S::SerializeStruct, - ) -> Result<(), S::Error> { - use serde::ser::SerializeStruct; - s.serialize_field("event_uuid", &self.event_uuid)?; - Ok(()) +/// Downloaded files in Replay. +#[derive(Debug, Clone, PartialEq, Eq, Default)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct ReplayFileDownloadedDetails { +} + +const REPLAY_FILE_DOWNLOADED_DETAILS_FIELDS: &[&str] = &[]; +impl ReplayFileDownloadedDetails { + // no _opt deserializer + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + ) -> Result { + // ignore any fields found; none are presently recognized + crate::eat_json_fields(&mut map)?; + Ok(ReplayFileDownloadedDetails {}) } } -impl<'de> ::serde::de::Deserialize<'de> for PaperExternalViewAllowDetails { +impl<'de> ::serde::de::Deserialize<'de> for ReplayFileDownloadedDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = PaperExternalViewAllowDetails; + type Value = ReplayFileDownloadedDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a PaperExternalViewAllowDetails struct") + f.write_str("a ReplayFileDownloadedDetails struct") } fn visit_map>(self, map: V) -> Result { - PaperExternalViewAllowDetails::internal_deserialize(map) + ReplayFileDownloadedDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("PaperExternalViewAllowDetails", PAPER_EXTERNAL_VIEW_ALLOW_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("ReplayFileDownloadedDetails", REPLAY_FILE_DOWNLOADED_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for PaperExternalViewAllowDetails { +impl ::serde::ser::Serialize for ReplayFileDownloadedDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("PaperExternalViewAllowDetails", 1)?; - self.internal_serialize::(&mut s)?; - s.end() + serializer.serialize_struct("ReplayFileDownloadedDetails", 0)?.end() } } #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct PaperExternalViewAllowType { +pub struct ReplayFileDownloadedType { pub description: String, } -impl PaperExternalViewAllowType { +impl ReplayFileDownloadedType { pub fn new(description: String) -> Self { - PaperExternalViewAllowType { + ReplayFileDownloadedType { description, } } } -const PAPER_EXTERNAL_VIEW_ALLOW_TYPE_FIELDS: &[&str] = &["description"]; -impl PaperExternalViewAllowType { +const REPLAY_FILE_DOWNLOADED_TYPE_FIELDS: &[&str] = &["description"]; +impl ReplayFileDownloadedType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -77265,7 +99158,7 @@ impl PaperExternalViewAllowType { if optional && nothing { return Ok(None); } - let result = PaperExternalViewAllowType { + let result = ReplayFileDownloadedType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -77281,72 +99174,79 @@ impl PaperExternalViewAllowType { } } -impl<'de> ::serde::de::Deserialize<'de> for PaperExternalViewAllowType { +impl<'de> ::serde::de::Deserialize<'de> for ReplayFileDownloadedType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = PaperExternalViewAllowType; + type Value = ReplayFileDownloadedType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a PaperExternalViewAllowType struct") + f.write_str("a ReplayFileDownloadedType struct") } fn visit_map>(self, map: V) -> Result { - PaperExternalViewAllowType::internal_deserialize(map) + ReplayFileDownloadedType::internal_deserialize(map) } } - deserializer.deserialize_struct("PaperExternalViewAllowType", PAPER_EXTERNAL_VIEW_ALLOW_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("ReplayFileDownloadedType", REPLAY_FILE_DOWNLOADED_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for PaperExternalViewAllowType { +impl ::serde::ser::Serialize for ReplayFileDownloadedType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("PaperExternalViewAllowType", 1)?; + let mut s = serializer.serialize_struct("ReplayFileDownloadedType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Changed Paper external sharing setting to default team. -#[derive(Debug, Clone, PartialEq, Eq)] +/// Created shared link in Replay. +#[derive(Debug, Clone, PartialEq, Eq, Default)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct PaperExternalViewDefaultTeamDetails { - /// Event unique identifier. - pub event_uuid: String, +pub struct ReplayFileSharedLinkCreatedDetails { + /// Indicates whether it was a watermark share link. + pub is_watermarked: Option, + /// The Replay sharing policy in place when the link was created. Might be missing due to + /// historical data gap. + pub access: Option, } -impl PaperExternalViewDefaultTeamDetails { - pub fn new(event_uuid: String) -> Self { - PaperExternalViewDefaultTeamDetails { - event_uuid, - } +impl ReplayFileSharedLinkCreatedDetails { + pub fn with_is_watermarked(mut self, value: bool) -> Self { + self.is_watermarked = Some(value); + self } -} -const PAPER_EXTERNAL_VIEW_DEFAULT_TEAM_DETAILS_FIELDS: &[&str] = &["event_uuid"]; -impl PaperExternalViewDefaultTeamDetails { - pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( - map: V, - ) -> Result { - Self::internal_deserialize_opt(map, false).map(Option::unwrap) + pub fn with_access(mut self, value: ReplayLinkAccess) -> Self { + self.access = Some(value); + self } +} - pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( +const REPLAY_FILE_SHARED_LINK_CREATED_DETAILS_FIELDS: &[&str] = &["is_watermarked", + "access"]; +impl ReplayFileSharedLinkCreatedDetails { + // no _opt deserializer + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - optional: bool, - ) -> Result, V::Error> { - let mut field_event_uuid = None; - let mut nothing = true; + ) -> Result { + let mut field_is_watermarked = None; + let mut field_access = None; while let Some(key) = map.next_key::<&str>()? { - nothing = false; match key { - "event_uuid" => { - if field_event_uuid.is_some() { - return Err(::serde::de::Error::duplicate_field("event_uuid")); + "is_watermarked" => { + if field_is_watermarked.is_some() { + return Err(::serde::de::Error::duplicate_field("is_watermarked")); } - field_event_uuid = Some(map.next_value()?); + field_is_watermarked = Some(map.next_value()?); + } + "access" => { + if field_access.is_some() { + return Err(::serde::de::Error::duplicate_field("access")); + } + field_access = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -77354,13 +99254,11 @@ impl PaperExternalViewDefaultTeamDetails { } } } - if optional && nothing { - return Ok(None); - } - let result = PaperExternalViewDefaultTeamDetails { - event_uuid: field_event_uuid.ok_or_else(|| ::serde::de::Error::missing_field("event_uuid"))?, + let result = ReplayFileSharedLinkCreatedDetails { + is_watermarked: field_is_watermarked.and_then(Option::flatten), + access: field_access.and_then(Option::flatten), }; - Ok(Some(result)) + Ok(result) } pub(crate) fn internal_serialize( @@ -77368,34 +99266,39 @@ impl PaperExternalViewDefaultTeamDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("event_uuid", &self.event_uuid)?; + if let Some(val) = &self.is_watermarked { + s.serialize_field("is_watermarked", val)?; + } + if let Some(val) = &self.access { + s.serialize_field("access", val)?; + } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for PaperExternalViewDefaultTeamDetails { +impl<'de> ::serde::de::Deserialize<'de> for ReplayFileSharedLinkCreatedDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = PaperExternalViewDefaultTeamDetails; + type Value = ReplayFileSharedLinkCreatedDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a PaperExternalViewDefaultTeamDetails struct") + f.write_str("a ReplayFileSharedLinkCreatedDetails struct") } fn visit_map>(self, map: V) -> Result { - PaperExternalViewDefaultTeamDetails::internal_deserialize(map) + ReplayFileSharedLinkCreatedDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("PaperExternalViewDefaultTeamDetails", PAPER_EXTERNAL_VIEW_DEFAULT_TEAM_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("ReplayFileSharedLinkCreatedDetails", REPLAY_FILE_SHARED_LINK_CREATED_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for PaperExternalViewDefaultTeamDetails { +impl ::serde::ser::Serialize for ReplayFileSharedLinkCreatedDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("PaperExternalViewDefaultTeamDetails", 1)?; + let mut s = serializer.serialize_struct("ReplayFileSharedLinkCreatedDetails", 2)?; self.internal_serialize::(&mut s)?; s.end() } @@ -77403,30 +99306,30 @@ impl ::serde::ser::Serialize for PaperExternalViewDefaultTeamDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct PaperExternalViewDefaultTeamType { +pub struct ReplayFileSharedLinkCreatedType { pub description: String, } -impl PaperExternalViewDefaultTeamType { +impl ReplayFileSharedLinkCreatedType { pub fn new(description: String) -> Self { - PaperExternalViewDefaultTeamType { + ReplayFileSharedLinkCreatedType { description, } } } -const PAPER_EXTERNAL_VIEW_DEFAULT_TEAM_TYPE_FIELDS: &[&str] = &["description"]; -impl PaperExternalViewDefaultTeamType { +const REPLAY_FILE_SHARED_LINK_CREATED_TYPE_FIELDS: &[&str] = &["description"]; +impl ReplayFileSharedLinkCreatedType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -77447,7 +99350,7 @@ impl PaperExternalViewDefaultTeamType { if optional && nothing { return Ok(None); } - let result = PaperExternalViewDefaultTeamType { + let result = ReplayFileSharedLinkCreatedType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -77463,72 +99366,79 @@ impl PaperExternalViewDefaultTeamType { } } -impl<'de> ::serde::de::Deserialize<'de> for PaperExternalViewDefaultTeamType { +impl<'de> ::serde::de::Deserialize<'de> for ReplayFileSharedLinkCreatedType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = PaperExternalViewDefaultTeamType; + type Value = ReplayFileSharedLinkCreatedType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a PaperExternalViewDefaultTeamType struct") + f.write_str("a ReplayFileSharedLinkCreatedType struct") } fn visit_map>(self, map: V) -> Result { - PaperExternalViewDefaultTeamType::internal_deserialize(map) + ReplayFileSharedLinkCreatedType::internal_deserialize(map) } } - deserializer.deserialize_struct("PaperExternalViewDefaultTeamType", PAPER_EXTERNAL_VIEW_DEFAULT_TEAM_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("ReplayFileSharedLinkCreatedType", REPLAY_FILE_SHARED_LINK_CREATED_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for PaperExternalViewDefaultTeamType { +impl ::serde::ser::Serialize for ReplayFileSharedLinkCreatedType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("PaperExternalViewDefaultTeamType", 1)?; + let mut s = serializer.serialize_struct("ReplayFileSharedLinkCreatedType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Changed Paper external sharing setting to team-only. -#[derive(Debug, Clone, PartialEq, Eq)] +/// Changed shared link in Replay. +#[derive(Debug, Clone, PartialEq, Eq, Default)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct PaperExternalViewForbidDetails { - /// Event unique identifier. - pub event_uuid: String, +pub struct ReplayFileSharedLinkModifiedDetails { + /// Indicates whether it was a watermark share link. + pub is_watermarked: Option, + /// The Replay sharing policy in place when the link was modified. Might be missing due to + /// historical data gap. + pub access: Option, } -impl PaperExternalViewForbidDetails { - pub fn new(event_uuid: String) -> Self { - PaperExternalViewForbidDetails { - event_uuid, - } +impl ReplayFileSharedLinkModifiedDetails { + pub fn with_is_watermarked(mut self, value: bool) -> Self { + self.is_watermarked = Some(value); + self } -} -const PAPER_EXTERNAL_VIEW_FORBID_DETAILS_FIELDS: &[&str] = &["event_uuid"]; -impl PaperExternalViewForbidDetails { - pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( - map: V, - ) -> Result { - Self::internal_deserialize_opt(map, false).map(Option::unwrap) + pub fn with_access(mut self, value: ReplayLinkAccess) -> Self { + self.access = Some(value); + self } +} - pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( +const REPLAY_FILE_SHARED_LINK_MODIFIED_DETAILS_FIELDS: &[&str] = &["is_watermarked", + "access"]; +impl ReplayFileSharedLinkModifiedDetails { + // no _opt deserializer + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - optional: bool, - ) -> Result, V::Error> { - let mut field_event_uuid = None; - let mut nothing = true; + ) -> Result { + let mut field_is_watermarked = None; + let mut field_access = None; while let Some(key) = map.next_key::<&str>()? { - nothing = false; match key { - "event_uuid" => { - if field_event_uuid.is_some() { - return Err(::serde::de::Error::duplicate_field("event_uuid")); + "is_watermarked" => { + if field_is_watermarked.is_some() { + return Err(::serde::de::Error::duplicate_field("is_watermarked")); } - field_event_uuid = Some(map.next_value()?); + field_is_watermarked = Some(map.next_value()?); + } + "access" => { + if field_access.is_some() { + return Err(::serde::de::Error::duplicate_field("access")); + } + field_access = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -77536,13 +99446,11 @@ impl PaperExternalViewForbidDetails { } } } - if optional && nothing { - return Ok(None); - } - let result = PaperExternalViewForbidDetails { - event_uuid: field_event_uuid.ok_or_else(|| ::serde::de::Error::missing_field("event_uuid"))?, + let result = ReplayFileSharedLinkModifiedDetails { + is_watermarked: field_is_watermarked.and_then(Option::flatten), + access: field_access.and_then(Option::flatten), }; - Ok(Some(result)) + Ok(result) } pub(crate) fn internal_serialize( @@ -77550,34 +99458,39 @@ impl PaperExternalViewForbidDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("event_uuid", &self.event_uuid)?; + if let Some(val) = &self.is_watermarked { + s.serialize_field("is_watermarked", val)?; + } + if let Some(val) = &self.access { + s.serialize_field("access", val)?; + } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for PaperExternalViewForbidDetails { +impl<'de> ::serde::de::Deserialize<'de> for ReplayFileSharedLinkModifiedDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = PaperExternalViewForbidDetails; + type Value = ReplayFileSharedLinkModifiedDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a PaperExternalViewForbidDetails struct") + f.write_str("a ReplayFileSharedLinkModifiedDetails struct") } fn visit_map>(self, map: V) -> Result { - PaperExternalViewForbidDetails::internal_deserialize(map) + ReplayFileSharedLinkModifiedDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("PaperExternalViewForbidDetails", PAPER_EXTERNAL_VIEW_FORBID_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("ReplayFileSharedLinkModifiedDetails", REPLAY_FILE_SHARED_LINK_MODIFIED_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for PaperExternalViewForbidDetails { +impl ::serde::ser::Serialize for ReplayFileSharedLinkModifiedDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("PaperExternalViewForbidDetails", 1)?; + let mut s = serializer.serialize_struct("ReplayFileSharedLinkModifiedDetails", 2)?; self.internal_serialize::(&mut s)?; s.end() } @@ -77585,30 +99498,30 @@ impl ::serde::ser::Serialize for PaperExternalViewForbidDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct PaperExternalViewForbidType { +pub struct ReplayFileSharedLinkModifiedType { pub description: String, } -impl PaperExternalViewForbidType { +impl ReplayFileSharedLinkModifiedType { pub fn new(description: String) -> Self { - PaperExternalViewForbidType { + ReplayFileSharedLinkModifiedType { description, } } } -const PAPER_EXTERNAL_VIEW_FORBID_TYPE_FIELDS: &[&str] = &["description"]; -impl PaperExternalViewForbidType { +const REPLAY_FILE_SHARED_LINK_MODIFIED_TYPE_FIELDS: &[&str] = &["description"]; +impl ReplayFileSharedLinkModifiedType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -77629,7 +99542,7 @@ impl PaperExternalViewForbidType { if optional && nothing { return Ok(None); } - let result = PaperExternalViewForbidType { + let result = ReplayFileSharedLinkModifiedType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -77645,185 +99558,186 @@ impl PaperExternalViewForbidType { } } -impl<'de> ::serde::de::Deserialize<'de> for PaperExternalViewForbidType { +impl<'de> ::serde::de::Deserialize<'de> for ReplayFileSharedLinkModifiedType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = PaperExternalViewForbidType; + type Value = ReplayFileSharedLinkModifiedType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a PaperExternalViewForbidType struct") + f.write_str("a ReplayFileSharedLinkModifiedType struct") } fn visit_map>(self, map: V) -> Result { - PaperExternalViewForbidType::internal_deserialize(map) + ReplayFileSharedLinkModifiedType::internal_deserialize(map) } } - deserializer.deserialize_struct("PaperExternalViewForbidType", PAPER_EXTERNAL_VIEW_FORBID_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("ReplayFileSharedLinkModifiedType", REPLAY_FILE_SHARED_LINK_MODIFIED_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for PaperExternalViewForbidType { +impl ::serde::ser::Serialize for ReplayFileSharedLinkModifiedType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("PaperExternalViewForbidType", 1)?; + let mut s = serializer.serialize_struct("ReplayFileSharedLinkModifiedType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Followed/unfollowed Paper folder. +/// Who can access this Replay link #[derive(Debug, Clone, PartialEq, Eq)] -#[non_exhaustive] // structs may have more fields added in the future. -pub struct PaperFolderChangeSubscriptionDetails { - /// Event unique identifier. - pub event_uuid: String, - /// New folder subscription level. - pub new_subscription_level: String, - /// Previous folder subscription level. Might be missing due to historical data gap. - pub previous_subscription_level: Option, +#[non_exhaustive] // variants may be added in the future +pub enum ReplayLinkAccess { + AnyoneLoggedIn, + NoLoginRequired, + TeamAndApproved, + TeamOnly, + /// Catch-all used for unrecognized values returned from the server. Encountering this value + /// typically indicates that this SDK version is out of date. + Other, } -impl PaperFolderChangeSubscriptionDetails { - pub fn new(event_uuid: String, new_subscription_level: String) -> Self { - PaperFolderChangeSubscriptionDetails { - event_uuid, - new_subscription_level, - previous_subscription_level: None, +impl<'de> ::serde::de::Deserialize<'de> for ReplayLinkAccess { + fn deserialize>(deserializer: D) -> Result { + // union deserializer + use serde::de::{self, MapAccess, Visitor}; + struct EnumVisitor; + impl<'de> Visitor<'de> for EnumVisitor { + type Value = ReplayLinkAccess; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a ReplayLinkAccess structure") + } + fn visit_map>(self, mut map: V) -> Result { + let tag: &str = match map.next_key()? { + Some(".tag") => map.next_value()?, + _ => return Err(de::Error::missing_field(".tag")) + }; + let value = match tag { + "anyone_logged_in" => ReplayLinkAccess::AnyoneLoggedIn, + "no_login_required" => ReplayLinkAccess::NoLoginRequired, + "team_and_approved" => ReplayLinkAccess::TeamAndApproved, + "team_only" => ReplayLinkAccess::TeamOnly, + _ => ReplayLinkAccess::Other, + }; + crate::eat_json_fields(&mut map)?; + Ok(value) + } } - } - - pub fn with_previous_subscription_level(mut self, value: String) -> Self { - self.previous_subscription_level = Some(value); - self + const VARIANTS: &[&str] = &["anyone_logged_in", + "no_login_required", + "team_and_approved", + "team_only", + "other"]; + deserializer.deserialize_struct("ReplayLinkAccess", VARIANTS, EnumVisitor) } } -const PAPER_FOLDER_CHANGE_SUBSCRIPTION_DETAILS_FIELDS: &[&str] = &["event_uuid", - "new_subscription_level", - "previous_subscription_level"]; -impl PaperFolderChangeSubscriptionDetails { - pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( - map: V, - ) -> Result { - Self::internal_deserialize_opt(map, false).map(Option::unwrap) - } - - pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( - mut map: V, - optional: bool, - ) -> Result, V::Error> { - let mut field_event_uuid = None; - let mut field_new_subscription_level = None; - let mut field_previous_subscription_level = None; - let mut nothing = true; - while let Some(key) = map.next_key::<&str>()? { - nothing = false; - match key { - "event_uuid" => { - if field_event_uuid.is_some() { - return Err(::serde::de::Error::duplicate_field("event_uuid")); - } - field_event_uuid = Some(map.next_value()?); - } - "new_subscription_level" => { - if field_new_subscription_level.is_some() { - return Err(::serde::de::Error::duplicate_field("new_subscription_level")); - } - field_new_subscription_level = Some(map.next_value()?); - } - "previous_subscription_level" => { - if field_previous_subscription_level.is_some() { - return Err(::serde::de::Error::duplicate_field("previous_subscription_level")); - } - field_previous_subscription_level = Some(map.next_value()?); - } - _ => { - // unknown field allowed and ignored - map.next_value::<::serde_json::Value>()?; - } +impl ::serde::ser::Serialize for ReplayLinkAccess { + fn serialize(&self, serializer: S) -> Result { + // union serializer + use serde::ser::SerializeStruct; + match self { + ReplayLinkAccess::AnyoneLoggedIn => { + // unit + let mut s = serializer.serialize_struct("ReplayLinkAccess", 1)?; + s.serialize_field(".tag", "anyone_logged_in")?; + s.end() } + ReplayLinkAccess::NoLoginRequired => { + // unit + let mut s = serializer.serialize_struct("ReplayLinkAccess", 1)?; + s.serialize_field(".tag", "no_login_required")?; + s.end() + } + ReplayLinkAccess::TeamAndApproved => { + // unit + let mut s = serializer.serialize_struct("ReplayLinkAccess", 1)?; + s.serialize_field(".tag", "team_and_approved")?; + s.end() + } + ReplayLinkAccess::TeamOnly => { + // unit + let mut s = serializer.serialize_struct("ReplayLinkAccess", 1)?; + s.serialize_field(".tag", "team_only")?; + s.end() + } + ReplayLinkAccess::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) } - if optional && nothing { - return Ok(None); - } - let result = PaperFolderChangeSubscriptionDetails { - event_uuid: field_event_uuid.ok_or_else(|| ::serde::de::Error::missing_field("event_uuid"))?, - new_subscription_level: field_new_subscription_level.ok_or_else(|| ::serde::de::Error::missing_field("new_subscription_level"))?, - previous_subscription_level: field_previous_subscription_level.and_then(Option::flatten), - }; - Ok(Some(result)) } +} - pub(crate) fn internal_serialize( - &self, - s: &mut S::SerializeStruct, - ) -> Result<(), S::Error> { - use serde::ser::SerializeStruct; - s.serialize_field("event_uuid", &self.event_uuid)?; - s.serialize_field("new_subscription_level", &self.new_subscription_level)?; - if let Some(val) = &self.previous_subscription_level { - s.serialize_field("previous_subscription_level", val)?; - } - Ok(()) +/// Added member to Replay Project. +#[derive(Debug, Clone, PartialEq, Eq, Default)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct ReplayProjectTeamAddDetails { +} + +const REPLAY_PROJECT_TEAM_ADD_DETAILS_FIELDS: &[&str] = &[]; +impl ReplayProjectTeamAddDetails { + // no _opt deserializer + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + ) -> Result { + // ignore any fields found; none are presently recognized + crate::eat_json_fields(&mut map)?; + Ok(ReplayProjectTeamAddDetails {}) } } -impl<'de> ::serde::de::Deserialize<'de> for PaperFolderChangeSubscriptionDetails { +impl<'de> ::serde::de::Deserialize<'de> for ReplayProjectTeamAddDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = PaperFolderChangeSubscriptionDetails; + type Value = ReplayProjectTeamAddDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a PaperFolderChangeSubscriptionDetails struct") + f.write_str("a ReplayProjectTeamAddDetails struct") } fn visit_map>(self, map: V) -> Result { - PaperFolderChangeSubscriptionDetails::internal_deserialize(map) + ReplayProjectTeamAddDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("PaperFolderChangeSubscriptionDetails", PAPER_FOLDER_CHANGE_SUBSCRIPTION_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("ReplayProjectTeamAddDetails", REPLAY_PROJECT_TEAM_ADD_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for PaperFolderChangeSubscriptionDetails { +impl ::serde::ser::Serialize for ReplayProjectTeamAddDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("PaperFolderChangeSubscriptionDetails", 3)?; - self.internal_serialize::(&mut s)?; - s.end() + serializer.serialize_struct("ReplayProjectTeamAddDetails", 0)?.end() } } #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct PaperFolderChangeSubscriptionType { +pub struct ReplayProjectTeamAddType { pub description: String, } -impl PaperFolderChangeSubscriptionType { +impl ReplayProjectTeamAddType { pub fn new(description: String) -> Self { - PaperFolderChangeSubscriptionType { + ReplayProjectTeamAddType { description, } } } -const PAPER_FOLDER_CHANGE_SUBSCRIPTION_TYPE_FIELDS: &[&str] = &["description"]; -impl PaperFolderChangeSubscriptionType { +const REPLAY_PROJECT_TEAM_ADD_TYPE_FIELDS: &[&str] = &["description"]; +impl ReplayProjectTeamAddType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -77844,7 +99758,7 @@ impl PaperFolderChangeSubscriptionType { if optional && nothing { return Ok(None); } - let result = PaperFolderChangeSubscriptionType { + let result = ReplayProjectTeamAddType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -77860,152 +99774,104 @@ impl PaperFolderChangeSubscriptionType { } } -impl<'de> ::serde::de::Deserialize<'de> for PaperFolderChangeSubscriptionType { +impl<'de> ::serde::de::Deserialize<'de> for ReplayProjectTeamAddType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = PaperFolderChangeSubscriptionType; + type Value = ReplayProjectTeamAddType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a PaperFolderChangeSubscriptionType struct") + f.write_str("a ReplayProjectTeamAddType struct") } fn visit_map>(self, map: V) -> Result { - PaperFolderChangeSubscriptionType::internal_deserialize(map) + ReplayProjectTeamAddType::internal_deserialize(map) } } - deserializer.deserialize_struct("PaperFolderChangeSubscriptionType", PAPER_FOLDER_CHANGE_SUBSCRIPTION_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("ReplayProjectTeamAddType", REPLAY_PROJECT_TEAM_ADD_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for PaperFolderChangeSubscriptionType { +impl ::serde::ser::Serialize for ReplayProjectTeamAddType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("PaperFolderChangeSubscriptionType", 1)?; + let mut s = serializer.serialize_struct("ReplayProjectTeamAddType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Archived Paper folder. -#[derive(Debug, Clone, PartialEq, Eq)] +/// Removed member from Replay Project. +#[derive(Debug, Clone, PartialEq, Eq, Default)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct PaperFolderDeletedDetails { - /// Event unique identifier. - pub event_uuid: String, -} - -impl PaperFolderDeletedDetails { - pub fn new(event_uuid: String) -> Self { - PaperFolderDeletedDetails { - event_uuid, - } - } +pub struct ReplayProjectTeamDeleteDetails { } -const PAPER_FOLDER_DELETED_DETAILS_FIELDS: &[&str] = &["event_uuid"]; -impl PaperFolderDeletedDetails { +const REPLAY_PROJECT_TEAM_DELETE_DETAILS_FIELDS: &[&str] = &[]; +impl ReplayProjectTeamDeleteDetails { + // no _opt deserializer pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( - map: V, - ) -> Result { - Self::internal_deserialize_opt(map, false).map(Option::unwrap) - } - - pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - optional: bool, - ) -> Result, V::Error> { - let mut field_event_uuid = None; - let mut nothing = true; - while let Some(key) = map.next_key::<&str>()? { - nothing = false; - match key { - "event_uuid" => { - if field_event_uuid.is_some() { - return Err(::serde::de::Error::duplicate_field("event_uuid")); - } - field_event_uuid = Some(map.next_value()?); - } - _ => { - // unknown field allowed and ignored - map.next_value::<::serde_json::Value>()?; - } - } - } - if optional && nothing { - return Ok(None); - } - let result = PaperFolderDeletedDetails { - event_uuid: field_event_uuid.ok_or_else(|| ::serde::de::Error::missing_field("event_uuid"))?, - }; - Ok(Some(result)) - } - - pub(crate) fn internal_serialize( - &self, - s: &mut S::SerializeStruct, - ) -> Result<(), S::Error> { - use serde::ser::SerializeStruct; - s.serialize_field("event_uuid", &self.event_uuid)?; - Ok(()) + ) -> Result { + // ignore any fields found; none are presently recognized + crate::eat_json_fields(&mut map)?; + Ok(ReplayProjectTeamDeleteDetails {}) } } -impl<'de> ::serde::de::Deserialize<'de> for PaperFolderDeletedDetails { +impl<'de> ::serde::de::Deserialize<'de> for ReplayProjectTeamDeleteDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = PaperFolderDeletedDetails; + type Value = ReplayProjectTeamDeleteDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a PaperFolderDeletedDetails struct") + f.write_str("a ReplayProjectTeamDeleteDetails struct") } fn visit_map>(self, map: V) -> Result { - PaperFolderDeletedDetails::internal_deserialize(map) + ReplayProjectTeamDeleteDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("PaperFolderDeletedDetails", PAPER_FOLDER_DELETED_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("ReplayProjectTeamDeleteDetails", REPLAY_PROJECT_TEAM_DELETE_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for PaperFolderDeletedDetails { +impl ::serde::ser::Serialize for ReplayProjectTeamDeleteDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("PaperFolderDeletedDetails", 1)?; - self.internal_serialize::(&mut s)?; - s.end() + serializer.serialize_struct("ReplayProjectTeamDeleteDetails", 0)?.end() } } #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct PaperFolderDeletedType { +pub struct ReplayProjectTeamDeleteType { pub description: String, } -impl PaperFolderDeletedType { +impl ReplayProjectTeamDeleteType { pub fn new(description: String) -> Self { - PaperFolderDeletedType { + ReplayProjectTeamDeleteType { description, } } } -const PAPER_FOLDER_DELETED_TYPE_FIELDS: &[&str] = &["description"]; -impl PaperFolderDeletedType { +const REPLAY_PROJECT_TEAM_DELETE_TYPE_FIELDS: &[&str] = &["description"]; +impl ReplayProjectTeamDeleteType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -78026,7 +99892,7 @@ impl PaperFolderDeletedType { if optional && nothing { return Ok(None); } - let result = PaperFolderDeletedType { + let result = ReplayProjectTeamDeleteType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -78042,72 +99908,156 @@ impl PaperFolderDeletedType { } } -impl<'de> ::serde::de::Deserialize<'de> for PaperFolderDeletedType { +impl<'de> ::serde::de::Deserialize<'de> for ReplayProjectTeamDeleteType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = PaperFolderDeletedType; + type Value = ReplayProjectTeamDeleteType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a PaperFolderDeletedType struct") + f.write_str("a ReplayProjectTeamDeleteType struct") } fn visit_map>(self, map: V) -> Result { - PaperFolderDeletedType::internal_deserialize(map) + ReplayProjectTeamDeleteType::internal_deserialize(map) } } - deserializer.deserialize_struct("PaperFolderDeletedType", PAPER_FOLDER_DELETED_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("ReplayProjectTeamDeleteType", REPLAY_PROJECT_TEAM_DELETE_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for PaperFolderDeletedType { +impl ::serde::ser::Serialize for ReplayProjectTeamDeleteType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("PaperFolderDeletedType", 1)?; + let mut s = serializer.serialize_struct("ReplayProjectTeamDeleteType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Followed Paper folder. +/// Policy for deciding who Replay content can be shared with through links +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // variants may be added in the future +pub enum ReplaySharingPolicy { + Anyone, + TeamAndAllowlist, + TeamOnly, + /// Catch-all used for unrecognized values returned from the server. Encountering this value + /// typically indicates that this SDK version is out of date. + Other, +} + +impl<'de> ::serde::de::Deserialize<'de> for ReplaySharingPolicy { + fn deserialize>(deserializer: D) -> Result { + // union deserializer + use serde::de::{self, MapAccess, Visitor}; + struct EnumVisitor; + impl<'de> Visitor<'de> for EnumVisitor { + type Value = ReplaySharingPolicy; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a ReplaySharingPolicy structure") + } + fn visit_map>(self, mut map: V) -> Result { + let tag: &str = match map.next_key()? { + Some(".tag") => map.next_value()?, + _ => return Err(de::Error::missing_field(".tag")) + }; + let value = match tag { + "anyone" => ReplaySharingPolicy::Anyone, + "team_and_allowlist" => ReplaySharingPolicy::TeamAndAllowlist, + "team_only" => ReplaySharingPolicy::TeamOnly, + _ => ReplaySharingPolicy::Other, + }; + crate::eat_json_fields(&mut map)?; + Ok(value) + } + } + const VARIANTS: &[&str] = &["anyone", + "team_and_allowlist", + "team_only", + "other"]; + deserializer.deserialize_struct("ReplaySharingPolicy", VARIANTS, EnumVisitor) + } +} + +impl ::serde::ser::Serialize for ReplaySharingPolicy { + fn serialize(&self, serializer: S) -> Result { + // union serializer + use serde::ser::SerializeStruct; + match self { + ReplaySharingPolicy::Anyone => { + // unit + let mut s = serializer.serialize_struct("ReplaySharingPolicy", 1)?; + s.serialize_field(".tag", "anyone")?; + s.end() + } + ReplaySharingPolicy::TeamAndAllowlist => { + // unit + let mut s = serializer.serialize_struct("ReplaySharingPolicy", 1)?; + s.serialize_field(".tag", "team_and_allowlist")?; + s.end() + } + ReplaySharingPolicy::TeamOnly => { + // unit + let mut s = serializer.serialize_struct("ReplaySharingPolicy", 1)?; + s.serialize_field(".tag", "team_only")?; + s.end() + } + ReplaySharingPolicy::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) + } + } +} + +/// Changed the policy for sharing Replay content. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct PaperFolderFollowedDetails { - /// Event unique identifier. - pub event_uuid: String, +pub struct ReplaySharingPolicyChangedDetails { + /// To. + pub new_value: ReplaySharingPolicy, + /// From. + pub previous_value: ReplaySharingPolicy, } -impl PaperFolderFollowedDetails { - pub fn new(event_uuid: String) -> Self { - PaperFolderFollowedDetails { - event_uuid, +impl ReplaySharingPolicyChangedDetails { + pub fn new(new_value: ReplaySharingPolicy, previous_value: ReplaySharingPolicy) -> Self { + ReplaySharingPolicyChangedDetails { + new_value, + previous_value, } } } -const PAPER_FOLDER_FOLLOWED_DETAILS_FIELDS: &[&str] = &["event_uuid"]; -impl PaperFolderFollowedDetails { +const REPLAY_SHARING_POLICY_CHANGED_DETAILS_FIELDS: &[&str] = &["new_value", + "previous_value"]; +impl ReplaySharingPolicyChangedDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_event_uuid = None; + ) -> Result, V::Error> { + let mut field_new_value = None; + let mut field_previous_value = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "event_uuid" => { - if field_event_uuid.is_some() { - return Err(::serde::de::Error::duplicate_field("event_uuid")); + "new_value" => { + if field_new_value.is_some() { + return Err(::serde::de::Error::duplicate_field("new_value")); } - field_event_uuid = Some(map.next_value()?); + field_new_value = Some(map.next_value()?); + } + "previous_value" => { + if field_previous_value.is_some() { + return Err(::serde::de::Error::duplicate_field("previous_value")); + } + field_previous_value = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -78118,8 +100068,9 @@ impl PaperFolderFollowedDetails { if optional && nothing { return Ok(None); } - let result = PaperFolderFollowedDetails { - event_uuid: field_event_uuid.ok_or_else(|| ::serde::de::Error::missing_field("event_uuid"))?, + let result = ReplaySharingPolicyChangedDetails { + new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, + previous_value: field_previous_value.ok_or_else(|| ::serde::de::Error::missing_field("previous_value"))?, }; Ok(Some(result)) } @@ -78129,34 +100080,35 @@ impl PaperFolderFollowedDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("event_uuid", &self.event_uuid)?; + s.serialize_field("new_value", &self.new_value)?; + s.serialize_field("previous_value", &self.previous_value)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for PaperFolderFollowedDetails { +impl<'de> ::serde::de::Deserialize<'de> for ReplaySharingPolicyChangedDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = PaperFolderFollowedDetails; + type Value = ReplaySharingPolicyChangedDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a PaperFolderFollowedDetails struct") + f.write_str("a ReplaySharingPolicyChangedDetails struct") } fn visit_map>(self, map: V) -> Result { - PaperFolderFollowedDetails::internal_deserialize(map) + ReplaySharingPolicyChangedDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("PaperFolderFollowedDetails", PAPER_FOLDER_FOLLOWED_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("ReplaySharingPolicyChangedDetails", REPLAY_SHARING_POLICY_CHANGED_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for PaperFolderFollowedDetails { +impl ::serde::ser::Serialize for ReplaySharingPolicyChangedDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("PaperFolderFollowedDetails", 1)?; + let mut s = serializer.serialize_struct("ReplaySharingPolicyChangedDetails", 2)?; self.internal_serialize::(&mut s)?; s.end() } @@ -78164,30 +100116,30 @@ impl ::serde::ser::Serialize for PaperFolderFollowedDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct PaperFolderFollowedType { +pub struct ReplaySharingPolicyChangedType { pub description: String, } -impl PaperFolderFollowedType { +impl ReplaySharingPolicyChangedType { pub fn new(description: String) -> Self { - PaperFolderFollowedType { + ReplaySharingPolicyChangedType { description, } } } -const PAPER_FOLDER_FOLLOWED_TYPE_FIELDS: &[&str] = &["description"]; -impl PaperFolderFollowedType { +const REPLAY_SHARING_POLICY_CHANGED_TYPE_FIELDS: &[&str] = &["description"]; +impl ReplaySharingPolicyChangedType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -78208,7 +100160,7 @@ impl PaperFolderFollowedType { if optional && nothing { return Ok(None); } - let result = PaperFolderFollowedType { + let result = ReplaySharingPolicyChangedType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -78224,83 +100176,72 @@ impl PaperFolderFollowedType { } } -impl<'de> ::serde::de::Deserialize<'de> for PaperFolderFollowedType { +impl<'de> ::serde::de::Deserialize<'de> for ReplaySharingPolicyChangedType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = PaperFolderFollowedType; + type Value = ReplaySharingPolicyChangedType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a PaperFolderFollowedType struct") + f.write_str("a ReplaySharingPolicyChangedType struct") } fn visit_map>(self, map: V) -> Result { - PaperFolderFollowedType::internal_deserialize(map) + ReplaySharingPolicyChangedType::internal_deserialize(map) } } - deserializer.deserialize_struct("PaperFolderFollowedType", PAPER_FOLDER_FOLLOWED_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("ReplaySharingPolicyChangedType", REPLAY_SHARING_POLICY_CHANGED_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for PaperFolderFollowedType { +impl ::serde::ser::Serialize for ReplaySharingPolicyChangedType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("PaperFolderFollowedType", 1)?; + let mut s = serializer.serialize_struct("ReplaySharingPolicyChangedType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Paper folder's logged information. +/// Created a team project in Replay. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct PaperFolderLogInfo { - /// Papers folder Id. - pub folder_id: String, - /// Paper folder name. - pub folder_name: String, +pub struct ReplayTeamProjectCreatedDetails { + /// Name of the newly created team project. + pub name: String, } -impl PaperFolderLogInfo { - pub fn new(folder_id: String, folder_name: String) -> Self { - PaperFolderLogInfo { - folder_id, - folder_name, +impl ReplayTeamProjectCreatedDetails { + pub fn new(name: String) -> Self { + ReplayTeamProjectCreatedDetails { + name, } } } -const PAPER_FOLDER_LOG_INFO_FIELDS: &[&str] = &["folder_id", - "folder_name"]; -impl PaperFolderLogInfo { +const REPLAY_TEAM_PROJECT_CREATED_DETAILS_FIELDS: &[&str] = &["name"]; +impl ReplayTeamProjectCreatedDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_folder_id = None; - let mut field_folder_name = None; + ) -> Result, V::Error> { + let mut field_name = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "folder_id" => { - if field_folder_id.is_some() { - return Err(::serde::de::Error::duplicate_field("folder_id")); - } - field_folder_id = Some(map.next_value()?); - } - "folder_name" => { - if field_folder_name.is_some() { - return Err(::serde::de::Error::duplicate_field("folder_name")); + "name" => { + if field_name.is_some() { + return Err(::serde::de::Error::duplicate_field("name")); } - field_folder_name = Some(map.next_value()?); + field_name = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -78311,9 +100252,8 @@ impl PaperFolderLogInfo { if optional && nothing { return Ok(None); } - let result = PaperFolderLogInfo { - folder_id: field_folder_id.ok_or_else(|| ::serde::de::Error::missing_field("folder_id"))?, - folder_name: field_folder_name.ok_or_else(|| ::serde::de::Error::missing_field("folder_name"))?, + let result = ReplayTeamProjectCreatedDetails { + name: field_name.ok_or_else(|| ::serde::de::Error::missing_field("name"))?, }; Ok(Some(result)) } @@ -78323,78 +100263,75 @@ impl PaperFolderLogInfo { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("folder_id", &self.folder_id)?; - s.serialize_field("folder_name", &self.folder_name)?; + s.serialize_field("name", &self.name)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for PaperFolderLogInfo { +impl<'de> ::serde::de::Deserialize<'de> for ReplayTeamProjectCreatedDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = PaperFolderLogInfo; + type Value = ReplayTeamProjectCreatedDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a PaperFolderLogInfo struct") + f.write_str("a ReplayTeamProjectCreatedDetails struct") } fn visit_map>(self, map: V) -> Result { - PaperFolderLogInfo::internal_deserialize(map) + ReplayTeamProjectCreatedDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("PaperFolderLogInfo", PAPER_FOLDER_LOG_INFO_FIELDS, StructVisitor) + deserializer.deserialize_struct("ReplayTeamProjectCreatedDetails", REPLAY_TEAM_PROJECT_CREATED_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for PaperFolderLogInfo { +impl ::serde::ser::Serialize for ReplayTeamProjectCreatedDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("PaperFolderLogInfo", 2)?; + let mut s = serializer.serialize_struct("ReplayTeamProjectCreatedDetails", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Shared Paper folder with users and/or groups. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct PaperFolderTeamInviteDetails { - /// Event unique identifier. - pub event_uuid: String, +pub struct ReplayTeamProjectCreatedType { + pub description: String, } -impl PaperFolderTeamInviteDetails { - pub fn new(event_uuid: String) -> Self { - PaperFolderTeamInviteDetails { - event_uuid, +impl ReplayTeamProjectCreatedType { + pub fn new(description: String) -> Self { + ReplayTeamProjectCreatedType { + description, } } } -const PAPER_FOLDER_TEAM_INVITE_DETAILS_FIELDS: &[&str] = &["event_uuid"]; -impl PaperFolderTeamInviteDetails { +const REPLAY_TEAM_PROJECT_CREATED_TYPE_FIELDS: &[&str] = &["description"]; +impl ReplayTeamProjectCreatedType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_event_uuid = None; + ) -> Result, V::Error> { + let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "event_uuid" => { - if field_event_uuid.is_some() { - return Err(::serde::de::Error::duplicate_field("event_uuid")); + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); } - field_event_uuid = Some(map.next_value()?); + field_description = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -78405,8 +100342,8 @@ impl PaperFolderTeamInviteDetails { if optional && nothing { return Ok(None); } - let result = PaperFolderTeamInviteDetails { - event_uuid: field_event_uuid.ok_or_else(|| ::serde::de::Error::missing_field("event_uuid"))?, + let result = ReplayTeamProjectCreatedType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) } @@ -78416,75 +100353,88 @@ impl PaperFolderTeamInviteDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("event_uuid", &self.event_uuid)?; + s.serialize_field("description", &self.description)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for PaperFolderTeamInviteDetails { +impl<'de> ::serde::de::Deserialize<'de> for ReplayTeamProjectCreatedType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = PaperFolderTeamInviteDetails; + type Value = ReplayTeamProjectCreatedType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a PaperFolderTeamInviteDetails struct") + f.write_str("a ReplayTeamProjectCreatedType struct") } fn visit_map>(self, map: V) -> Result { - PaperFolderTeamInviteDetails::internal_deserialize(map) + ReplayTeamProjectCreatedType::internal_deserialize(map) } } - deserializer.deserialize_struct("PaperFolderTeamInviteDetails", PAPER_FOLDER_TEAM_INVITE_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("ReplayTeamProjectCreatedType", REPLAY_TEAM_PROJECT_CREATED_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for PaperFolderTeamInviteDetails { +impl ::serde::ser::Serialize for ReplayTeamProjectCreatedType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("PaperFolderTeamInviteDetails", 1)?; + let mut s = serializer.serialize_struct("ReplayTeamProjectCreatedType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } +/// Reseller information. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct PaperFolderTeamInviteType { - pub description: String, +pub struct ResellerLogInfo { + /// Reseller name. + pub reseller_name: String, + /// Reseller email. + pub reseller_email: EmailAddress, } -impl PaperFolderTeamInviteType { - pub fn new(description: String) -> Self { - PaperFolderTeamInviteType { - description, +impl ResellerLogInfo { + pub fn new(reseller_name: String, reseller_email: EmailAddress) -> Self { + ResellerLogInfo { + reseller_name, + reseller_email, } } } -const PAPER_FOLDER_TEAM_INVITE_TYPE_FIELDS: &[&str] = &["description"]; -impl PaperFolderTeamInviteType { +const RESELLER_LOG_INFO_FIELDS: &[&str] = &["reseller_name", + "reseller_email"]; +impl ResellerLogInfo { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_description = None; + ) -> Result, V::Error> { + let mut field_reseller_name = None; + let mut field_reseller_email = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "description" => { - if field_description.is_some() { - return Err(::serde::de::Error::duplicate_field("description")); + "reseller_name" => { + if field_reseller_name.is_some() { + return Err(::serde::de::Error::duplicate_field("reseller_name")); } - field_description = Some(map.next_value()?); + field_reseller_name = Some(map.next_value()?); + } + "reseller_email" => { + if field_reseller_email.is_some() { + return Err(::serde::de::Error::duplicate_field("reseller_email")); + } + field_reseller_email = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -78495,8 +100445,9 @@ impl PaperFolderTeamInviteType { if optional && nothing { return Ok(None); } - let result = PaperFolderTeamInviteType { - description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + let result = ResellerLogInfo { + reseller_name: field_reseller_name.ok_or_else(|| ::serde::de::Error::missing_field("reseller_name"))?, + reseller_email: field_reseller_email.ok_or_else(|| ::serde::de::Error::missing_field("reseller_email"))?, }; Ok(Some(result)) } @@ -78506,60 +100457,59 @@ impl PaperFolderTeamInviteType { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("description", &self.description)?; + s.serialize_field("reseller_name", &self.reseller_name)?; + s.serialize_field("reseller_email", &self.reseller_email)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for PaperFolderTeamInviteType { +impl<'de> ::serde::de::Deserialize<'de> for ResellerLogInfo { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = PaperFolderTeamInviteType; + type Value = ResellerLogInfo; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a PaperFolderTeamInviteType struct") + f.write_str("a ResellerLogInfo struct") } fn visit_map>(self, map: V) -> Result { - PaperFolderTeamInviteType::internal_deserialize(map) + ResellerLogInfo::internal_deserialize(map) } } - deserializer.deserialize_struct("PaperFolderTeamInviteType", PAPER_FOLDER_TEAM_INVITE_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("ResellerLogInfo", RESELLER_LOG_INFO_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for PaperFolderTeamInviteType { +impl ::serde::ser::Serialize for ResellerLogInfo { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("PaperFolderTeamInviteType", 1)?; + let mut s = serializer.serialize_struct("ResellerLogInfo", 2)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Policy for controlling if team members can share Paper documents externally. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // variants may be added in the future -pub enum PaperMemberPolicy { - AnyoneWithLink, - OnlyTeam, - TeamAndExplicitlyShared, +pub enum ResellerRole { + NotReseller, + ResellerAdmin, /// Catch-all used for unrecognized values returned from the server. Encountering this value /// typically indicates that this SDK version is out of date. Other, } -impl<'de> ::serde::de::Deserialize<'de> for PaperMemberPolicy { +impl<'de> ::serde::de::Deserialize<'de> for ResellerRole { fn deserialize>(deserializer: D) -> Result { // union deserializer use serde::de::{self, MapAccess, Visitor}; struct EnumVisitor; impl<'de> Visitor<'de> for EnumVisitor { - type Value = PaperMemberPolicy; + type Value = ResellerRole; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a PaperMemberPolicy structure") + f.write_str("a ResellerRole structure") } fn visit_map>(self, mut map: V) -> Result { let tag: &str = match map.next_key()? { @@ -78567,115 +100517,92 @@ impl<'de> ::serde::de::Deserialize<'de> for PaperMemberPolicy { _ => return Err(de::Error::missing_field(".tag")) }; let value = match tag { - "anyone_with_link" => PaperMemberPolicy::AnyoneWithLink, - "only_team" => PaperMemberPolicy::OnlyTeam, - "team_and_explicitly_shared" => PaperMemberPolicy::TeamAndExplicitlyShared, - _ => PaperMemberPolicy::Other, + "not_reseller" => ResellerRole::NotReseller, + "reseller_admin" => ResellerRole::ResellerAdmin, + _ => ResellerRole::Other, }; crate::eat_json_fields(&mut map)?; Ok(value) } } - const VARIANTS: &[&str] = &["anyone_with_link", - "only_team", - "team_and_explicitly_shared", + const VARIANTS: &[&str] = &["not_reseller", + "reseller_admin", "other"]; - deserializer.deserialize_struct("PaperMemberPolicy", VARIANTS, EnumVisitor) + deserializer.deserialize_struct("ResellerRole", VARIANTS, EnumVisitor) } } -impl ::serde::ser::Serialize for PaperMemberPolicy { +impl ::serde::ser::Serialize for ResellerRole { fn serialize(&self, serializer: S) -> Result { // union serializer use serde::ser::SerializeStruct; match self { - PaperMemberPolicy::AnyoneWithLink => { - // unit - let mut s = serializer.serialize_struct("PaperMemberPolicy", 1)?; - s.serialize_field(".tag", "anyone_with_link")?; - s.end() - } - PaperMemberPolicy::OnlyTeam => { + ResellerRole::NotReseller => { // unit - let mut s = serializer.serialize_struct("PaperMemberPolicy", 1)?; - s.serialize_field(".tag", "only_team")?; + let mut s = serializer.serialize_struct("ResellerRole", 1)?; + s.serialize_field(".tag", "not_reseller")?; s.end() } - PaperMemberPolicy::TeamAndExplicitlyShared => { + ResellerRole::ResellerAdmin => { // unit - let mut s = serializer.serialize_struct("PaperMemberPolicy", 1)?; - s.serialize_field(".tag", "team_and_explicitly_shared")?; + let mut s = serializer.serialize_struct("ResellerRole", 1)?; + s.serialize_field(".tag", "reseller_admin")?; s.end() } - PaperMemberPolicy::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) + ResellerRole::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) } } } -/// Changed permissions for published doc. +/// Enabled/disabled reseller support. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct PaperPublishedLinkChangePermissionDetails { - /// Event unique identifier. - pub event_uuid: String, - /// New permission level. - pub new_permission_level: String, - /// Previous permission level. - pub previous_permission_level: String, +pub struct ResellerSupportChangePolicyDetails { + /// New Reseller support policy. + pub new_value: ResellerSupportPolicy, + /// Previous Reseller support policy. + pub previous_value: ResellerSupportPolicy, } -impl PaperPublishedLinkChangePermissionDetails { - pub fn new( - event_uuid: String, - new_permission_level: String, - previous_permission_level: String, - ) -> Self { - PaperPublishedLinkChangePermissionDetails { - event_uuid, - new_permission_level, - previous_permission_level, +impl ResellerSupportChangePolicyDetails { + pub fn new(new_value: ResellerSupportPolicy, previous_value: ResellerSupportPolicy) -> Self { + ResellerSupportChangePolicyDetails { + new_value, + previous_value, } } } -const PAPER_PUBLISHED_LINK_CHANGE_PERMISSION_DETAILS_FIELDS: &[&str] = &["event_uuid", - "new_permission_level", - "previous_permission_level"]; -impl PaperPublishedLinkChangePermissionDetails { +const RESELLER_SUPPORT_CHANGE_POLICY_DETAILS_FIELDS: &[&str] = &["new_value", + "previous_value"]; +impl ResellerSupportChangePolicyDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_event_uuid = None; - let mut field_new_permission_level = None; - let mut field_previous_permission_level = None; + ) -> Result, V::Error> { + let mut field_new_value = None; + let mut field_previous_value = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "event_uuid" => { - if field_event_uuid.is_some() { - return Err(::serde::de::Error::duplicate_field("event_uuid")); - } - field_event_uuid = Some(map.next_value()?); - } - "new_permission_level" => { - if field_new_permission_level.is_some() { - return Err(::serde::de::Error::duplicate_field("new_permission_level")); + "new_value" => { + if field_new_value.is_some() { + return Err(::serde::de::Error::duplicate_field("new_value")); } - field_new_permission_level = Some(map.next_value()?); + field_new_value = Some(map.next_value()?); } - "previous_permission_level" => { - if field_previous_permission_level.is_some() { - return Err(::serde::de::Error::duplicate_field("previous_permission_level")); + "previous_value" => { + if field_previous_value.is_some() { + return Err(::serde::de::Error::duplicate_field("previous_value")); } - field_previous_permission_level = Some(map.next_value()?); + field_previous_value = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -78686,10 +100613,9 @@ impl PaperPublishedLinkChangePermissionDetails { if optional && nothing { return Ok(None); } - let result = PaperPublishedLinkChangePermissionDetails { - event_uuid: field_event_uuid.ok_or_else(|| ::serde::de::Error::missing_field("event_uuid"))?, - new_permission_level: field_new_permission_level.ok_or_else(|| ::serde::de::Error::missing_field("new_permission_level"))?, - previous_permission_level: field_previous_permission_level.ok_or_else(|| ::serde::de::Error::missing_field("previous_permission_level"))?, + let result = ResellerSupportChangePolicyDetails { + new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, + previous_value: field_previous_value.ok_or_else(|| ::serde::de::Error::missing_field("previous_value"))?, }; Ok(Some(result)) } @@ -78699,36 +100625,35 @@ impl PaperPublishedLinkChangePermissionDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("event_uuid", &self.event_uuid)?; - s.serialize_field("new_permission_level", &self.new_permission_level)?; - s.serialize_field("previous_permission_level", &self.previous_permission_level)?; + s.serialize_field("new_value", &self.new_value)?; + s.serialize_field("previous_value", &self.previous_value)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for PaperPublishedLinkChangePermissionDetails { +impl<'de> ::serde::de::Deserialize<'de> for ResellerSupportChangePolicyDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = PaperPublishedLinkChangePermissionDetails; + type Value = ResellerSupportChangePolicyDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a PaperPublishedLinkChangePermissionDetails struct") + f.write_str("a ResellerSupportChangePolicyDetails struct") } fn visit_map>(self, map: V) -> Result { - PaperPublishedLinkChangePermissionDetails::internal_deserialize(map) + ResellerSupportChangePolicyDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("PaperPublishedLinkChangePermissionDetails", PAPER_PUBLISHED_LINK_CHANGE_PERMISSION_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("ResellerSupportChangePolicyDetails", RESELLER_SUPPORT_CHANGE_POLICY_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for PaperPublishedLinkChangePermissionDetails { +impl ::serde::ser::Serialize for ResellerSupportChangePolicyDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("PaperPublishedLinkChangePermissionDetails", 3)?; + let mut s = serializer.serialize_struct("ResellerSupportChangePolicyDetails", 2)?; self.internal_serialize::(&mut s)?; s.end() } @@ -78736,30 +100661,30 @@ impl ::serde::ser::Serialize for PaperPublishedLinkChangePermissionDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct PaperPublishedLinkChangePermissionType { +pub struct ResellerSupportChangePolicyType { pub description: String, } -impl PaperPublishedLinkChangePermissionType { +impl ResellerSupportChangePolicyType { pub fn new(description: String) -> Self { - PaperPublishedLinkChangePermissionType { + ResellerSupportChangePolicyType { description, } } } -const PAPER_PUBLISHED_LINK_CHANGE_PERMISSION_TYPE_FIELDS: &[&str] = &["description"]; -impl PaperPublishedLinkChangePermissionType { +const RESELLER_SUPPORT_CHANGE_POLICY_TYPE_FIELDS: &[&str] = &["description"]; +impl ResellerSupportChangePolicyType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -78780,7 +100705,7 @@ impl PaperPublishedLinkChangePermissionType { if optional && nothing { return Ok(None); } - let result = PaperPublishedLinkChangePermissionType { + let result = ResellerSupportChangePolicyType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -78796,152 +100721,168 @@ impl PaperPublishedLinkChangePermissionType { } } -impl<'de> ::serde::de::Deserialize<'de> for PaperPublishedLinkChangePermissionType { +impl<'de> ::serde::de::Deserialize<'de> for ResellerSupportChangePolicyType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = PaperPublishedLinkChangePermissionType; + type Value = ResellerSupportChangePolicyType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a PaperPublishedLinkChangePermissionType struct") + f.write_str("a ResellerSupportChangePolicyType struct") } fn visit_map>(self, map: V) -> Result { - PaperPublishedLinkChangePermissionType::internal_deserialize(map) + ResellerSupportChangePolicyType::internal_deserialize(map) + } + } + deserializer.deserialize_struct("ResellerSupportChangePolicyType", RESELLER_SUPPORT_CHANGE_POLICY_TYPE_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for ResellerSupportChangePolicyType { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("ResellerSupportChangePolicyType", 1)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +/// Policy for controlling if reseller can access the admin console as administrator +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // variants may be added in the future +pub enum ResellerSupportPolicy { + Disabled, + Enabled, + /// Catch-all used for unrecognized values returned from the server. Encountering this value + /// typically indicates that this SDK version is out of date. + Other, +} + +impl<'de> ::serde::de::Deserialize<'de> for ResellerSupportPolicy { + fn deserialize>(deserializer: D) -> Result { + // union deserializer + use serde::de::{self, MapAccess, Visitor}; + struct EnumVisitor; + impl<'de> Visitor<'de> for EnumVisitor { + type Value = ResellerSupportPolicy; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a ResellerSupportPolicy structure") + } + fn visit_map>(self, mut map: V) -> Result { + let tag: &str = match map.next_key()? { + Some(".tag") => map.next_value()?, + _ => return Err(de::Error::missing_field(".tag")) + }; + let value = match tag { + "disabled" => ResellerSupportPolicy::Disabled, + "enabled" => ResellerSupportPolicy::Enabled, + _ => ResellerSupportPolicy::Other, + }; + crate::eat_json_fields(&mut map)?; + Ok(value) + } + } + const VARIANTS: &[&str] = &["disabled", + "enabled", + "other"]; + deserializer.deserialize_struct("ResellerSupportPolicy", VARIANTS, EnumVisitor) + } +} + +impl ::serde::ser::Serialize for ResellerSupportPolicy { + fn serialize(&self, serializer: S) -> Result { + // union serializer + use serde::ser::SerializeStruct; + match self { + ResellerSupportPolicy::Disabled => { + // unit + let mut s = serializer.serialize_struct("ResellerSupportPolicy", 1)?; + s.serialize_field(".tag", "disabled")?; + s.end() + } + ResellerSupportPolicy::Enabled => { + // unit + let mut s = serializer.serialize_struct("ResellerSupportPolicy", 1)?; + s.serialize_field(".tag", "enabled")?; + s.end() } + ResellerSupportPolicy::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) } - deserializer.deserialize_struct("PaperPublishedLinkChangePermissionType", PAPER_PUBLISHED_LINK_CHANGE_PERMISSION_TYPE_FIELDS, StructVisitor) - } -} - -impl ::serde::ser::Serialize for PaperPublishedLinkChangePermissionType { - fn serialize(&self, serializer: S) -> Result { - // struct serializer - use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("PaperPublishedLinkChangePermissionType", 1)?; - self.internal_serialize::(&mut s)?; - s.end() } } -/// Published doc. -#[derive(Debug, Clone, PartialEq, Eq)] +/// Ended reseller support session. +#[derive(Debug, Clone, PartialEq, Eq, Default)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct PaperPublishedLinkCreateDetails { - /// Event unique identifier. - pub event_uuid: String, -} - -impl PaperPublishedLinkCreateDetails { - pub fn new(event_uuid: String) -> Self { - PaperPublishedLinkCreateDetails { - event_uuid, - } - } +pub struct ResellerSupportSessionEndDetails { } -const PAPER_PUBLISHED_LINK_CREATE_DETAILS_FIELDS: &[&str] = &["event_uuid"]; -impl PaperPublishedLinkCreateDetails { +const RESELLER_SUPPORT_SESSION_END_DETAILS_FIELDS: &[&str] = &[]; +impl ResellerSupportSessionEndDetails { + // no _opt deserializer pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( - map: V, - ) -> Result { - Self::internal_deserialize_opt(map, false).map(Option::unwrap) - } - - pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - optional: bool, - ) -> Result, V::Error> { - let mut field_event_uuid = None; - let mut nothing = true; - while let Some(key) = map.next_key::<&str>()? { - nothing = false; - match key { - "event_uuid" => { - if field_event_uuid.is_some() { - return Err(::serde::de::Error::duplicate_field("event_uuid")); - } - field_event_uuid = Some(map.next_value()?); - } - _ => { - // unknown field allowed and ignored - map.next_value::<::serde_json::Value>()?; - } - } - } - if optional && nothing { - return Ok(None); - } - let result = PaperPublishedLinkCreateDetails { - event_uuid: field_event_uuid.ok_or_else(|| ::serde::de::Error::missing_field("event_uuid"))?, - }; - Ok(Some(result)) - } - - pub(crate) fn internal_serialize( - &self, - s: &mut S::SerializeStruct, - ) -> Result<(), S::Error> { - use serde::ser::SerializeStruct; - s.serialize_field("event_uuid", &self.event_uuid)?; - Ok(()) + ) -> Result { + // ignore any fields found; none are presently recognized + crate::eat_json_fields(&mut map)?; + Ok(ResellerSupportSessionEndDetails {}) } } -impl<'de> ::serde::de::Deserialize<'de> for PaperPublishedLinkCreateDetails { +impl<'de> ::serde::de::Deserialize<'de> for ResellerSupportSessionEndDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = PaperPublishedLinkCreateDetails; + type Value = ResellerSupportSessionEndDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a PaperPublishedLinkCreateDetails struct") + f.write_str("a ResellerSupportSessionEndDetails struct") } fn visit_map>(self, map: V) -> Result { - PaperPublishedLinkCreateDetails::internal_deserialize(map) + ResellerSupportSessionEndDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("PaperPublishedLinkCreateDetails", PAPER_PUBLISHED_LINK_CREATE_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("ResellerSupportSessionEndDetails", RESELLER_SUPPORT_SESSION_END_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for PaperPublishedLinkCreateDetails { +impl ::serde::ser::Serialize for ResellerSupportSessionEndDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("PaperPublishedLinkCreateDetails", 1)?; - self.internal_serialize::(&mut s)?; - s.end() + serializer.serialize_struct("ResellerSupportSessionEndDetails", 0)?.end() } } #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct PaperPublishedLinkCreateType { +pub struct ResellerSupportSessionEndType { pub description: String, } -impl PaperPublishedLinkCreateType { +impl ResellerSupportSessionEndType { pub fn new(description: String) -> Self { - PaperPublishedLinkCreateType { + ResellerSupportSessionEndType { description, } } } -const PAPER_PUBLISHED_LINK_CREATE_TYPE_FIELDS: &[&str] = &["description"]; -impl PaperPublishedLinkCreateType { +const RESELLER_SUPPORT_SESSION_END_TYPE_FIELDS: &[&str] = &["description"]; +impl ResellerSupportSessionEndType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -78962,7 +100903,7 @@ impl PaperPublishedLinkCreateType { if optional && nothing { return Ok(None); } - let result = PaperPublishedLinkCreateType { + let result = ResellerSupportSessionEndType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -78978,152 +100919,104 @@ impl PaperPublishedLinkCreateType { } } -impl<'de> ::serde::de::Deserialize<'de> for PaperPublishedLinkCreateType { +impl<'de> ::serde::de::Deserialize<'de> for ResellerSupportSessionEndType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = PaperPublishedLinkCreateType; + type Value = ResellerSupportSessionEndType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a PaperPublishedLinkCreateType struct") + f.write_str("a ResellerSupportSessionEndType struct") } fn visit_map>(self, map: V) -> Result { - PaperPublishedLinkCreateType::internal_deserialize(map) + ResellerSupportSessionEndType::internal_deserialize(map) } } - deserializer.deserialize_struct("PaperPublishedLinkCreateType", PAPER_PUBLISHED_LINK_CREATE_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("ResellerSupportSessionEndType", RESELLER_SUPPORT_SESSION_END_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for PaperPublishedLinkCreateType { +impl ::serde::ser::Serialize for ResellerSupportSessionEndType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("PaperPublishedLinkCreateType", 1)?; + let mut s = serializer.serialize_struct("ResellerSupportSessionEndType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Unpublished doc. -#[derive(Debug, Clone, PartialEq, Eq)] +/// Started reseller support session. +#[derive(Debug, Clone, PartialEq, Eq, Default)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct PaperPublishedLinkDisabledDetails { - /// Event unique identifier. - pub event_uuid: String, -} - -impl PaperPublishedLinkDisabledDetails { - pub fn new(event_uuid: String) -> Self { - PaperPublishedLinkDisabledDetails { - event_uuid, - } - } +pub struct ResellerSupportSessionStartDetails { } -const PAPER_PUBLISHED_LINK_DISABLED_DETAILS_FIELDS: &[&str] = &["event_uuid"]; -impl PaperPublishedLinkDisabledDetails { +const RESELLER_SUPPORT_SESSION_START_DETAILS_FIELDS: &[&str] = &[]; +impl ResellerSupportSessionStartDetails { + // no _opt deserializer pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( - map: V, - ) -> Result { - Self::internal_deserialize_opt(map, false).map(Option::unwrap) - } - - pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - optional: bool, - ) -> Result, V::Error> { - let mut field_event_uuid = None; - let mut nothing = true; - while let Some(key) = map.next_key::<&str>()? { - nothing = false; - match key { - "event_uuid" => { - if field_event_uuid.is_some() { - return Err(::serde::de::Error::duplicate_field("event_uuid")); - } - field_event_uuid = Some(map.next_value()?); - } - _ => { - // unknown field allowed and ignored - map.next_value::<::serde_json::Value>()?; - } - } - } - if optional && nothing { - return Ok(None); - } - let result = PaperPublishedLinkDisabledDetails { - event_uuid: field_event_uuid.ok_or_else(|| ::serde::de::Error::missing_field("event_uuid"))?, - }; - Ok(Some(result)) - } - - pub(crate) fn internal_serialize( - &self, - s: &mut S::SerializeStruct, - ) -> Result<(), S::Error> { - use serde::ser::SerializeStruct; - s.serialize_field("event_uuid", &self.event_uuid)?; - Ok(()) + ) -> Result { + // ignore any fields found; none are presently recognized + crate::eat_json_fields(&mut map)?; + Ok(ResellerSupportSessionStartDetails {}) } } -impl<'de> ::serde::de::Deserialize<'de> for PaperPublishedLinkDisabledDetails { +impl<'de> ::serde::de::Deserialize<'de> for ResellerSupportSessionStartDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = PaperPublishedLinkDisabledDetails; + type Value = ResellerSupportSessionStartDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a PaperPublishedLinkDisabledDetails struct") + f.write_str("a ResellerSupportSessionStartDetails struct") } fn visit_map>(self, map: V) -> Result { - PaperPublishedLinkDisabledDetails::internal_deserialize(map) + ResellerSupportSessionStartDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("PaperPublishedLinkDisabledDetails", PAPER_PUBLISHED_LINK_DISABLED_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("ResellerSupportSessionStartDetails", RESELLER_SUPPORT_SESSION_START_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for PaperPublishedLinkDisabledDetails { +impl ::serde::ser::Serialize for ResellerSupportSessionStartDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("PaperPublishedLinkDisabledDetails", 1)?; - self.internal_serialize::(&mut s)?; - s.end() + serializer.serialize_struct("ResellerSupportSessionStartDetails", 0)?.end() } } #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct PaperPublishedLinkDisabledType { +pub struct ResellerSupportSessionStartType { pub description: String, } -impl PaperPublishedLinkDisabledType { +impl ResellerSupportSessionStartType { pub fn new(description: String) -> Self { - PaperPublishedLinkDisabledType { + ResellerSupportSessionStartType { description, } } } -const PAPER_PUBLISHED_LINK_DISABLED_TYPE_FIELDS: &[&str] = &["description"]; -impl PaperPublishedLinkDisabledType { +const RESELLER_SUPPORT_SESSION_START_TYPE_FIELDS: &[&str] = &["description"]; +impl ResellerSupportSessionStartType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -79144,7 +101037,7 @@ impl PaperPublishedLinkDisabledType { if optional && nothing { return Ok(None); } - let result = PaperPublishedLinkDisabledType { + let result = ResellerSupportSessionStartType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -79160,72 +101053,72 @@ impl PaperPublishedLinkDisabledType { } } -impl<'de> ::serde::de::Deserialize<'de> for PaperPublishedLinkDisabledType { +impl<'de> ::serde::de::Deserialize<'de> for ResellerSupportSessionStartType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = PaperPublishedLinkDisabledType; + type Value = ResellerSupportSessionStartType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a PaperPublishedLinkDisabledType struct") + f.write_str("a ResellerSupportSessionStartType struct") } fn visit_map>(self, map: V) -> Result { - PaperPublishedLinkDisabledType::internal_deserialize(map) + ResellerSupportSessionStartType::internal_deserialize(map) } } - deserializer.deserialize_struct("PaperPublishedLinkDisabledType", PAPER_PUBLISHED_LINK_DISABLED_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("ResellerSupportSessionStartType", RESELLER_SUPPORT_SESSION_START_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for PaperPublishedLinkDisabledType { +impl ::serde::ser::Serialize for ResellerSupportSessionStartType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("PaperPublishedLinkDisabledType", 1)?; + let mut s = serializer.serialize_struct("ResellerSupportSessionStartType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Viewed published doc. +/// Rewound a folder. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct PaperPublishedLinkViewDetails { - /// Event unique identifier. - pub event_uuid: String, +pub struct RewindFolderDetails { + /// Folder was Rewound to this date. + pub rewind_folder_target_ts_ms: crate::types::common::DropboxTimestamp, } -impl PaperPublishedLinkViewDetails { - pub fn new(event_uuid: String) -> Self { - PaperPublishedLinkViewDetails { - event_uuid, +impl RewindFolderDetails { + pub fn new(rewind_folder_target_ts_ms: crate::types::common::DropboxTimestamp) -> Self { + RewindFolderDetails { + rewind_folder_target_ts_ms, } } } -const PAPER_PUBLISHED_LINK_VIEW_DETAILS_FIELDS: &[&str] = &["event_uuid"]; -impl PaperPublishedLinkViewDetails { +const REWIND_FOLDER_DETAILS_FIELDS: &[&str] = &["rewind_folder_target_ts_ms"]; +impl RewindFolderDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_event_uuid = None; + ) -> Result, V::Error> { + let mut field_rewind_folder_target_ts_ms = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "event_uuid" => { - if field_event_uuid.is_some() { - return Err(::serde::de::Error::duplicate_field("event_uuid")); + "rewind_folder_target_ts_ms" => { + if field_rewind_folder_target_ts_ms.is_some() { + return Err(::serde::de::Error::duplicate_field("rewind_folder_target_ts_ms")); } - field_event_uuid = Some(map.next_value()?); + field_rewind_folder_target_ts_ms = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -79236,8 +101129,8 @@ impl PaperPublishedLinkViewDetails { if optional && nothing { return Ok(None); } - let result = PaperPublishedLinkViewDetails { - event_uuid: field_event_uuid.ok_or_else(|| ::serde::de::Error::missing_field("event_uuid"))?, + let result = RewindFolderDetails { + rewind_folder_target_ts_ms: field_rewind_folder_target_ts_ms.ok_or_else(|| ::serde::de::Error::missing_field("rewind_folder_target_ts_ms"))?, }; Ok(Some(result)) } @@ -79247,34 +101140,34 @@ impl PaperPublishedLinkViewDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("event_uuid", &self.event_uuid)?; + s.serialize_field("rewind_folder_target_ts_ms", &self.rewind_folder_target_ts_ms)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for PaperPublishedLinkViewDetails { +impl<'de> ::serde::de::Deserialize<'de> for RewindFolderDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = PaperPublishedLinkViewDetails; + type Value = RewindFolderDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a PaperPublishedLinkViewDetails struct") + f.write_str("a RewindFolderDetails struct") } fn visit_map>(self, map: V) -> Result { - PaperPublishedLinkViewDetails::internal_deserialize(map) + RewindFolderDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("PaperPublishedLinkViewDetails", PAPER_PUBLISHED_LINK_VIEW_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("RewindFolderDetails", REWIND_FOLDER_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for PaperPublishedLinkViewDetails { +impl ::serde::ser::Serialize for RewindFolderDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("PaperPublishedLinkViewDetails", 1)?; + let mut s = serializer.serialize_struct("RewindFolderDetails", 1)?; self.internal_serialize::(&mut s)?; s.end() } @@ -79282,30 +101175,30 @@ impl ::serde::ser::Serialize for PaperPublishedLinkViewDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct PaperPublishedLinkViewType { +pub struct RewindFolderType { pub description: String, } -impl PaperPublishedLinkViewType { +impl RewindFolderType { pub fn new(description: String) -> Self { - PaperPublishedLinkViewType { + RewindFolderType { description, } } } -const PAPER_PUBLISHED_LINK_VIEW_TYPE_FIELDS: &[&str] = &["description"]; -impl PaperPublishedLinkViewType { +const REWIND_FOLDER_TYPE_FIELDS: &[&str] = &["description"]; +impl RewindFolderType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -79326,7 +101219,7 @@ impl PaperPublishedLinkViewType { if optional && nothing { return Ok(None); } - let result = PaperPublishedLinkViewType { + let result = RewindFolderType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -79342,56 +101235,54 @@ impl PaperPublishedLinkViewType { } } -impl<'de> ::serde::de::Deserialize<'de> for PaperPublishedLinkViewType { +impl<'de> ::serde::de::Deserialize<'de> for RewindFolderType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = PaperPublishedLinkViewType; + type Value = RewindFolderType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a PaperPublishedLinkViewType struct") + f.write_str("a RewindFolderType struct") } fn visit_map>(self, map: V) -> Result { - PaperPublishedLinkViewType::internal_deserialize(map) + RewindFolderType::internal_deserialize(map) } } - deserializer.deserialize_struct("PaperPublishedLinkViewType", PAPER_PUBLISHED_LINK_VIEW_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("RewindFolderType", REWIND_FOLDER_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for PaperPublishedLinkViewType { +impl ::serde::ser::Serialize for RewindFolderType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("PaperPublishedLinkViewType", 1)?; + let mut s = serializer.serialize_struct("RewindFolderType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// A user or group +/// Policy for controlling whether team members can rewind #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // variants may be added in the future -pub enum ParticipantLogInfo { - /// Group details. - Group(GroupLogInfo), - /// A user with a Dropbox account. - User(UserLogInfo), +pub enum RewindPolicy { + AdminsOnly, + Everyone, /// Catch-all used for unrecognized values returned from the server. Encountering this value /// typically indicates that this SDK version is out of date. Other, } -impl<'de> ::serde::de::Deserialize<'de> for ParticipantLogInfo { +impl<'de> ::serde::de::Deserialize<'de> for RewindPolicy { fn deserialize>(deserializer: D) -> Result { // union deserializer use serde::de::{self, MapAccess, Visitor}; struct EnumVisitor; impl<'de> Visitor<'de> for EnumVisitor { - type Value = ParticipantLogInfo; + type Value = RewindPolicy; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a ParticipantLogInfo structure") + f.write_str("a RewindPolicy structure") } fn visit_map>(self, mut map: V) -> Result { let tag: &str = match map.next_key()? { @@ -79399,193 +101290,174 @@ impl<'de> ::serde::de::Deserialize<'de> for ParticipantLogInfo { _ => return Err(de::Error::missing_field(".tag")) }; let value = match tag { - "group" => ParticipantLogInfo::Group(GroupLogInfo::internal_deserialize(&mut map)?), - "user" => { - match map.next_key()? { - Some("user") => ParticipantLogInfo::User(map.next_value()?), - None => return Err(de::Error::missing_field("user")), - _ => return Err(de::Error::unknown_field(tag, VARIANTS)) - } - } - _ => ParticipantLogInfo::Other, + "admins_only" => RewindPolicy::AdminsOnly, + "everyone" => RewindPolicy::Everyone, + _ => RewindPolicy::Other, }; crate::eat_json_fields(&mut map)?; Ok(value) } } - const VARIANTS: &[&str] = &["group", - "user", + const VARIANTS: &[&str] = &["admins_only", + "everyone", "other"]; - deserializer.deserialize_struct("ParticipantLogInfo", VARIANTS, EnumVisitor) + deserializer.deserialize_struct("RewindPolicy", VARIANTS, EnumVisitor) } } -impl ::serde::ser::Serialize for ParticipantLogInfo { +impl ::serde::ser::Serialize for RewindPolicy { fn serialize(&self, serializer: S) -> Result { // union serializer use serde::ser::SerializeStruct; match self { - ParticipantLogInfo::Group(x) => { - // struct - let mut s = serializer.serialize_struct("ParticipantLogInfo", 4)?; - s.serialize_field(".tag", "group")?; - x.internal_serialize::(&mut s)?; + RewindPolicy::AdminsOnly => { + // unit + let mut s = serializer.serialize_struct("RewindPolicy", 1)?; + s.serialize_field(".tag", "admins_only")?; s.end() } - ParticipantLogInfo::User(x) => { - // union or polymporphic struct - let mut s = serializer.serialize_struct("ParticipantLogInfo", 2)?; - s.serialize_field(".tag", "user")?; - s.serialize_field("user", x)?; + RewindPolicy::Everyone => { + // unit + let mut s = serializer.serialize_struct("RewindPolicy", 1)?; + s.serialize_field(".tag", "everyone")?; s.end() } - ParticipantLogInfo::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) + RewindPolicy::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) } } } +/// Changed Rewind policy for team. #[derive(Debug, Clone, PartialEq, Eq)] -#[non_exhaustive] // variants may be added in the future -pub enum PassPolicy { - Allow, - Disabled, - Enabled, - /// Catch-all used for unrecognized values returned from the server. Encountering this value - /// typically indicates that this SDK version is out of date. - Other, +#[non_exhaustive] // structs may have more fields added in the future. +pub struct RewindPolicyChangedDetails { + /// New Dropbox Rewind policy. + pub new_value: RewindPolicy, + /// Previous Dropbox Rewind policy. + pub previous_value: RewindPolicy, } -impl<'de> ::serde::de::Deserialize<'de> for PassPolicy { - fn deserialize>(deserializer: D) -> Result { - // union deserializer - use serde::de::{self, MapAccess, Visitor}; - struct EnumVisitor; - impl<'de> Visitor<'de> for EnumVisitor { - type Value = PassPolicy; - fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a PassPolicy structure") - } - fn visit_map>(self, mut map: V) -> Result { - let tag: &str = match map.next_key()? { - Some(".tag") => map.next_value()?, - _ => return Err(de::Error::missing_field(".tag")) - }; - let value = match tag { - "allow" => PassPolicy::Allow, - "disabled" => PassPolicy::Disabled, - "enabled" => PassPolicy::Enabled, - _ => PassPolicy::Other, - }; - crate::eat_json_fields(&mut map)?; - Ok(value) - } +impl RewindPolicyChangedDetails { + pub fn new(new_value: RewindPolicy, previous_value: RewindPolicy) -> Self { + RewindPolicyChangedDetails { + new_value, + previous_value, } - const VARIANTS: &[&str] = &["allow", - "disabled", - "enabled", - "other"]; - deserializer.deserialize_struct("PassPolicy", VARIANTS, EnumVisitor) } } -impl ::serde::ser::Serialize for PassPolicy { - fn serialize(&self, serializer: S) -> Result { - // union serializer - use serde::ser::SerializeStruct; - match self { - PassPolicy::Allow => { - // unit - let mut s = serializer.serialize_struct("PassPolicy", 1)?; - s.serialize_field(".tag", "allow")?; - s.end() - } - PassPolicy::Disabled => { - // unit - let mut s = serializer.serialize_struct("PassPolicy", 1)?; - s.serialize_field(".tag", "disabled")?; - s.end() - } - PassPolicy::Enabled => { - // unit - let mut s = serializer.serialize_struct("PassPolicy", 1)?; - s.serialize_field(".tag", "enabled")?; - s.end() +const REWIND_POLICY_CHANGED_DETAILS_FIELDS: &[&str] = &["new_value", + "previous_value"]; +impl RewindPolicyChangedDetails { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_new_value = None; + let mut field_previous_value = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "new_value" => { + if field_new_value.is_some() { + return Err(::serde::de::Error::duplicate_field("new_value")); + } + field_new_value = Some(map.next_value()?); + } + "previous_value" => { + if field_previous_value.is_some() { + return Err(::serde::de::Error::duplicate_field("previous_value")); + } + field_previous_value = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } } - PassPolicy::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) } + if optional && nothing { + return Ok(None); + } + let result = RewindPolicyChangedDetails { + new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, + previous_value: field_previous_value.ok_or_else(|| ::serde::de::Error::missing_field("previous_value"))?, + }; + Ok(Some(result)) } -} - -/// Changed password. -#[derive(Debug, Clone, PartialEq, Eq, Default)] -#[non_exhaustive] // structs may have more fields added in the future. -pub struct PasswordChangeDetails { -} -const PASSWORD_CHANGE_DETAILS_FIELDS: &[&str] = &[]; -impl PasswordChangeDetails { - // no _opt deserializer - pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( - mut map: V, - ) -> Result { - // ignore any fields found; none are presently recognized - crate::eat_json_fields(&mut map)?; - Ok(PasswordChangeDetails {}) + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("new_value", &self.new_value)?; + s.serialize_field("previous_value", &self.previous_value)?; + Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for PasswordChangeDetails { +impl<'de> ::serde::de::Deserialize<'de> for RewindPolicyChangedDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = PasswordChangeDetails; + type Value = RewindPolicyChangedDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a PasswordChangeDetails struct") + f.write_str("a RewindPolicyChangedDetails struct") } fn visit_map>(self, map: V) -> Result { - PasswordChangeDetails::internal_deserialize(map) + RewindPolicyChangedDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("PasswordChangeDetails", PASSWORD_CHANGE_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("RewindPolicyChangedDetails", REWIND_POLICY_CHANGED_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for PasswordChangeDetails { +impl ::serde::ser::Serialize for RewindPolicyChangedDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - serializer.serialize_struct("PasswordChangeDetails", 0)?.end() + let mut s = serializer.serialize_struct("RewindPolicyChangedDetails", 2)?; + self.internal_serialize::(&mut s)?; + s.end() } } #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct PasswordChangeType { +pub struct RewindPolicyChangedType { pub description: String, } -impl PasswordChangeType { +impl RewindPolicyChangedType { pub fn new(description: String) -> Self { - PasswordChangeType { + RewindPolicyChangedType { description, } } } -const PASSWORD_CHANGE_TYPE_FIELDS: &[&str] = &["description"]; -impl PasswordChangeType { +const REWIND_POLICY_CHANGED_TYPE_FIELDS: &[&str] = &["description"]; +impl RewindPolicyChangedType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -79606,7 +101478,7 @@ impl PasswordChangeType { if optional && nothing { return Ok(None); } - let result = PasswordChangeType { + let result = RewindPolicyChangedType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -79622,104 +101494,178 @@ impl PasswordChangeType { } } -impl<'de> ::serde::de::Deserialize<'de> for PasswordChangeType { +impl<'de> ::serde::de::Deserialize<'de> for RewindPolicyChangedType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = PasswordChangeType; + type Value = RewindPolicyChangedType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a PasswordChangeType struct") + f.write_str("a RewindPolicyChangedType struct") } fn visit_map>(self, map: V) -> Result { - PasswordChangeType::internal_deserialize(map) + RewindPolicyChangedType::internal_deserialize(map) } } - deserializer.deserialize_struct("PasswordChangeType", PASSWORD_CHANGE_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("RewindPolicyChangedType", REWIND_POLICY_CHANGED_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for PasswordChangeType { +impl ::serde::ser::Serialize for RewindPolicyChangedType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("PasswordChangeType", 1)?; + let mut s = serializer.serialize_struct("RewindPolicyChangedType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Reset all team member passwords. -#[derive(Debug, Clone, PartialEq, Eq, Default)] +/// RISC security event received from external provider. +#[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct PasswordResetAllDetails { +pub struct RiscSecurityEventDetails { + /// RISC event type (e.g., account-disabled, token-revoked). + pub event_type: String, + /// Reason for the RISC event. + pub reason: String, + /// Identity provider issuer (e.g., https://accounts.google.com). + pub issuer: String, } -const PASSWORD_RESET_ALL_DETAILS_FIELDS: &[&str] = &[]; -impl PasswordResetAllDetails { - // no _opt deserializer +impl RiscSecurityEventDetails { + pub fn new(event_type: String, reason: String, issuer: String) -> Self { + RiscSecurityEventDetails { + event_type, + reason, + issuer, + } + } +} + +const RISC_SECURITY_EVENT_DETAILS_FIELDS: &[&str] = &["event_type", + "reason", + "issuer"]; +impl RiscSecurityEventDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - ) -> Result { - // ignore any fields found; none are presently recognized - crate::eat_json_fields(&mut map)?; - Ok(PasswordResetAllDetails {}) + optional: bool, + ) -> Result, V::Error> { + let mut field_event_type = None; + let mut field_reason = None; + let mut field_issuer = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "event_type" => { + if field_event_type.is_some() { + return Err(::serde::de::Error::duplicate_field("event_type")); + } + field_event_type = Some(map.next_value()?); + } + "reason" => { + if field_reason.is_some() { + return Err(::serde::de::Error::duplicate_field("reason")); + } + field_reason = Some(map.next_value()?); + } + "issuer" => { + if field_issuer.is_some() { + return Err(::serde::de::Error::duplicate_field("issuer")); + } + field_issuer = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } + } + } + if optional && nothing { + return Ok(None); + } + let result = RiscSecurityEventDetails { + event_type: field_event_type.ok_or_else(|| ::serde::de::Error::missing_field("event_type"))?, + reason: field_reason.ok_or_else(|| ::serde::de::Error::missing_field("reason"))?, + issuer: field_issuer.ok_or_else(|| ::serde::de::Error::missing_field("issuer"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("event_type", &self.event_type)?; + s.serialize_field("reason", &self.reason)?; + s.serialize_field("issuer", &self.issuer)?; + Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for PasswordResetAllDetails { +impl<'de> ::serde::de::Deserialize<'de> for RiscSecurityEventDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = PasswordResetAllDetails; + type Value = RiscSecurityEventDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a PasswordResetAllDetails struct") + f.write_str("a RiscSecurityEventDetails struct") } fn visit_map>(self, map: V) -> Result { - PasswordResetAllDetails::internal_deserialize(map) + RiscSecurityEventDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("PasswordResetAllDetails", PASSWORD_RESET_ALL_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("RiscSecurityEventDetails", RISC_SECURITY_EVENT_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for PasswordResetAllDetails { +impl ::serde::ser::Serialize for RiscSecurityEventDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - serializer.serialize_struct("PasswordResetAllDetails", 0)?.end() + let mut s = serializer.serialize_struct("RiscSecurityEventDetails", 3)?; + self.internal_serialize::(&mut s)?; + s.end() } } #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct PasswordResetAllType { +pub struct RiscSecurityEventType { pub description: String, } -impl PasswordResetAllType { +impl RiscSecurityEventType { pub fn new(description: String) -> Self { - PasswordResetAllType { + RiscSecurityEventType { description, } } } -const PASSWORD_RESET_ALL_TYPE_FIELDS: &[&str] = &["description"]; -impl PasswordResetAllType { +const RISC_SECURITY_EVENT_TYPE_FIELDS: &[&str] = &["description"]; +impl RiscSecurityEventType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -79740,7 +101686,7 @@ impl PasswordResetAllType { if optional && nothing { return Ok(None); } - let result = PasswordResetAllType { + let result = RiscSecurityEventType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -79756,104 +101702,152 @@ impl PasswordResetAllType { } } -impl<'de> ::serde::de::Deserialize<'de> for PasswordResetAllType { +impl<'de> ::serde::de::Deserialize<'de> for RiscSecurityEventType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = PasswordResetAllType; + type Value = RiscSecurityEventType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a PasswordResetAllType struct") + f.write_str("a RiscSecurityEventType struct") } fn visit_map>(self, map: V) -> Result { - PasswordResetAllType::internal_deserialize(map) + RiscSecurityEventType::internal_deserialize(map) } } - deserializer.deserialize_struct("PasswordResetAllType", PASSWORD_RESET_ALL_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("RiscSecurityEventType", RISC_SECURITY_EVENT_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for PasswordResetAllType { +impl ::serde::ser::Serialize for RiscSecurityEventType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("PasswordResetAllType", 1)?; + let mut s = serializer.serialize_struct("RiscSecurityEventType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Reset password. -#[derive(Debug, Clone, PartialEq, Eq, Default)] +/// Deleted secondary email. +#[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct PasswordResetDetails { +pub struct SecondaryEmailDeletedDetails { + /// Deleted secondary email. + pub secondary_email: EmailAddress, } -const PASSWORD_RESET_DETAILS_FIELDS: &[&str] = &[]; -impl PasswordResetDetails { - // no _opt deserializer +impl SecondaryEmailDeletedDetails { + pub fn new(secondary_email: EmailAddress) -> Self { + SecondaryEmailDeletedDetails { + secondary_email, + } + } +} + +const SECONDARY_EMAIL_DELETED_DETAILS_FIELDS: &[&str] = &["secondary_email"]; +impl SecondaryEmailDeletedDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - ) -> Result { - // ignore any fields found; none are presently recognized - crate::eat_json_fields(&mut map)?; - Ok(PasswordResetDetails {}) + optional: bool, + ) -> Result, V::Error> { + let mut field_secondary_email = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "secondary_email" => { + if field_secondary_email.is_some() { + return Err(::serde::de::Error::duplicate_field("secondary_email")); + } + field_secondary_email = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } + } + } + if optional && nothing { + return Ok(None); + } + let result = SecondaryEmailDeletedDetails { + secondary_email: field_secondary_email.ok_or_else(|| ::serde::de::Error::missing_field("secondary_email"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("secondary_email", &self.secondary_email)?; + Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for PasswordResetDetails { +impl<'de> ::serde::de::Deserialize<'de> for SecondaryEmailDeletedDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = PasswordResetDetails; + type Value = SecondaryEmailDeletedDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a PasswordResetDetails struct") + f.write_str("a SecondaryEmailDeletedDetails struct") } fn visit_map>(self, map: V) -> Result { - PasswordResetDetails::internal_deserialize(map) + SecondaryEmailDeletedDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("PasswordResetDetails", PASSWORD_RESET_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("SecondaryEmailDeletedDetails", SECONDARY_EMAIL_DELETED_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for PasswordResetDetails { +impl ::serde::ser::Serialize for SecondaryEmailDeletedDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - serializer.serialize_struct("PasswordResetDetails", 0)?.end() + let mut s = serializer.serialize_struct("SecondaryEmailDeletedDetails", 1)?; + self.internal_serialize::(&mut s)?; + s.end() } } #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct PasswordResetType { +pub struct SecondaryEmailDeletedType { pub description: String, } -impl PasswordResetType { +impl SecondaryEmailDeletedType { pub fn new(description: String) -> Self { - PasswordResetType { + SecondaryEmailDeletedType { description, } } } -const PASSWORD_RESET_TYPE_FIELDS: &[&str] = &["description"]; -impl PasswordResetType { +const SECONDARY_EMAIL_DELETED_TYPE_FIELDS: &[&str] = &["description"]; +impl SecondaryEmailDeletedType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -79874,7 +101868,7 @@ impl PasswordResetType { if optional && nothing { return Ok(None); } - let result = PasswordResetType { + let result = SecondaryEmailDeletedType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -79890,86 +101884,72 @@ impl PasswordResetType { } } -impl<'de> ::serde::de::Deserialize<'de> for PasswordResetType { +impl<'de> ::serde::de::Deserialize<'de> for SecondaryEmailDeletedType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = PasswordResetType; + type Value = SecondaryEmailDeletedType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a PasswordResetType struct") + f.write_str("a SecondaryEmailDeletedType struct") } fn visit_map>(self, map: V) -> Result { - PasswordResetType::internal_deserialize(map) + SecondaryEmailDeletedType::internal_deserialize(map) } } - deserializer.deserialize_struct("PasswordResetType", PASSWORD_RESET_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("SecondaryEmailDeletedType", SECONDARY_EMAIL_DELETED_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for PasswordResetType { +impl ::serde::ser::Serialize for SecondaryEmailDeletedType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("PasswordResetType", 1)?; + let mut s = serializer.serialize_struct("SecondaryEmailDeletedType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Changed team password strength requirements. +/// Verified secondary email. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct PasswordStrengthRequirementsChangePolicyDetails { - /// Old password strength policy. - pub previous_value: crate::types::team_policies::PasswordStrengthPolicy, - /// New password strength policy. - pub new_value: crate::types::team_policies::PasswordStrengthPolicy, +pub struct SecondaryEmailVerifiedDetails { + /// Verified secondary email. + pub secondary_email: EmailAddress, } -impl PasswordStrengthRequirementsChangePolicyDetails { - pub fn new( - previous_value: crate::types::team_policies::PasswordStrengthPolicy, - new_value: crate::types::team_policies::PasswordStrengthPolicy, - ) -> Self { - PasswordStrengthRequirementsChangePolicyDetails { - previous_value, - new_value, +impl SecondaryEmailVerifiedDetails { + pub fn new(secondary_email: EmailAddress) -> Self { + SecondaryEmailVerifiedDetails { + secondary_email, } } } -const PASSWORD_STRENGTH_REQUIREMENTS_CHANGE_POLICY_DETAILS_FIELDS: &[&str] = &["previous_value", - "new_value"]; -impl PasswordStrengthRequirementsChangePolicyDetails { +const SECONDARY_EMAIL_VERIFIED_DETAILS_FIELDS: &[&str] = &["secondary_email"]; +impl SecondaryEmailVerifiedDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_previous_value = None; - let mut field_new_value = None; + ) -> Result, V::Error> { + let mut field_secondary_email = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "previous_value" => { - if field_previous_value.is_some() { - return Err(::serde::de::Error::duplicate_field("previous_value")); - } - field_previous_value = Some(map.next_value()?); - } - "new_value" => { - if field_new_value.is_some() { - return Err(::serde::de::Error::duplicate_field("new_value")); + "secondary_email" => { + if field_secondary_email.is_some() { + return Err(::serde::de::Error::duplicate_field("secondary_email")); } - field_new_value = Some(map.next_value()?); + field_secondary_email = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -79980,9 +101960,8 @@ impl PasswordStrengthRequirementsChangePolicyDetails { if optional && nothing { return Ok(None); } - let result = PasswordStrengthRequirementsChangePolicyDetails { - previous_value: field_previous_value.ok_or_else(|| ::serde::de::Error::missing_field("previous_value"))?, - new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, + let result = SecondaryEmailVerifiedDetails { + secondary_email: field_secondary_email.ok_or_else(|| ::serde::de::Error::missing_field("secondary_email"))?, }; Ok(Some(result)) } @@ -79992,35 +101971,34 @@ impl PasswordStrengthRequirementsChangePolicyDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("previous_value", &self.previous_value)?; - s.serialize_field("new_value", &self.new_value)?; + s.serialize_field("secondary_email", &self.secondary_email)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for PasswordStrengthRequirementsChangePolicyDetails { +impl<'de> ::serde::de::Deserialize<'de> for SecondaryEmailVerifiedDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = PasswordStrengthRequirementsChangePolicyDetails; + type Value = SecondaryEmailVerifiedDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a PasswordStrengthRequirementsChangePolicyDetails struct") + f.write_str("a SecondaryEmailVerifiedDetails struct") } fn visit_map>(self, map: V) -> Result { - PasswordStrengthRequirementsChangePolicyDetails::internal_deserialize(map) + SecondaryEmailVerifiedDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("PasswordStrengthRequirementsChangePolicyDetails", PASSWORD_STRENGTH_REQUIREMENTS_CHANGE_POLICY_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("SecondaryEmailVerifiedDetails", SECONDARY_EMAIL_VERIFIED_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for PasswordStrengthRequirementsChangePolicyDetails { +impl ::serde::ser::Serialize for SecondaryEmailVerifiedDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("PasswordStrengthRequirementsChangePolicyDetails", 2)?; + let mut s = serializer.serialize_struct("SecondaryEmailVerifiedDetails", 1)?; self.internal_serialize::(&mut s)?; s.end() } @@ -80028,30 +102006,30 @@ impl ::serde::ser::Serialize for PasswordStrengthRequirementsChangePolicyDetails #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct PasswordStrengthRequirementsChangePolicyType { +pub struct SecondaryEmailVerifiedType { pub description: String, } -impl PasswordStrengthRequirementsChangePolicyType { +impl SecondaryEmailVerifiedType { pub fn new(description: String) -> Self { - PasswordStrengthRequirementsChangePolicyType { + SecondaryEmailVerifiedType { description, } } } -const PASSWORD_STRENGTH_REQUIREMENTS_CHANGE_POLICY_TYPE_FIELDS: &[&str] = &["description"]; -impl PasswordStrengthRequirementsChangePolicyType { +const SECONDARY_EMAIL_VERIFIED_TYPE_FIELDS: &[&str] = &["description"]; +impl SecondaryEmailVerifiedType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -80061,7 +102039,173 @@ impl PasswordStrengthRequirementsChangePolicyType { if field_description.is_some() { return Err(::serde::de::Error::duplicate_field("description")); } - field_description = Some(map.next_value()?); + field_description = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } + } + } + if optional && nothing { + return Ok(None); + } + let result = SecondaryEmailVerifiedType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("description", &self.description)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for SecondaryEmailVerifiedType { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = SecondaryEmailVerifiedType; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a SecondaryEmailVerifiedType struct") + } + fn visit_map>(self, map: V) -> Result { + SecondaryEmailVerifiedType::internal_deserialize(map) + } + } + deserializer.deserialize_struct("SecondaryEmailVerifiedType", SECONDARY_EMAIL_VERIFIED_TYPE_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for SecondaryEmailVerifiedType { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("SecondaryEmailVerifiedType", 1)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // variants may be added in the future +pub enum SecondaryMailsPolicy { + Disabled, + Enabled, + /// Catch-all used for unrecognized values returned from the server. Encountering this value + /// typically indicates that this SDK version is out of date. + Other, +} + +impl<'de> ::serde::de::Deserialize<'de> for SecondaryMailsPolicy { + fn deserialize>(deserializer: D) -> Result { + // union deserializer + use serde::de::{self, MapAccess, Visitor}; + struct EnumVisitor; + impl<'de> Visitor<'de> for EnumVisitor { + type Value = SecondaryMailsPolicy; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a SecondaryMailsPolicy structure") + } + fn visit_map>(self, mut map: V) -> Result { + let tag: &str = match map.next_key()? { + Some(".tag") => map.next_value()?, + _ => return Err(de::Error::missing_field(".tag")) + }; + let value = match tag { + "disabled" => SecondaryMailsPolicy::Disabled, + "enabled" => SecondaryMailsPolicy::Enabled, + _ => SecondaryMailsPolicy::Other, + }; + crate::eat_json_fields(&mut map)?; + Ok(value) + } + } + const VARIANTS: &[&str] = &["disabled", + "enabled", + "other"]; + deserializer.deserialize_struct("SecondaryMailsPolicy", VARIANTS, EnumVisitor) + } +} + +impl ::serde::ser::Serialize for SecondaryMailsPolicy { + fn serialize(&self, serializer: S) -> Result { + // union serializer + use serde::ser::SerializeStruct; + match self { + SecondaryMailsPolicy::Disabled => { + // unit + let mut s = serializer.serialize_struct("SecondaryMailsPolicy", 1)?; + s.serialize_field(".tag", "disabled")?; + s.end() + } + SecondaryMailsPolicy::Enabled => { + // unit + let mut s = serializer.serialize_struct("SecondaryMailsPolicy", 1)?; + s.serialize_field(".tag", "enabled")?; + s.end() + } + SecondaryMailsPolicy::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) + } + } +} + +/// Secondary mails policy changed. +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct SecondaryMailsPolicyChangedDetails { + /// Previous secondary mails policy. + pub previous_value: SecondaryMailsPolicy, + /// New secondary mails policy. + pub new_value: SecondaryMailsPolicy, +} + +impl SecondaryMailsPolicyChangedDetails { + pub fn new(previous_value: SecondaryMailsPolicy, new_value: SecondaryMailsPolicy) -> Self { + SecondaryMailsPolicyChangedDetails { + previous_value, + new_value, + } + } +} + +const SECONDARY_MAILS_POLICY_CHANGED_DETAILS_FIELDS: &[&str] = &["previous_value", + "new_value"]; +impl SecondaryMailsPolicyChangedDetails { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_previous_value = None; + let mut field_new_value = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "previous_value" => { + if field_previous_value.is_some() { + return Err(::serde::de::Error::duplicate_field("previous_value")); + } + field_previous_value = Some(map.next_value()?); + } + "new_value" => { + if field_new_value.is_some() { + return Err(::serde::de::Error::duplicate_field("new_value")); + } + field_new_value = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -80072,8 +102216,9 @@ impl PasswordStrengthRequirementsChangePolicyType { if optional && nothing { return Ok(None); } - let result = PasswordStrengthRequirementsChangePolicyType { - description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + let result = SecondaryMailsPolicyChangedDetails { + previous_value: field_previous_value.ok_or_else(|| ::serde::de::Error::missing_field("previous_value"))?, + new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, }; Ok(Some(result)) } @@ -80083,93 +102228,76 @@ impl PasswordStrengthRequirementsChangePolicyType { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("description", &self.description)?; + s.serialize_field("previous_value", &self.previous_value)?; + s.serialize_field("new_value", &self.new_value)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for PasswordStrengthRequirementsChangePolicyType { +impl<'de> ::serde::de::Deserialize<'de> for SecondaryMailsPolicyChangedDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = PasswordStrengthRequirementsChangePolicyType; + type Value = SecondaryMailsPolicyChangedDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a PasswordStrengthRequirementsChangePolicyType struct") + f.write_str("a SecondaryMailsPolicyChangedDetails struct") } fn visit_map>(self, map: V) -> Result { - PasswordStrengthRequirementsChangePolicyType::internal_deserialize(map) + SecondaryMailsPolicyChangedDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("PasswordStrengthRequirementsChangePolicyType", PASSWORD_STRENGTH_REQUIREMENTS_CHANGE_POLICY_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("SecondaryMailsPolicyChangedDetails", SECONDARY_MAILS_POLICY_CHANGED_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for PasswordStrengthRequirementsChangePolicyType { +impl ::serde::ser::Serialize for SecondaryMailsPolicyChangedDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("PasswordStrengthRequirementsChangePolicyType", 1)?; + let mut s = serializer.serialize_struct("SecondaryMailsPolicyChangedDetails", 2)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Path's details. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct PathLogInfo { - /// Path relative to the namespace containing the content. - pub namespace_relative: NamespaceRelativePathLogInfo, - /// Fully qualified path relative to event's context. - pub contextual: Option, +pub struct SecondaryMailsPolicyChangedType { + pub description: String, } -impl PathLogInfo { - pub fn new(namespace_relative: NamespaceRelativePathLogInfo) -> Self { - PathLogInfo { - namespace_relative, - contextual: None, +impl SecondaryMailsPolicyChangedType { + pub fn new(description: String) -> Self { + SecondaryMailsPolicyChangedType { + description, } } - - pub fn with_contextual(mut self, value: FilePath) -> Self { - self.contextual = Some(value); - self - } } -const PATH_LOG_INFO_FIELDS: &[&str] = &["namespace_relative", - "contextual"]; -impl PathLogInfo { +const SECONDARY_MAILS_POLICY_CHANGED_TYPE_FIELDS: &[&str] = &["description"]; +impl SecondaryMailsPolicyChangedType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_namespace_relative = None; - let mut field_contextual = None; + ) -> Result, V::Error> { + let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "namespace_relative" => { - if field_namespace_relative.is_some() { - return Err(::serde::de::Error::duplicate_field("namespace_relative")); - } - field_namespace_relative = Some(map.next_value()?); - } - "contextual" => { - if field_contextual.is_some() { - return Err(::serde::de::Error::duplicate_field("contextual")); + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); } - field_contextual = Some(map.next_value()?); + field_description = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -80180,9 +102308,8 @@ impl PathLogInfo { if optional && nothing { return Ok(None); } - let result = PathLogInfo { - namespace_relative: field_namespace_relative.ok_or_else(|| ::serde::de::Error::missing_field("namespace_relative"))?, - contextual: field_contextual.and_then(Option::flatten), + let result = SecondaryMailsPolicyChangedType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) } @@ -80192,80 +102319,88 @@ impl PathLogInfo { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("namespace_relative", &self.namespace_relative)?; - if let Some(val) = &self.contextual { - s.serialize_field("contextual", val)?; - } + s.serialize_field("description", &self.description)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for PathLogInfo { +impl<'de> ::serde::de::Deserialize<'de> for SecondaryMailsPolicyChangedType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = PathLogInfo; + type Value = SecondaryMailsPolicyChangedType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a PathLogInfo struct") + f.write_str("a SecondaryMailsPolicyChangedType struct") } fn visit_map>(self, map: V) -> Result { - PathLogInfo::internal_deserialize(map) + SecondaryMailsPolicyChangedType::internal_deserialize(map) } } - deserializer.deserialize_struct("PathLogInfo", PATH_LOG_INFO_FIELDS, StructVisitor) + deserializer.deserialize_struct("SecondaryMailsPolicyChangedType", SECONDARY_MAILS_POLICY_CHANGED_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for PathLogInfo { +impl ::serde::ser::Serialize for SecondaryMailsPolicyChangedType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("PathLogInfo", 2)?; + let mut s = serializer.serialize_struct("SecondaryMailsPolicyChangedType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Added pending secondary email. +/// Team merge request acceptance details shown to the secondary team #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct PendingSecondaryEmailAddedDetails { - /// New pending secondary email. - pub secondary_email: EmailAddress, +pub struct SecondaryTeamRequestAcceptedDetails { + /// The primary team name. + pub primary_team: String, + /// The name of the secondary team admin who sent the request originally. + pub sent_by: String, } -impl PendingSecondaryEmailAddedDetails { - pub fn new(secondary_email: EmailAddress) -> Self { - PendingSecondaryEmailAddedDetails { - secondary_email, +impl SecondaryTeamRequestAcceptedDetails { + pub fn new(primary_team: String, sent_by: String) -> Self { + SecondaryTeamRequestAcceptedDetails { + primary_team, + sent_by, } } } -const PENDING_SECONDARY_EMAIL_ADDED_DETAILS_FIELDS: &[&str] = &["secondary_email"]; -impl PendingSecondaryEmailAddedDetails { +const SECONDARY_TEAM_REQUEST_ACCEPTED_DETAILS_FIELDS: &[&str] = &["primary_team", + "sent_by"]; +impl SecondaryTeamRequestAcceptedDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_secondary_email = None; + ) -> Result, V::Error> { + let mut field_primary_team = None; + let mut field_sent_by = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "secondary_email" => { - if field_secondary_email.is_some() { - return Err(::serde::de::Error::duplicate_field("secondary_email")); + "primary_team" => { + if field_primary_team.is_some() { + return Err(::serde::de::Error::duplicate_field("primary_team")); } - field_secondary_email = Some(map.next_value()?); + field_primary_team = Some(map.next_value()?); + } + "sent_by" => { + if field_sent_by.is_some() { + return Err(::serde::de::Error::duplicate_field("sent_by")); + } + field_sent_by = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -80276,8 +102411,9 @@ impl PendingSecondaryEmailAddedDetails { if optional && nothing { return Ok(None); } - let result = PendingSecondaryEmailAddedDetails { - secondary_email: field_secondary_email.ok_or_else(|| ::serde::de::Error::missing_field("secondary_email"))?, + let result = SecondaryTeamRequestAcceptedDetails { + primary_team: field_primary_team.ok_or_else(|| ::serde::de::Error::missing_field("primary_team"))?, + sent_by: field_sent_by.ok_or_else(|| ::serde::de::Error::missing_field("sent_by"))?, }; Ok(Some(result)) } @@ -80287,75 +102423,89 @@ impl PendingSecondaryEmailAddedDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("secondary_email", &self.secondary_email)?; + s.serialize_field("primary_team", &self.primary_team)?; + s.serialize_field("sent_by", &self.sent_by)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for PendingSecondaryEmailAddedDetails { +impl<'de> ::serde::de::Deserialize<'de> for SecondaryTeamRequestAcceptedDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = PendingSecondaryEmailAddedDetails; + type Value = SecondaryTeamRequestAcceptedDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a PendingSecondaryEmailAddedDetails struct") + f.write_str("a SecondaryTeamRequestAcceptedDetails struct") } fn visit_map>(self, map: V) -> Result { - PendingSecondaryEmailAddedDetails::internal_deserialize(map) + SecondaryTeamRequestAcceptedDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("PendingSecondaryEmailAddedDetails", PENDING_SECONDARY_EMAIL_ADDED_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("SecondaryTeamRequestAcceptedDetails", SECONDARY_TEAM_REQUEST_ACCEPTED_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for PendingSecondaryEmailAddedDetails { +impl ::serde::ser::Serialize for SecondaryTeamRequestAcceptedDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("PendingSecondaryEmailAddedDetails", 1)?; + let mut s = serializer.serialize_struct("SecondaryTeamRequestAcceptedDetails", 2)?; self.internal_serialize::(&mut s)?; s.end() } } +/// Team merge request cancellation details shown to the secondary team #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct PendingSecondaryEmailAddedType { - pub description: String, +pub struct SecondaryTeamRequestCanceledDetails { + /// The email of the primary team admin that the request was sent to. + pub sent_to: String, + /// The name of the secondary team admin who sent the request originally. + pub sent_by: String, } -impl PendingSecondaryEmailAddedType { - pub fn new(description: String) -> Self { - PendingSecondaryEmailAddedType { - description, +impl SecondaryTeamRequestCanceledDetails { + pub fn new(sent_to: String, sent_by: String) -> Self { + SecondaryTeamRequestCanceledDetails { + sent_to, + sent_by, } } } -const PENDING_SECONDARY_EMAIL_ADDED_TYPE_FIELDS: &[&str] = &["description"]; -impl PendingSecondaryEmailAddedType { +const SECONDARY_TEAM_REQUEST_CANCELED_DETAILS_FIELDS: &[&str] = &["sent_to", + "sent_by"]; +impl SecondaryTeamRequestCanceledDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_description = None; + ) -> Result, V::Error> { + let mut field_sent_to = None; + let mut field_sent_by = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "description" => { - if field_description.is_some() { - return Err(::serde::de::Error::duplicate_field("description")); + "sent_to" => { + if field_sent_to.is_some() { + return Err(::serde::de::Error::duplicate_field("sent_to")); } - field_description = Some(map.next_value()?); + field_sent_to = Some(map.next_value()?); + } + "sent_by" => { + if field_sent_by.is_some() { + return Err(::serde::de::Error::duplicate_field("sent_by")); + } + field_sent_by = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -80366,8 +102516,9 @@ impl PendingSecondaryEmailAddedType { if optional && nothing { return Ok(None); } - let result = PendingSecondaryEmailAddedType { - description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + let result = SecondaryTeamRequestCanceledDetails { + sent_to: field_sent_to.ok_or_else(|| ::serde::de::Error::missing_field("sent_to"))?, + sent_by: field_sent_by.ok_or_else(|| ::serde::de::Error::missing_field("sent_by"))?, }; Ok(Some(result)) } @@ -80377,93 +102528,78 @@ impl PendingSecondaryEmailAddedType { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("description", &self.description)?; + s.serialize_field("sent_to", &self.sent_to)?; + s.serialize_field("sent_by", &self.sent_by)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for PendingSecondaryEmailAddedType { +impl<'de> ::serde::de::Deserialize<'de> for SecondaryTeamRequestCanceledDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = PendingSecondaryEmailAddedType; + type Value = SecondaryTeamRequestCanceledDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a PendingSecondaryEmailAddedType struct") + f.write_str("a SecondaryTeamRequestCanceledDetails struct") } fn visit_map>(self, map: V) -> Result { - PendingSecondaryEmailAddedType::internal_deserialize(map) + SecondaryTeamRequestCanceledDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("PendingSecondaryEmailAddedType", PENDING_SECONDARY_EMAIL_ADDED_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("SecondaryTeamRequestCanceledDetails", SECONDARY_TEAM_REQUEST_CANCELED_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for PendingSecondaryEmailAddedType { +impl ::serde::ser::Serialize for SecondaryTeamRequestCanceledDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("PendingSecondaryEmailAddedType", 1)?; + let mut s = serializer.serialize_struct("SecondaryTeamRequestCanceledDetails", 2)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Enabled/disabled ability of team members to permanently delete content. +/// Team merge request expiration details shown to the secondary team #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct PermanentDeleteChangePolicyDetails { - /// New permanent delete content policy. - pub new_value: ContentPermanentDeletePolicy, - /// Previous permanent delete content policy. Might be missing due to historical data gap. - pub previous_value: Option, +pub struct SecondaryTeamRequestExpiredDetails { + /// The email of the primary team admin the request was sent to. + pub sent_to: String, } -impl PermanentDeleteChangePolicyDetails { - pub fn new(new_value: ContentPermanentDeletePolicy) -> Self { - PermanentDeleteChangePolicyDetails { - new_value, - previous_value: None, +impl SecondaryTeamRequestExpiredDetails { + pub fn new(sent_to: String) -> Self { + SecondaryTeamRequestExpiredDetails { + sent_to, } } - - pub fn with_previous_value(mut self, value: ContentPermanentDeletePolicy) -> Self { - self.previous_value = Some(value); - self - } } -const PERMANENT_DELETE_CHANGE_POLICY_DETAILS_FIELDS: &[&str] = &["new_value", - "previous_value"]; -impl PermanentDeleteChangePolicyDetails { +const SECONDARY_TEAM_REQUEST_EXPIRED_DETAILS_FIELDS: &[&str] = &["sent_to"]; +impl SecondaryTeamRequestExpiredDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_new_value = None; - let mut field_previous_value = None; + ) -> Result, V::Error> { + let mut field_sent_to = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "new_value" => { - if field_new_value.is_some() { - return Err(::serde::de::Error::duplicate_field("new_value")); - } - field_new_value = Some(map.next_value()?); - } - "previous_value" => { - if field_previous_value.is_some() { - return Err(::serde::de::Error::duplicate_field("previous_value")); + "sent_to" => { + if field_sent_to.is_some() { + return Err(::serde::de::Error::duplicate_field("sent_to")); } - field_previous_value = Some(map.next_value()?); + field_sent_to = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -80474,9 +102610,8 @@ impl PermanentDeleteChangePolicyDetails { if optional && nothing { return Ok(None); } - let result = PermanentDeleteChangePolicyDetails { - new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, - previous_value: field_previous_value.and_then(Option::flatten), + let result = SecondaryTeamRequestExpiredDetails { + sent_to: field_sent_to.ok_or_else(|| ::serde::de::Error::missing_field("sent_to"))?, }; Ok(Some(result)) } @@ -80486,78 +102621,77 @@ impl PermanentDeleteChangePolicyDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("new_value", &self.new_value)?; - if let Some(val) = &self.previous_value { - s.serialize_field("previous_value", val)?; - } + s.serialize_field("sent_to", &self.sent_to)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for PermanentDeleteChangePolicyDetails { +impl<'de> ::serde::de::Deserialize<'de> for SecondaryTeamRequestExpiredDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = PermanentDeleteChangePolicyDetails; + type Value = SecondaryTeamRequestExpiredDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a PermanentDeleteChangePolicyDetails struct") + f.write_str("a SecondaryTeamRequestExpiredDetails struct") } fn visit_map>(self, map: V) -> Result { - PermanentDeleteChangePolicyDetails::internal_deserialize(map) + SecondaryTeamRequestExpiredDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("PermanentDeleteChangePolicyDetails", PERMANENT_DELETE_CHANGE_POLICY_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("SecondaryTeamRequestExpiredDetails", SECONDARY_TEAM_REQUEST_EXPIRED_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for PermanentDeleteChangePolicyDetails { +impl ::serde::ser::Serialize for SecondaryTeamRequestExpiredDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("PermanentDeleteChangePolicyDetails", 2)?; + let mut s = serializer.serialize_struct("SecondaryTeamRequestExpiredDetails", 1)?; self.internal_serialize::(&mut s)?; s.end() } } +/// Team merge request reminder details shown to the secondary team #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct PermanentDeleteChangePolicyType { - pub description: String, +pub struct SecondaryTeamRequestReminderDetails { + /// The email of the primary team admin the request was sent to. + pub sent_to: String, } -impl PermanentDeleteChangePolicyType { - pub fn new(description: String) -> Self { - PermanentDeleteChangePolicyType { - description, +impl SecondaryTeamRequestReminderDetails { + pub fn new(sent_to: String) -> Self { + SecondaryTeamRequestReminderDetails { + sent_to, } } } -const PERMANENT_DELETE_CHANGE_POLICY_TYPE_FIELDS: &[&str] = &["description"]; -impl PermanentDeleteChangePolicyType { +const SECONDARY_TEAM_REQUEST_REMINDER_DETAILS_FIELDS: &[&str] = &["sent_to"]; +impl SecondaryTeamRequestReminderDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_description = None; + ) -> Result, V::Error> { + let mut field_sent_to = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "description" => { - if field_description.is_some() { - return Err(::serde::de::Error::duplicate_field("description")); + "sent_to" => { + if field_sent_to.is_some() { + return Err(::serde::de::Error::duplicate_field("sent_to")); } - field_description = Some(map.next_value()?); + field_sent_to = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -80568,8 +102702,8 @@ impl PermanentDeleteChangePolicyType { if optional && nothing { return Ok(None); } - let result = PermanentDeleteChangePolicyType { - description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + let result = SecondaryTeamRequestReminderDetails { + sent_to: field_sent_to.ok_or_else(|| ::serde::de::Error::missing_field("sent_to"))?, }; Ok(Some(result)) } @@ -80579,250 +102713,119 @@ impl PermanentDeleteChangePolicyType { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("description", &self.description)?; + s.serialize_field("sent_to", &self.sent_to)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for PermanentDeleteChangePolicyType { +impl<'de> ::serde::de::Deserialize<'de> for SecondaryTeamRequestReminderDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = PermanentDeleteChangePolicyType; + type Value = SecondaryTeamRequestReminderDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a PermanentDeleteChangePolicyType struct") + f.write_str("a SecondaryTeamRequestReminderDetails struct") } fn visit_map>(self, map: V) -> Result { - PermanentDeleteChangePolicyType::internal_deserialize(map) + SecondaryTeamRequestReminderDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("PermanentDeleteChangePolicyType", PERMANENT_DELETE_CHANGE_POLICY_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("SecondaryTeamRequestReminderDetails", SECONDARY_TEAM_REQUEST_REMINDER_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for PermanentDeleteChangePolicyType { +impl ::serde::ser::Serialize for SecondaryTeamRequestReminderDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("PermanentDeleteChangePolicyType", 1)?; + let mut s = serializer.serialize_struct("SecondaryTeamRequestReminderDetails", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -#[derive(Debug, Clone, PartialEq, Eq)] -#[non_exhaustive] // variants may be added in the future -pub enum PlacementRestriction { - AustraliaOnly, - EuropeOnly, - JapanOnly, - None, - UkOnly, - UsS3Only, - /// Catch-all used for unrecognized values returned from the server. Encountering this value - /// typically indicates that this SDK version is out of date. - Other, -} - -impl<'de> ::serde::de::Deserialize<'de> for PlacementRestriction { - fn deserialize>(deserializer: D) -> Result { - // union deserializer - use serde::de::{self, MapAccess, Visitor}; - struct EnumVisitor; - impl<'de> Visitor<'de> for EnumVisitor { - type Value = PlacementRestriction; - fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a PlacementRestriction structure") - } - fn visit_map>(self, mut map: V) -> Result { - let tag: &str = match map.next_key()? { - Some(".tag") => map.next_value()?, - _ => return Err(de::Error::missing_field(".tag")) - }; - let value = match tag { - "australia_only" => PlacementRestriction::AustraliaOnly, - "europe_only" => PlacementRestriction::EuropeOnly, - "japan_only" => PlacementRestriction::JapanOnly, - "none" => PlacementRestriction::None, - "uk_only" => PlacementRestriction::UkOnly, - "us_s3_only" => PlacementRestriction::UsS3Only, - _ => PlacementRestriction::Other, - }; - crate::eat_json_fields(&mut map)?; - Ok(value) - } - } - const VARIANTS: &[&str] = &["australia_only", - "europe_only", - "japan_only", - "none", - "uk_only", - "us_s3_only", - "other"]; - deserializer.deserialize_struct("PlacementRestriction", VARIANTS, EnumVisitor) - } +/// File added to Send and Track. +#[derive(Debug, Clone, PartialEq, Eq, Default)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct SendAndTrackFileAddedDetails { } -impl ::serde::ser::Serialize for PlacementRestriction { - fn serialize(&self, serializer: S) -> Result { - // union serializer - use serde::ser::SerializeStruct; - match self { - PlacementRestriction::AustraliaOnly => { - // unit - let mut s = serializer.serialize_struct("PlacementRestriction", 1)?; - s.serialize_field(".tag", "australia_only")?; - s.end() - } - PlacementRestriction::EuropeOnly => { - // unit - let mut s = serializer.serialize_struct("PlacementRestriction", 1)?; - s.serialize_field(".tag", "europe_only")?; - s.end() - } - PlacementRestriction::JapanOnly => { - // unit - let mut s = serializer.serialize_struct("PlacementRestriction", 1)?; - s.serialize_field(".tag", "japan_only")?; - s.end() - } - PlacementRestriction::None => { - // unit - let mut s = serializer.serialize_struct("PlacementRestriction", 1)?; - s.serialize_field(".tag", "none")?; - s.end() - } - PlacementRestriction::UkOnly => { - // unit - let mut s = serializer.serialize_struct("PlacementRestriction", 1)?; - s.serialize_field(".tag", "uk_only")?; - s.end() - } - PlacementRestriction::UsS3Only => { - // unit - let mut s = serializer.serialize_struct("PlacementRestriction", 1)?; - s.serialize_field(".tag", "us_s3_only")?; - s.end() - } - PlacementRestriction::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) - } +const SEND_AND_TRACK_FILE_ADDED_DETAILS_FIELDS: &[&str] = &[]; +impl SendAndTrackFileAddedDetails { + // no _opt deserializer + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + ) -> Result { + // ignore any fields found; none are presently recognized + crate::eat_json_fields(&mut map)?; + Ok(SendAndTrackFileAddedDetails {}) } } -#[derive(Debug, Clone, PartialEq, Eq)] -#[non_exhaustive] // variants may be added in the future -pub enum PolicyType { - Disposition, - Retention, - /// Catch-all used for unrecognized values returned from the server. Encountering this value - /// typically indicates that this SDK version is out of date. - Other, -} - -impl<'de> ::serde::de::Deserialize<'de> for PolicyType { +impl<'de> ::serde::de::Deserialize<'de> for SendAndTrackFileAddedDetails { fn deserialize>(deserializer: D) -> Result { - // union deserializer - use serde::de::{self, MapAccess, Visitor}; - struct EnumVisitor; - impl<'de> Visitor<'de> for EnumVisitor { - type Value = PolicyType; + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = SendAndTrackFileAddedDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a PolicyType structure") + f.write_str("a SendAndTrackFileAddedDetails struct") } - fn visit_map>(self, mut map: V) -> Result { - let tag: &str = match map.next_key()? { - Some(".tag") => map.next_value()?, - _ => return Err(de::Error::missing_field(".tag")) - }; - let value = match tag { - "disposition" => PolicyType::Disposition, - "retention" => PolicyType::Retention, - _ => PolicyType::Other, - }; - crate::eat_json_fields(&mut map)?; - Ok(value) + fn visit_map>(self, map: V) -> Result { + SendAndTrackFileAddedDetails::internal_deserialize(map) } } - const VARIANTS: &[&str] = &["disposition", - "retention", - "other"]; - deserializer.deserialize_struct("PolicyType", VARIANTS, EnumVisitor) + deserializer.deserialize_struct("SendAndTrackFileAddedDetails", SEND_AND_TRACK_FILE_ADDED_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for PolicyType { +impl ::serde::ser::Serialize for SendAndTrackFileAddedDetails { fn serialize(&self, serializer: S) -> Result { - // union serializer + // struct serializer use serde::ser::SerializeStruct; - match self { - PolicyType::Disposition => { - // unit - let mut s = serializer.serialize_struct("PolicyType", 1)?; - s.serialize_field(".tag", "disposition")?; - s.end() - } - PolicyType::Retention => { - // unit - let mut s = serializer.serialize_struct("PolicyType", 1)?; - s.serialize_field(".tag", "retention")?; - s.end() - } - PolicyType::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) - } + serializer.serialize_struct("SendAndTrackFileAddedDetails", 0)?.end() } } -/// Team merge request acceptance details shown to the primary team #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct PrimaryTeamRequestAcceptedDetails { - /// The secondary team name. - pub secondary_team: String, - /// The name of the secondary team admin who sent the request originally. - pub sent_by: String, +pub struct SendAndTrackFileAddedType { + pub description: String, } -impl PrimaryTeamRequestAcceptedDetails { - pub fn new(secondary_team: String, sent_by: String) -> Self { - PrimaryTeamRequestAcceptedDetails { - secondary_team, - sent_by, +impl SendAndTrackFileAddedType { + pub fn new(description: String) -> Self { + SendAndTrackFileAddedType { + description, } } } -const PRIMARY_TEAM_REQUEST_ACCEPTED_DETAILS_FIELDS: &[&str] = &["secondary_team", - "sent_by"]; -impl PrimaryTeamRequestAcceptedDetails { +const SEND_AND_TRACK_FILE_ADDED_TYPE_FIELDS: &[&str] = &["description"]; +impl SendAndTrackFileAddedType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_secondary_team = None; - let mut field_sent_by = None; + ) -> Result, V::Error> { + let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "secondary_team" => { - if field_secondary_team.is_some() { - return Err(::serde::de::Error::duplicate_field("secondary_team")); - } - field_secondary_team = Some(map.next_value()?); - } - "sent_by" => { - if field_sent_by.is_some() { - return Err(::serde::de::Error::duplicate_field("sent_by")); + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); } - field_sent_by = Some(map.next_value()?); + field_description = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -80833,9 +102836,8 @@ impl PrimaryTeamRequestAcceptedDetails { if optional && nothing { return Ok(None); } - let result = PrimaryTeamRequestAcceptedDetails { - secondary_team: field_secondary_team.ok_or_else(|| ::serde::de::Error::missing_field("secondary_team"))?, - sent_by: field_sent_by.ok_or_else(|| ::serde::de::Error::missing_field("sent_by"))?, + let result = SendAndTrackFileAddedType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) } @@ -80845,89 +102847,68 @@ impl PrimaryTeamRequestAcceptedDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("secondary_team", &self.secondary_team)?; - s.serialize_field("sent_by", &self.sent_by)?; + s.serialize_field("description", &self.description)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for PrimaryTeamRequestAcceptedDetails { +impl<'de> ::serde::de::Deserialize<'de> for SendAndTrackFileAddedType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = PrimaryTeamRequestAcceptedDetails; + type Value = SendAndTrackFileAddedType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a PrimaryTeamRequestAcceptedDetails struct") + f.write_str("a SendAndTrackFileAddedType struct") } fn visit_map>(self, map: V) -> Result { - PrimaryTeamRequestAcceptedDetails::internal_deserialize(map) + SendAndTrackFileAddedType::internal_deserialize(map) } } - deserializer.deserialize_struct("PrimaryTeamRequestAcceptedDetails", PRIMARY_TEAM_REQUEST_ACCEPTED_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("SendAndTrackFileAddedType", SEND_AND_TRACK_FILE_ADDED_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for PrimaryTeamRequestAcceptedDetails { +impl ::serde::ser::Serialize for SendAndTrackFileAddedType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("PrimaryTeamRequestAcceptedDetails", 2)?; + let mut s = serializer.serialize_struct("SendAndTrackFileAddedType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Team merge request cancellation details shown to the primary team -#[derive(Debug, Clone, PartialEq, Eq)] +/// File renamed in Send and Track. +#[derive(Debug, Clone, PartialEq, Eq, Default)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct PrimaryTeamRequestCanceledDetails { - /// The secondary team name. - pub secondary_team: String, - /// The name of the secondary team admin who sent the request originally. - pub sent_by: String, +pub struct SendAndTrackFileRenamedDetails { + /// Previous file name. + pub previous_value: Option, } -impl PrimaryTeamRequestCanceledDetails { - pub fn new(secondary_team: String, sent_by: String) -> Self { - PrimaryTeamRequestCanceledDetails { - secondary_team, - sent_by, - } +impl SendAndTrackFileRenamedDetails { + pub fn with_previous_value(mut self, value: String) -> Self { + self.previous_value = Some(value); + self } } -const PRIMARY_TEAM_REQUEST_CANCELED_DETAILS_FIELDS: &[&str] = &["secondary_team", - "sent_by"]; -impl PrimaryTeamRequestCanceledDetails { +const SEND_AND_TRACK_FILE_RENAMED_DETAILS_FIELDS: &[&str] = &["previous_value"]; +impl SendAndTrackFileRenamedDetails { + // no _opt deserializer pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( - map: V, - ) -> Result { - Self::internal_deserialize_opt(map, false).map(Option::unwrap) - } - - pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - optional: bool, - ) -> Result, V::Error> { - let mut field_secondary_team = None; - let mut field_sent_by = None; - let mut nothing = true; + ) -> Result { + let mut field_previous_value = None; while let Some(key) = map.next_key::<&str>()? { - nothing = false; match key { - "secondary_team" => { - if field_secondary_team.is_some() { - return Err(::serde::de::Error::duplicate_field("secondary_team")); - } - field_secondary_team = Some(map.next_value()?); - } - "sent_by" => { - if field_sent_by.is_some() { - return Err(::serde::de::Error::duplicate_field("sent_by")); + "previous_value" => { + if field_previous_value.is_some() { + return Err(::serde::de::Error::duplicate_field("previous_value")); } - field_sent_by = Some(map.next_value()?); + field_previous_value = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -80935,14 +102916,10 @@ impl PrimaryTeamRequestCanceledDetails { } } } - if optional && nothing { - return Ok(None); - } - let result = PrimaryTeamRequestCanceledDetails { - secondary_team: field_secondary_team.ok_or_else(|| ::serde::de::Error::missing_field("secondary_team"))?, - sent_by: field_sent_by.ok_or_else(|| ::serde::de::Error::missing_field("sent_by"))?, + let result = SendAndTrackFileRenamedDetails { + previous_value: field_previous_value.and_then(Option::flatten), }; - Ok(Some(result)) + Ok(result) } pub(crate) fn internal_serialize( @@ -80950,89 +102927,77 @@ impl PrimaryTeamRequestCanceledDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("secondary_team", &self.secondary_team)?; - s.serialize_field("sent_by", &self.sent_by)?; + if let Some(val) = &self.previous_value { + s.serialize_field("previous_value", val)?; + } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for PrimaryTeamRequestCanceledDetails { +impl<'de> ::serde::de::Deserialize<'de> for SendAndTrackFileRenamedDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = PrimaryTeamRequestCanceledDetails; + type Value = SendAndTrackFileRenamedDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a PrimaryTeamRequestCanceledDetails struct") + f.write_str("a SendAndTrackFileRenamedDetails struct") } fn visit_map>(self, map: V) -> Result { - PrimaryTeamRequestCanceledDetails::internal_deserialize(map) + SendAndTrackFileRenamedDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("PrimaryTeamRequestCanceledDetails", PRIMARY_TEAM_REQUEST_CANCELED_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("SendAndTrackFileRenamedDetails", SEND_AND_TRACK_FILE_RENAMED_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for PrimaryTeamRequestCanceledDetails { +impl ::serde::ser::Serialize for SendAndTrackFileRenamedDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("PrimaryTeamRequestCanceledDetails", 2)?; + let mut s = serializer.serialize_struct("SendAndTrackFileRenamedDetails", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Team merge request expiration details shown to the primary team #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct PrimaryTeamRequestExpiredDetails { - /// The secondary team name. - pub secondary_team: String, - /// The name of the secondary team admin who sent the request originally. - pub sent_by: String, +pub struct SendAndTrackFileRenamedType { + pub description: String, } -impl PrimaryTeamRequestExpiredDetails { - pub fn new(secondary_team: String, sent_by: String) -> Self { - PrimaryTeamRequestExpiredDetails { - secondary_team, - sent_by, +impl SendAndTrackFileRenamedType { + pub fn new(description: String) -> Self { + SendAndTrackFileRenamedType { + description, } } } -const PRIMARY_TEAM_REQUEST_EXPIRED_DETAILS_FIELDS: &[&str] = &["secondary_team", - "sent_by"]; -impl PrimaryTeamRequestExpiredDetails { +const SEND_AND_TRACK_FILE_RENAMED_TYPE_FIELDS: &[&str] = &["description"]; +impl SendAndTrackFileRenamedType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_secondary_team = None; - let mut field_sent_by = None; + ) -> Result, V::Error> { + let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "secondary_team" => { - if field_secondary_team.is_some() { - return Err(::serde::de::Error::duplicate_field("secondary_team")); - } - field_secondary_team = Some(map.next_value()?); - } - "sent_by" => { - if field_sent_by.is_some() { - return Err(::serde::de::Error::duplicate_field("sent_by")); + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); } - field_sent_by = Some(map.next_value()?); + field_description = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -81043,9 +103008,8 @@ impl PrimaryTeamRequestExpiredDetails { if optional && nothing { return Ok(None); } - let result = PrimaryTeamRequestExpiredDetails { - secondary_team: field_secondary_team.ok_or_else(|| ::serde::de::Error::missing_field("secondary_team"))?, - sent_by: field_sent_by.ok_or_else(|| ::serde::de::Error::missing_field("sent_by"))?, + let result = SendAndTrackFileRenamedType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) } @@ -81055,89 +103019,119 @@ impl PrimaryTeamRequestExpiredDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("secondary_team", &self.secondary_team)?; - s.serialize_field("sent_by", &self.sent_by)?; + s.serialize_field("description", &self.description)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for PrimaryTeamRequestExpiredDetails { +impl<'de> ::serde::de::Deserialize<'de> for SendAndTrackFileRenamedType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = PrimaryTeamRequestExpiredDetails; + type Value = SendAndTrackFileRenamedType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a PrimaryTeamRequestExpiredDetails struct") + f.write_str("a SendAndTrackFileRenamedType struct") } fn visit_map>(self, map: V) -> Result { - PrimaryTeamRequestExpiredDetails::internal_deserialize(map) + SendAndTrackFileRenamedType::internal_deserialize(map) } } - deserializer.deserialize_struct("PrimaryTeamRequestExpiredDetails", PRIMARY_TEAM_REQUEST_EXPIRED_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("SendAndTrackFileRenamedType", SEND_AND_TRACK_FILE_RENAMED_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for PrimaryTeamRequestExpiredDetails { +impl ::serde::ser::Serialize for SendAndTrackFileRenamedType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("PrimaryTeamRequestExpiredDetails", 2)?; + let mut s = serializer.serialize_struct("SendAndTrackFileRenamedType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Team merge request reminder details shown to the primary team +/// File updated in Send and Track. +#[derive(Debug, Clone, PartialEq, Eq, Default)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct SendAndTrackFileUpdatedDetails { +} + +const SEND_AND_TRACK_FILE_UPDATED_DETAILS_FIELDS: &[&str] = &[]; +impl SendAndTrackFileUpdatedDetails { + // no _opt deserializer + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + ) -> Result { + // ignore any fields found; none are presently recognized + crate::eat_json_fields(&mut map)?; + Ok(SendAndTrackFileUpdatedDetails {}) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for SendAndTrackFileUpdatedDetails { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = SendAndTrackFileUpdatedDetails; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a SendAndTrackFileUpdatedDetails struct") + } + fn visit_map>(self, map: V) -> Result { + SendAndTrackFileUpdatedDetails::internal_deserialize(map) + } + } + deserializer.deserialize_struct("SendAndTrackFileUpdatedDetails", SEND_AND_TRACK_FILE_UPDATED_DETAILS_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for SendAndTrackFileUpdatedDetails { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + serializer.serialize_struct("SendAndTrackFileUpdatedDetails", 0)?.end() + } +} + #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct PrimaryTeamRequestReminderDetails { - /// The secondary team name. - pub secondary_team: String, - /// The name of the primary team admin the request was sent to. - pub sent_to: String, +pub struct SendAndTrackFileUpdatedType { + pub description: String, } -impl PrimaryTeamRequestReminderDetails { - pub fn new(secondary_team: String, sent_to: String) -> Self { - PrimaryTeamRequestReminderDetails { - secondary_team, - sent_to, +impl SendAndTrackFileUpdatedType { + pub fn new(description: String) -> Self { + SendAndTrackFileUpdatedType { + description, } } } -const PRIMARY_TEAM_REQUEST_REMINDER_DETAILS_FIELDS: &[&str] = &["secondary_team", - "sent_to"]; -impl PrimaryTeamRequestReminderDetails { +const SEND_AND_TRACK_FILE_UPDATED_TYPE_FIELDS: &[&str] = &["description"]; +impl SendAndTrackFileUpdatedType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_secondary_team = None; - let mut field_sent_to = None; + ) -> Result, V::Error> { + let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "secondary_team" => { - if field_secondary_team.is_some() { - return Err(::serde::de::Error::duplicate_field("secondary_team")); - } - field_secondary_team = Some(map.next_value()?); - } - "sent_to" => { - if field_sent_to.is_some() { - return Err(::serde::de::Error::duplicate_field("sent_to")); + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); } - field_sent_to = Some(map.next_value()?); + field_description = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -81148,9 +103142,8 @@ impl PrimaryTeamRequestReminderDetails { if optional && nothing { return Ok(None); } - let result = PrimaryTeamRequestReminderDetails { - secondary_team: field_secondary_team.ok_or_else(|| ::serde::de::Error::missing_field("secondary_team"))?, - sent_to: field_sent_to.ok_or_else(|| ::serde::de::Error::missing_field("sent_to"))?, + let result = SendAndTrackFileUpdatedType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) } @@ -81160,222 +103153,167 @@ impl PrimaryTeamRequestReminderDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("secondary_team", &self.secondary_team)?; - s.serialize_field("sent_to", &self.sent_to)?; + s.serialize_field("description", &self.description)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for PrimaryTeamRequestReminderDetails { +impl<'de> ::serde::de::Deserialize<'de> for SendAndTrackFileUpdatedType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = PrimaryTeamRequestReminderDetails; + type Value = SendAndTrackFileUpdatedType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a PrimaryTeamRequestReminderDetails struct") + f.write_str("a SendAndTrackFileUpdatedType struct") } fn visit_map>(self, map: V) -> Result { - PrimaryTeamRequestReminderDetails::internal_deserialize(map) + SendAndTrackFileUpdatedType::internal_deserialize(map) } } - deserializer.deserialize_struct("PrimaryTeamRequestReminderDetails", PRIMARY_TEAM_REQUEST_REMINDER_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("SendAndTrackFileUpdatedType", SEND_AND_TRACK_FILE_UPDATED_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for PrimaryTeamRequestReminderDetails { +impl ::serde::ser::Serialize for SendAndTrackFileUpdatedType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("PrimaryTeamRequestReminderDetails", 2)?; + let mut s = serializer.serialize_struct("SendAndTrackFileUpdatedType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Quick action type. +/// Link created in Send and Track. #[derive(Debug, Clone, PartialEq, Eq)] -#[non_exhaustive] // variants may be added in the future -pub enum QuickActionType { - DeleteSharedLink, - ResetPassword, - RestoreFileOrFolder, - UnlinkApp, - UnlinkDevice, - UnlinkSession, - /// Catch-all used for unrecognized values returned from the server. Encountering this value - /// typically indicates that this SDK version is out of date. - Other, +#[non_exhaustive] // structs may have more fields added in the future. +pub struct SendAndTrackLinkCreatedDetails { + /// Link Settings. + pub link_settings: LinkSettingsLogInfo, } -impl<'de> ::serde::de::Deserialize<'de> for QuickActionType { - fn deserialize>(deserializer: D) -> Result { - // union deserializer - use serde::de::{self, MapAccess, Visitor}; - struct EnumVisitor; - impl<'de> Visitor<'de> for EnumVisitor { - type Value = QuickActionType; - fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a QuickActionType structure") - } - fn visit_map>(self, mut map: V) -> Result { - let tag: &str = match map.next_key()? { - Some(".tag") => map.next_value()?, - _ => return Err(de::Error::missing_field(".tag")) - }; - let value = match tag { - "delete_shared_link" => QuickActionType::DeleteSharedLink, - "reset_password" => QuickActionType::ResetPassword, - "restore_file_or_folder" => QuickActionType::RestoreFileOrFolder, - "unlink_app" => QuickActionType::UnlinkApp, - "unlink_device" => QuickActionType::UnlinkDevice, - "unlink_session" => QuickActionType::UnlinkSession, - _ => QuickActionType::Other, - }; - crate::eat_json_fields(&mut map)?; - Ok(value) - } +impl SendAndTrackLinkCreatedDetails { + pub fn new(link_settings: LinkSettingsLogInfo) -> Self { + SendAndTrackLinkCreatedDetails { + link_settings, } - const VARIANTS: &[&str] = &["delete_shared_link", - "reset_password", - "restore_file_or_folder", - "unlink_app", - "unlink_device", - "unlink_session", - "other"]; - deserializer.deserialize_struct("QuickActionType", VARIANTS, EnumVisitor) } } -impl ::serde::ser::Serialize for QuickActionType { - fn serialize(&self, serializer: S) -> Result { - // union serializer - use serde::ser::SerializeStruct; - match self { - QuickActionType::DeleteSharedLink => { - // unit - let mut s = serializer.serialize_struct("QuickActionType", 1)?; - s.serialize_field(".tag", "delete_shared_link")?; - s.end() - } - QuickActionType::ResetPassword => { - // unit - let mut s = serializer.serialize_struct("QuickActionType", 1)?; - s.serialize_field(".tag", "reset_password")?; - s.end() - } - QuickActionType::RestoreFileOrFolder => { - // unit - let mut s = serializer.serialize_struct("QuickActionType", 1)?; - s.serialize_field(".tag", "restore_file_or_folder")?; - s.end() - } - QuickActionType::UnlinkApp => { - // unit - let mut s = serializer.serialize_struct("QuickActionType", 1)?; - s.serialize_field(".tag", "unlink_app")?; - s.end() - } - QuickActionType::UnlinkDevice => { - // unit - let mut s = serializer.serialize_struct("QuickActionType", 1)?; - s.serialize_field(".tag", "unlink_device")?; - s.end() - } - QuickActionType::UnlinkSession => { - // unit - let mut s = serializer.serialize_struct("QuickActionType", 1)?; - s.serialize_field(".tag", "unlink_session")?; - s.end() +const SEND_AND_TRACK_LINK_CREATED_DETAILS_FIELDS: &[&str] = &["link_settings"]; +impl SendAndTrackLinkCreatedDetails { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_link_settings = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "link_settings" => { + if field_link_settings.is_some() { + return Err(::serde::de::Error::duplicate_field("link_settings")); + } + field_link_settings = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } } - QuickActionType::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) } + if optional && nothing { + return Ok(None); + } + let result = SendAndTrackLinkCreatedDetails { + link_settings: field_link_settings.ok_or_else(|| ::serde::de::Error::missing_field("link_settings"))?, + }; + Ok(Some(result)) } -} - -/// Created ransomware report. -#[derive(Debug, Clone, PartialEq, Eq, Default)] -#[non_exhaustive] // structs may have more fields added in the future. -pub struct RansomwareAlertCreateReportDetails { -} -const RANSOMWARE_ALERT_CREATE_REPORT_DETAILS_FIELDS: &[&str] = &[]; -impl RansomwareAlertCreateReportDetails { - // no _opt deserializer - pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( - mut map: V, - ) -> Result { - // ignore any fields found; none are presently recognized - crate::eat_json_fields(&mut map)?; - Ok(RansomwareAlertCreateReportDetails {}) + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("link_settings", &self.link_settings)?; + Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for RansomwareAlertCreateReportDetails { +impl<'de> ::serde::de::Deserialize<'de> for SendAndTrackLinkCreatedDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = RansomwareAlertCreateReportDetails; + type Value = SendAndTrackLinkCreatedDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a RansomwareAlertCreateReportDetails struct") + f.write_str("a SendAndTrackLinkCreatedDetails struct") } fn visit_map>(self, map: V) -> Result { - RansomwareAlertCreateReportDetails::internal_deserialize(map) + SendAndTrackLinkCreatedDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("RansomwareAlertCreateReportDetails", RANSOMWARE_ALERT_CREATE_REPORT_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("SendAndTrackLinkCreatedDetails", SEND_AND_TRACK_LINK_CREATED_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for RansomwareAlertCreateReportDetails { +impl ::serde::ser::Serialize for SendAndTrackLinkCreatedDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - serializer.serialize_struct("RansomwareAlertCreateReportDetails", 0)?.end() + let mut s = serializer.serialize_struct("SendAndTrackLinkCreatedDetails", 1)?; + self.internal_serialize::(&mut s)?; + s.end() } } -/// Couldn't generate ransomware report. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct RansomwareAlertCreateReportFailedDetails { - /// Failure reason. - pub failure_reason: crate::types::team::TeamReportFailureReason, +pub struct SendAndTrackLinkCreatedType { + pub description: String, } -impl RansomwareAlertCreateReportFailedDetails { - pub fn new(failure_reason: crate::types::team::TeamReportFailureReason) -> Self { - RansomwareAlertCreateReportFailedDetails { - failure_reason, +impl SendAndTrackLinkCreatedType { + pub fn new(description: String) -> Self { + SendAndTrackLinkCreatedType { + description, } } } -const RANSOMWARE_ALERT_CREATE_REPORT_FAILED_DETAILS_FIELDS: &[&str] = &["failure_reason"]; -impl RansomwareAlertCreateReportFailedDetails { +const SEND_AND_TRACK_LINK_CREATED_TYPE_FIELDS: &[&str] = &["description"]; +impl SendAndTrackLinkCreatedType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_failure_reason = None; + ) -> Result, V::Error> { + let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "failure_reason" => { - if field_failure_reason.is_some() { - return Err(::serde::de::Error::duplicate_field("failure_reason")); + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); } - field_failure_reason = Some(map.next_value()?); + field_description = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -81386,8 +103324,8 @@ impl RansomwareAlertCreateReportFailedDetails { if optional && nothing { return Ok(None); } - let result = RansomwareAlertCreateReportFailedDetails { - failure_reason: field_failure_reason.ok_or_else(|| ::serde::de::Error::missing_field("failure_reason"))?, + let result = SendAndTrackLinkCreatedType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) } @@ -81397,75 +103335,77 @@ impl RansomwareAlertCreateReportFailedDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("failure_reason", &self.failure_reason)?; + s.serialize_field("description", &self.description)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for RansomwareAlertCreateReportFailedDetails { +impl<'de> ::serde::de::Deserialize<'de> for SendAndTrackLinkCreatedType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = RansomwareAlertCreateReportFailedDetails; + type Value = SendAndTrackLinkCreatedType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a RansomwareAlertCreateReportFailedDetails struct") + f.write_str("a SendAndTrackLinkCreatedType struct") } fn visit_map>(self, map: V) -> Result { - RansomwareAlertCreateReportFailedDetails::internal_deserialize(map) + SendAndTrackLinkCreatedType::internal_deserialize(map) } } - deserializer.deserialize_struct("RansomwareAlertCreateReportFailedDetails", RANSOMWARE_ALERT_CREATE_REPORT_FAILED_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("SendAndTrackLinkCreatedType", SEND_AND_TRACK_LINK_CREATED_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for RansomwareAlertCreateReportFailedDetails { +impl ::serde::ser::Serialize for SendAndTrackLinkCreatedType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("RansomwareAlertCreateReportFailedDetails", 1)?; + let mut s = serializer.serialize_struct("SendAndTrackLinkCreatedType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } +/// Link deleted in Send and Track. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct RansomwareAlertCreateReportFailedType { - pub description: String, +pub struct SendAndTrackLinkDeletedDetails { + /// Shared content link. + pub shared_content_link: String, } -impl RansomwareAlertCreateReportFailedType { - pub fn new(description: String) -> Self { - RansomwareAlertCreateReportFailedType { - description, +impl SendAndTrackLinkDeletedDetails { + pub fn new(shared_content_link: String) -> Self { + SendAndTrackLinkDeletedDetails { + shared_content_link, } } } -const RANSOMWARE_ALERT_CREATE_REPORT_FAILED_TYPE_FIELDS: &[&str] = &["description"]; -impl RansomwareAlertCreateReportFailedType { +const SEND_AND_TRACK_LINK_DELETED_DETAILS_FIELDS: &[&str] = &["shared_content_link"]; +impl SendAndTrackLinkDeletedDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_description = None; + ) -> Result, V::Error> { + let mut field_shared_content_link = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "description" => { - if field_description.is_some() { - return Err(::serde::de::Error::duplicate_field("description")); + "shared_content_link" => { + if field_shared_content_link.is_some() { + return Err(::serde::de::Error::duplicate_field("shared_content_link")); } - field_description = Some(map.next_value()?); + field_shared_content_link = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -81476,8 +103416,8 @@ impl RansomwareAlertCreateReportFailedType { if optional && nothing { return Ok(None); } - let result = RansomwareAlertCreateReportFailedType { - description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + let result = SendAndTrackLinkDeletedDetails { + shared_content_link: field_shared_content_link.ok_or_else(|| ::serde::de::Error::missing_field("shared_content_link"))?, }; Ok(Some(result)) } @@ -81487,34 +103427,34 @@ impl RansomwareAlertCreateReportFailedType { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("description", &self.description)?; + s.serialize_field("shared_content_link", &self.shared_content_link)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for RansomwareAlertCreateReportFailedType { +impl<'de> ::serde::de::Deserialize<'de> for SendAndTrackLinkDeletedDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = RansomwareAlertCreateReportFailedType; + type Value = SendAndTrackLinkDeletedDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a RansomwareAlertCreateReportFailedType struct") + f.write_str("a SendAndTrackLinkDeletedDetails struct") } fn visit_map>(self, map: V) -> Result { - RansomwareAlertCreateReportFailedType::internal_deserialize(map) + SendAndTrackLinkDeletedDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("RansomwareAlertCreateReportFailedType", RANSOMWARE_ALERT_CREATE_REPORT_FAILED_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("SendAndTrackLinkDeletedDetails", SEND_AND_TRACK_LINK_DELETED_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for RansomwareAlertCreateReportFailedType { +impl ::serde::ser::Serialize for SendAndTrackLinkDeletedDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("RansomwareAlertCreateReportFailedType", 1)?; + let mut s = serializer.serialize_struct("SendAndTrackLinkDeletedDetails", 1)?; self.internal_serialize::(&mut s)?; s.end() } @@ -81522,30 +103462,30 @@ impl ::serde::ser::Serialize for RansomwareAlertCreateReportFailedType { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct RansomwareAlertCreateReportType { +pub struct SendAndTrackLinkDeletedType { pub description: String, } -impl RansomwareAlertCreateReportType { +impl SendAndTrackLinkDeletedType { pub fn new(description: String) -> Self { - RansomwareAlertCreateReportType { + SendAndTrackLinkDeletedType { description, } } } -const RANSOMWARE_ALERT_CREATE_REPORT_TYPE_FIELDS: &[&str] = &["description"]; -impl RansomwareAlertCreateReportType { +const SEND_AND_TRACK_LINK_DELETED_TYPE_FIELDS: &[&str] = &["description"]; +impl SendAndTrackLinkDeletedType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -81566,7 +103506,7 @@ impl RansomwareAlertCreateReportType { if optional && nothing { return Ok(None); } - let result = RansomwareAlertCreateReportType { + let result = SendAndTrackLinkDeletedType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -81582,98 +103522,88 @@ impl RansomwareAlertCreateReportType { } } -impl<'de> ::serde::de::Deserialize<'de> for RansomwareAlertCreateReportType { +impl<'de> ::serde::de::Deserialize<'de> for SendAndTrackLinkDeletedType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = RansomwareAlertCreateReportType; + type Value = SendAndTrackLinkDeletedType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a RansomwareAlertCreateReportType struct") + f.write_str("a SendAndTrackLinkDeletedType struct") } fn visit_map>(self, map: V) -> Result { - RansomwareAlertCreateReportType::internal_deserialize(map) + SendAndTrackLinkDeletedType::internal_deserialize(map) } } - deserializer.deserialize_struct("RansomwareAlertCreateReportType", RANSOMWARE_ALERT_CREATE_REPORT_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("SendAndTrackLinkDeletedType", SEND_AND_TRACK_LINK_DELETED_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for RansomwareAlertCreateReportType { +impl ::serde::ser::Serialize for SendAndTrackLinkDeletedType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("RansomwareAlertCreateReportType", 1)?; + let mut s = serializer.serialize_struct("SendAndTrackLinkDeletedType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Completed ransomware restore process. +/// Send and Track Link Updated. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct RansomwareRestoreProcessCompletedDetails { - /// The status of the restore process. - pub status: String, - /// Restored files count. - pub restored_files_count: i64, - /// Restored files failed count. - pub restored_files_failed_count: i64, +pub struct SendAndTrackLinkUpdatedDetails { + /// Link Settings. + pub link_settings: LinkSettingsLogInfo, + /// Previous link name. + pub previous_link_name: Option, } -impl RansomwareRestoreProcessCompletedDetails { - pub fn new( - status: String, - restored_files_count: i64, - restored_files_failed_count: i64, - ) -> Self { - RansomwareRestoreProcessCompletedDetails { - status, - restored_files_count, - restored_files_failed_count, +impl SendAndTrackLinkUpdatedDetails { + pub fn new(link_settings: LinkSettingsLogInfo) -> Self { + SendAndTrackLinkUpdatedDetails { + link_settings, + previous_link_name: None, } } + + pub fn with_previous_link_name(mut self, value: String) -> Self { + self.previous_link_name = Some(value); + self + } } -const RANSOMWARE_RESTORE_PROCESS_COMPLETED_DETAILS_FIELDS: &[&str] = &["status", - "restored_files_count", - "restored_files_failed_count"]; -impl RansomwareRestoreProcessCompletedDetails { +const SEND_AND_TRACK_LINK_UPDATED_DETAILS_FIELDS: &[&str] = &["link_settings", + "previous_link_name"]; +impl SendAndTrackLinkUpdatedDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( - mut map: V, - optional: bool, - ) -> Result, V::Error> { - let mut field_status = None; - let mut field_restored_files_count = None; - let mut field_restored_files_failed_count = None; + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_link_settings = None; + let mut field_previous_link_name = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "status" => { - if field_status.is_some() { - return Err(::serde::de::Error::duplicate_field("status")); - } - field_status = Some(map.next_value()?); - } - "restored_files_count" => { - if field_restored_files_count.is_some() { - return Err(::serde::de::Error::duplicate_field("restored_files_count")); + "link_settings" => { + if field_link_settings.is_some() { + return Err(::serde::de::Error::duplicate_field("link_settings")); } - field_restored_files_count = Some(map.next_value()?); + field_link_settings = Some(map.next_value()?); } - "restored_files_failed_count" => { - if field_restored_files_failed_count.is_some() { - return Err(::serde::de::Error::duplicate_field("restored_files_failed_count")); + "previous_link_name" => { + if field_previous_link_name.is_some() { + return Err(::serde::de::Error::duplicate_field("previous_link_name")); } - field_restored_files_failed_count = Some(map.next_value()?); + field_previous_link_name = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -81684,10 +103614,9 @@ impl RansomwareRestoreProcessCompletedDetails { if optional && nothing { return Ok(None); } - let result = RansomwareRestoreProcessCompletedDetails { - status: field_status.ok_or_else(|| ::serde::de::Error::missing_field("status"))?, - restored_files_count: field_restored_files_count.ok_or_else(|| ::serde::de::Error::missing_field("restored_files_count"))?, - restored_files_failed_count: field_restored_files_failed_count.ok_or_else(|| ::serde::de::Error::missing_field("restored_files_failed_count"))?, + let result = SendAndTrackLinkUpdatedDetails { + link_settings: field_link_settings.ok_or_else(|| ::serde::de::Error::missing_field("link_settings"))?, + previous_link_name: field_previous_link_name.and_then(Option::flatten), }; Ok(Some(result)) } @@ -81697,36 +103626,37 @@ impl RansomwareRestoreProcessCompletedDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("status", &self.status)?; - s.serialize_field("restored_files_count", &self.restored_files_count)?; - s.serialize_field("restored_files_failed_count", &self.restored_files_failed_count)?; + s.serialize_field("link_settings", &self.link_settings)?; + if let Some(val) = &self.previous_link_name { + s.serialize_field("previous_link_name", val)?; + } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for RansomwareRestoreProcessCompletedDetails { +impl<'de> ::serde::de::Deserialize<'de> for SendAndTrackLinkUpdatedDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = RansomwareRestoreProcessCompletedDetails; + type Value = SendAndTrackLinkUpdatedDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a RansomwareRestoreProcessCompletedDetails struct") + f.write_str("a SendAndTrackLinkUpdatedDetails struct") } fn visit_map>(self, map: V) -> Result { - RansomwareRestoreProcessCompletedDetails::internal_deserialize(map) + SendAndTrackLinkUpdatedDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("RansomwareRestoreProcessCompletedDetails", RANSOMWARE_RESTORE_PROCESS_COMPLETED_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("SendAndTrackLinkUpdatedDetails", SEND_AND_TRACK_LINK_UPDATED_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for RansomwareRestoreProcessCompletedDetails { +impl ::serde::ser::Serialize for SendAndTrackLinkUpdatedDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("RansomwareRestoreProcessCompletedDetails", 3)?; + let mut s = serializer.serialize_struct("SendAndTrackLinkUpdatedDetails", 2)?; self.internal_serialize::(&mut s)?; s.end() } @@ -81734,30 +103664,30 @@ impl ::serde::ser::Serialize for RansomwareRestoreProcessCompletedDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct RansomwareRestoreProcessCompletedType { +pub struct SendAndTrackLinkUpdatedType { pub description: String, } -impl RansomwareRestoreProcessCompletedType { +impl SendAndTrackLinkUpdatedType { pub fn new(description: String) -> Self { - RansomwareRestoreProcessCompletedType { + SendAndTrackLinkUpdatedType { description, } } } -const RANSOMWARE_RESTORE_PROCESS_COMPLETED_TYPE_FIELDS: &[&str] = &["description"]; -impl RansomwareRestoreProcessCompletedType { +const SEND_AND_TRACK_LINK_UPDATED_TYPE_FIELDS: &[&str] = &["description"]; +impl SendAndTrackLinkUpdatedType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -81778,7 +103708,7 @@ impl RansomwareRestoreProcessCompletedType { if optional && nothing { return Ok(None); } - let result = RansomwareRestoreProcessCompletedType { + let result = SendAndTrackLinkUpdatedType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -81794,72 +103724,104 @@ impl RansomwareRestoreProcessCompletedType { } } -impl<'de> ::serde::de::Deserialize<'de> for RansomwareRestoreProcessCompletedType { +impl<'de> ::serde::de::Deserialize<'de> for SendAndTrackLinkUpdatedType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = RansomwareRestoreProcessCompletedType; + type Value = SendAndTrackLinkUpdatedType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a RansomwareRestoreProcessCompletedType struct") + f.write_str("a SendAndTrackLinkUpdatedType struct") } fn visit_map>(self, map: V) -> Result { - RansomwareRestoreProcessCompletedType::internal_deserialize(map) + SendAndTrackLinkUpdatedType::internal_deserialize(map) } } - deserializer.deserialize_struct("RansomwareRestoreProcessCompletedType", RANSOMWARE_RESTORE_PROCESS_COMPLETED_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("SendAndTrackLinkUpdatedType", SEND_AND_TRACK_LINK_UPDATED_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for RansomwareRestoreProcessCompletedType { +impl ::serde::ser::Serialize for SendAndTrackLinkUpdatedType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("RansomwareRestoreProcessCompletedType", 1)?; + let mut s = serializer.serialize_struct("SendAndTrackLinkUpdatedType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Started ransomware restore process. +/// Send and Track Link Visited. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct RansomwareRestoreProcessStartedDetails { - /// Ransomware filename extension. - pub extension: String, +pub struct SendAndTrackLinkViewedDetails { + /// Link Settings. + pub link_settings: LinkSettingsLogInfo, + /// Visitor Email address. + pub email_address: Option, + /// Link Owner. + pub link_owner: Option, } -impl RansomwareRestoreProcessStartedDetails { - pub fn new(extension: String) -> Self { - RansomwareRestoreProcessStartedDetails { - extension, +impl SendAndTrackLinkViewedDetails { + pub fn new(link_settings: LinkSettingsLogInfo) -> Self { + SendAndTrackLinkViewedDetails { + link_settings, + email_address: None, + link_owner: None, } } + + pub fn with_email_address(mut self, value: String) -> Self { + self.email_address = Some(value); + self + } + + pub fn with_link_owner(mut self, value: String) -> Self { + self.link_owner = Some(value); + self + } } -const RANSOMWARE_RESTORE_PROCESS_STARTED_DETAILS_FIELDS: &[&str] = &["extension"]; -impl RansomwareRestoreProcessStartedDetails { +const SEND_AND_TRACK_LINK_VIEWED_DETAILS_FIELDS: &[&str] = &["link_settings", + "email_address", + "link_owner"]; +impl SendAndTrackLinkViewedDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_extension = None; + ) -> Result, V::Error> { + let mut field_link_settings = None; + let mut field_email_address = None; + let mut field_link_owner = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "extension" => { - if field_extension.is_some() { - return Err(::serde::de::Error::duplicate_field("extension")); + "link_settings" => { + if field_link_settings.is_some() { + return Err(::serde::de::Error::duplicate_field("link_settings")); } - field_extension = Some(map.next_value()?); + field_link_settings = Some(map.next_value()?); + } + "email_address" => { + if field_email_address.is_some() { + return Err(::serde::de::Error::duplicate_field("email_address")); + } + field_email_address = Some(map.next_value()?); + } + "link_owner" => { + if field_link_owner.is_some() { + return Err(::serde::de::Error::duplicate_field("link_owner")); + } + field_link_owner = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -81870,8 +103832,10 @@ impl RansomwareRestoreProcessStartedDetails { if optional && nothing { return Ok(None); } - let result = RansomwareRestoreProcessStartedDetails { - extension: field_extension.ok_or_else(|| ::serde::de::Error::missing_field("extension"))?, + let result = SendAndTrackLinkViewedDetails { + link_settings: field_link_settings.ok_or_else(|| ::serde::de::Error::missing_field("link_settings"))?, + email_address: field_email_address.and_then(Option::flatten), + link_owner: field_link_owner.and_then(Option::flatten), }; Ok(Some(result)) } @@ -81881,34 +103845,40 @@ impl RansomwareRestoreProcessStartedDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("extension", &self.extension)?; + s.serialize_field("link_settings", &self.link_settings)?; + if let Some(val) = &self.email_address { + s.serialize_field("email_address", val)?; + } + if let Some(val) = &self.link_owner { + s.serialize_field("link_owner", val)?; + } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for RansomwareRestoreProcessStartedDetails { +impl<'de> ::serde::de::Deserialize<'de> for SendAndTrackLinkViewedDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = RansomwareRestoreProcessStartedDetails; + type Value = SendAndTrackLinkViewedDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a RansomwareRestoreProcessStartedDetails struct") + f.write_str("a SendAndTrackLinkViewedDetails struct") } fn visit_map>(self, map: V) -> Result { - RansomwareRestoreProcessStartedDetails::internal_deserialize(map) + SendAndTrackLinkViewedDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("RansomwareRestoreProcessStartedDetails", RANSOMWARE_RESTORE_PROCESS_STARTED_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("SendAndTrackLinkViewedDetails", SEND_AND_TRACK_LINK_VIEWED_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for RansomwareRestoreProcessStartedDetails { +impl ::serde::ser::Serialize for SendAndTrackLinkViewedDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("RansomwareRestoreProcessStartedDetails", 1)?; + let mut s = serializer.serialize_struct("SendAndTrackLinkViewedDetails", 3)?; self.internal_serialize::(&mut s)?; s.end() } @@ -81916,30 +103886,30 @@ impl ::serde::ser::Serialize for RansomwareRestoreProcessStartedDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct RansomwareRestoreProcessStartedType { +pub struct SendAndTrackLinkViewedType { pub description: String, } -impl RansomwareRestoreProcessStartedType { +impl SendAndTrackLinkViewedType { pub fn new(description: String) -> Self { - RansomwareRestoreProcessStartedType { + SendAndTrackLinkViewedType { description, } } } -const RANSOMWARE_RESTORE_PROCESS_STARTED_TYPE_FIELDS: &[&str] = &["description"]; -impl RansomwareRestoreProcessStartedType { +const SEND_AND_TRACK_LINK_VIEWED_TYPE_FIELDS: &[&str] = &["description"]; +impl SendAndTrackLinkViewedType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -81960,7 +103930,7 @@ impl RansomwareRestoreProcessStartedType { if optional && nothing { return Ok(None); } - let result = RansomwareRestoreProcessStartedType { + let result = SendAndTrackLinkViewedType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -81976,93 +103946,156 @@ impl RansomwareRestoreProcessStartedType { } } -impl<'de> ::serde::de::Deserialize<'de> for RansomwareRestoreProcessStartedType { +impl<'de> ::serde::de::Deserialize<'de> for SendAndTrackLinkViewedType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = RansomwareRestoreProcessStartedType; + type Value = SendAndTrackLinkViewedType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a RansomwareRestoreProcessStartedType struct") + f.write_str("a SendAndTrackLinkViewedType struct") } fn visit_map>(self, map: V) -> Result { - RansomwareRestoreProcessStartedType::internal_deserialize(map) + SendAndTrackLinkViewedType::internal_deserialize(map) } } - deserializer.deserialize_struct("RansomwareRestoreProcessStartedType", RANSOMWARE_RESTORE_PROCESS_STARTED_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("SendAndTrackLinkViewedType", SEND_AND_TRACK_LINK_VIEWED_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for RansomwareRestoreProcessStartedType { +impl ::serde::ser::Serialize for SendAndTrackLinkViewedType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("RansomwareRestoreProcessStartedType", 1)?; + let mut s = serializer.serialize_struct("SendAndTrackLinkViewedType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Recipients Configuration -#[derive(Debug, Clone, PartialEq, Eq, Default)] -#[non_exhaustive] // structs may have more fields added in the future. -pub struct RecipientsConfiguration { - /// Recipients setting type. - pub recipient_setting_type: Option, - /// A list of user emails to notify. - pub emails: Option>, - /// A list of groups to notify. - pub groups: Option>, +/// Policy for deciding whether team users can use Send and Track +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // variants may be added in the future +pub enum SendAndTrackPolicy { + Default, + Disabled, + Enabled, + /// Catch-all used for unrecognized values returned from the server. Encountering this value + /// typically indicates that this SDK version is out of date. + Other, } -impl RecipientsConfiguration { - pub fn with_recipient_setting_type(mut self, value: AlertRecipientsSettingType) -> Self { - self.recipient_setting_type = Some(value); - self +impl<'de> ::serde::de::Deserialize<'de> for SendAndTrackPolicy { + fn deserialize>(deserializer: D) -> Result { + // union deserializer + use serde::de::{self, MapAccess, Visitor}; + struct EnumVisitor; + impl<'de> Visitor<'de> for EnumVisitor { + type Value = SendAndTrackPolicy; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a SendAndTrackPolicy structure") + } + fn visit_map>(self, mut map: V) -> Result { + let tag: &str = match map.next_key()? { + Some(".tag") => map.next_value()?, + _ => return Err(de::Error::missing_field(".tag")) + }; + let value = match tag { + "default" => SendAndTrackPolicy::Default, + "disabled" => SendAndTrackPolicy::Disabled, + "enabled" => SendAndTrackPolicy::Enabled, + _ => SendAndTrackPolicy::Other, + }; + crate::eat_json_fields(&mut map)?; + Ok(value) + } + } + const VARIANTS: &[&str] = &["default", + "disabled", + "enabled", + "other"]; + deserializer.deserialize_struct("SendAndTrackPolicy", VARIANTS, EnumVisitor) } +} - pub fn with_emails(mut self, value: Vec) -> Self { - self.emails = Some(value); - self +impl ::serde::ser::Serialize for SendAndTrackPolicy { + fn serialize(&self, serializer: S) -> Result { + // union serializer + use serde::ser::SerializeStruct; + match self { + SendAndTrackPolicy::Default => { + // unit + let mut s = serializer.serialize_struct("SendAndTrackPolicy", 1)?; + s.serialize_field(".tag", "default")?; + s.end() + } + SendAndTrackPolicy::Disabled => { + // unit + let mut s = serializer.serialize_struct("SendAndTrackPolicy", 1)?; + s.serialize_field(".tag", "disabled")?; + s.end() + } + SendAndTrackPolicy::Enabled => { + // unit + let mut s = serializer.serialize_struct("SendAndTrackPolicy", 1)?; + s.serialize_field(".tag", "enabled")?; + s.end() + } + SendAndTrackPolicy::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) + } } +} - pub fn with_groups(mut self, value: Vec) -> Self { - self.groups = Some(value); - self +/// Changed “Send and track” policy for team. +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct SendAndTrackPolicyChangedDetails { + /// To. + pub new_value: SendAndTrackPolicy, + /// From. + pub previous_value: SendAndTrackPolicy, +} + +impl SendAndTrackPolicyChangedDetails { + pub fn new(new_value: SendAndTrackPolicy, previous_value: SendAndTrackPolicy) -> Self { + SendAndTrackPolicyChangedDetails { + new_value, + previous_value, + } } } -const RECIPIENTS_CONFIGURATION_FIELDS: &[&str] = &["recipient_setting_type", - "emails", - "groups"]; -impl RecipientsConfiguration { - // no _opt deserializer +const SEND_AND_TRACK_POLICY_CHANGED_DETAILS_FIELDS: &[&str] = &["new_value", + "previous_value"]; +impl SendAndTrackPolicyChangedDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - ) -> Result { - let mut field_recipient_setting_type = None; - let mut field_emails = None; - let mut field_groups = None; + optional: bool, + ) -> Result, V::Error> { + let mut field_new_value = None; + let mut field_previous_value = None; + let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { + nothing = false; match key { - "recipient_setting_type" => { - if field_recipient_setting_type.is_some() { - return Err(::serde::de::Error::duplicate_field("recipient_setting_type")); - } - field_recipient_setting_type = Some(map.next_value()?); - } - "emails" => { - if field_emails.is_some() { - return Err(::serde::de::Error::duplicate_field("emails")); + "new_value" => { + if field_new_value.is_some() { + return Err(::serde::de::Error::duplicate_field("new_value")); } - field_emails = Some(map.next_value()?); + field_new_value = Some(map.next_value()?); } - "groups" => { - if field_groups.is_some() { - return Err(::serde::de::Error::duplicate_field("groups")); + "previous_value" => { + if field_previous_value.is_some() { + return Err(::serde::de::Error::duplicate_field("previous_value")); } - field_groups = Some(map.next_value()?); + field_previous_value = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -82070,12 +104103,14 @@ impl RecipientsConfiguration { } } } - let result = RecipientsConfiguration { - recipient_setting_type: field_recipient_setting_type.and_then(Option::flatten), - emails: field_emails.and_then(Option::flatten), - groups: field_groups.and_then(Option::flatten), + if optional && nothing { + return Ok(None); + } + let result = SendAndTrackPolicyChangedDetails { + new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, + previous_value: field_previous_value.ok_or_else(|| ::serde::de::Error::missing_field("previous_value"))?, }; - Ok(result) + Ok(Some(result)) } pub(crate) fn internal_serialize( @@ -82083,96 +104118,76 @@ impl RecipientsConfiguration { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - if let Some(val) = &self.recipient_setting_type { - s.serialize_field("recipient_setting_type", val)?; - } - if let Some(val) = &self.emails { - s.serialize_field("emails", val)?; - } - if let Some(val) = &self.groups { - s.serialize_field("groups", val)?; - } + s.serialize_field("new_value", &self.new_value)?; + s.serialize_field("previous_value", &self.previous_value)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for RecipientsConfiguration { +impl<'de> ::serde::de::Deserialize<'de> for SendAndTrackPolicyChangedDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = RecipientsConfiguration; + type Value = SendAndTrackPolicyChangedDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a RecipientsConfiguration struct") + f.write_str("a SendAndTrackPolicyChangedDetails struct") } fn visit_map>(self, map: V) -> Result { - RecipientsConfiguration::internal_deserialize(map) + SendAndTrackPolicyChangedDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("RecipientsConfiguration", RECIPIENTS_CONFIGURATION_FIELDS, StructVisitor) + deserializer.deserialize_struct("SendAndTrackPolicyChangedDetails", SEND_AND_TRACK_POLICY_CHANGED_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for RecipientsConfiguration { +impl ::serde::ser::Serialize for SendAndTrackPolicyChangedDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("RecipientsConfiguration", 3)?; + let mut s = serializer.serialize_struct("SendAndTrackPolicyChangedDetails", 2)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Provides the indices of the source asset and the destination asset for a relocate action. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct RelocateAssetReferencesLogInfo { - /// Source asset position in the Assets list. - pub src_asset_index: u64, - /// Destination asset position in the Assets list. - pub dest_asset_index: u64, +pub struct SendAndTrackPolicyChangedType { + pub description: String, } -impl RelocateAssetReferencesLogInfo { - pub fn new(src_asset_index: u64, dest_asset_index: u64) -> Self { - RelocateAssetReferencesLogInfo { - src_asset_index, - dest_asset_index, +impl SendAndTrackPolicyChangedType { + pub fn new(description: String) -> Self { + SendAndTrackPolicyChangedType { + description, } } } -const RELOCATE_ASSET_REFERENCES_LOG_INFO_FIELDS: &[&str] = &["src_asset_index", - "dest_asset_index"]; -impl RelocateAssetReferencesLogInfo { +const SEND_AND_TRACK_POLICY_CHANGED_TYPE_FIELDS: &[&str] = &["description"]; +impl SendAndTrackPolicyChangedType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_src_asset_index = None; - let mut field_dest_asset_index = None; + ) -> Result, V::Error> { + let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "src_asset_index" => { - if field_src_asset_index.is_some() { - return Err(::serde::de::Error::duplicate_field("src_asset_index")); - } - field_src_asset_index = Some(map.next_value()?); - } - "dest_asset_index" => { - if field_dest_asset_index.is_some() { - return Err(::serde::de::Error::duplicate_field("dest_asset_index")); + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); } - field_dest_asset_index = Some(map.next_value()?); + field_description = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -82183,9 +104198,8 @@ impl RelocateAssetReferencesLogInfo { if optional && nothing { return Ok(None); } - let result = RelocateAssetReferencesLogInfo { - src_asset_index: field_src_asset_index.ok_or_else(|| ::serde::de::Error::missing_field("src_asset_index"))?, - dest_asset_index: field_dest_asset_index.ok_or_else(|| ::serde::de::Error::missing_field("dest_asset_index"))?, + let result = SendAndTrackPolicyChangedType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) } @@ -82195,110 +104209,109 @@ impl RelocateAssetReferencesLogInfo { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("src_asset_index", &self.src_asset_index)?; - s.serialize_field("dest_asset_index", &self.dest_asset_index)?; + s.serialize_field("description", &self.description)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for RelocateAssetReferencesLogInfo { +impl<'de> ::serde::de::Deserialize<'de> for SendAndTrackPolicyChangedType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = RelocateAssetReferencesLogInfo; + type Value = SendAndTrackPolicyChangedType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a RelocateAssetReferencesLogInfo struct") + f.write_str("a SendAndTrackPolicyChangedType struct") } fn visit_map>(self, map: V) -> Result { - RelocateAssetReferencesLogInfo::internal_deserialize(map) + SendAndTrackPolicyChangedType::internal_deserialize(map) } } - deserializer.deserialize_struct("RelocateAssetReferencesLogInfo", RELOCATE_ASSET_REFERENCES_LOG_INFO_FIELDS, StructVisitor) + deserializer.deserialize_struct("SendAndTrackPolicyChangedType", SEND_AND_TRACK_POLICY_CHANGED_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for RelocateAssetReferencesLogInfo { +impl ::serde::ser::Serialize for SendAndTrackPolicyChangedType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("RelocateAssetReferencesLogInfo", 2)?; + let mut s = serializer.serialize_struct("SendAndTrackPolicyChangedType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Deleted files in Replay. +/// Send and Track file and associated links deleted. #[derive(Debug, Clone, PartialEq, Eq, Default)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct ReplayFileDeleteDetails { +pub struct SendAndTrackRemovedFileAndAssociatedLinksDetails { } -const REPLAY_FILE_DELETE_DETAILS_FIELDS: &[&str] = &[]; -impl ReplayFileDeleteDetails { +const SEND_AND_TRACK_REMOVED_FILE_AND_ASSOCIATED_LINKS_DETAILS_FIELDS: &[&str] = &[]; +impl SendAndTrackRemovedFileAndAssociatedLinksDetails { // no _opt deserializer pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - ) -> Result { + ) -> Result { // ignore any fields found; none are presently recognized crate::eat_json_fields(&mut map)?; - Ok(ReplayFileDeleteDetails {}) + Ok(SendAndTrackRemovedFileAndAssociatedLinksDetails {}) } } -impl<'de> ::serde::de::Deserialize<'de> for ReplayFileDeleteDetails { +impl<'de> ::serde::de::Deserialize<'de> for SendAndTrackRemovedFileAndAssociatedLinksDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = ReplayFileDeleteDetails; + type Value = SendAndTrackRemovedFileAndAssociatedLinksDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a ReplayFileDeleteDetails struct") + f.write_str("a SendAndTrackRemovedFileAndAssociatedLinksDetails struct") } fn visit_map>(self, map: V) -> Result { - ReplayFileDeleteDetails::internal_deserialize(map) + SendAndTrackRemovedFileAndAssociatedLinksDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("ReplayFileDeleteDetails", REPLAY_FILE_DELETE_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("SendAndTrackRemovedFileAndAssociatedLinksDetails", SEND_AND_TRACK_REMOVED_FILE_AND_ASSOCIATED_LINKS_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for ReplayFileDeleteDetails { +impl ::serde::ser::Serialize for SendAndTrackRemovedFileAndAssociatedLinksDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - serializer.serialize_struct("ReplayFileDeleteDetails", 0)?.end() + serializer.serialize_struct("SendAndTrackRemovedFileAndAssociatedLinksDetails", 0)?.end() } } #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct ReplayFileDeleteType { +pub struct SendAndTrackRemovedFileAndAssociatedLinksType { pub description: String, } -impl ReplayFileDeleteType { +impl SendAndTrackRemovedFileAndAssociatedLinksType { pub fn new(description: String) -> Self { - ReplayFileDeleteType { + SendAndTrackRemovedFileAndAssociatedLinksType { description, } } } -const REPLAY_FILE_DELETE_TYPE_FIELDS: &[&str] = &["description"]; -impl ReplayFileDeleteType { +const SEND_AND_TRACK_REMOVED_FILE_AND_ASSOCIATED_LINKS_TYPE_FIELDS: &[&str] = &["description"]; +impl SendAndTrackRemovedFileAndAssociatedLinksType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -82319,7 +104332,7 @@ impl ReplayFileDeleteType { if optional && nothing { return Ok(None); } - let result = ReplayFileDeleteType { + let result = SendAndTrackRemovedFileAndAssociatedLinksType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -82335,104 +104348,241 @@ impl ReplayFileDeleteType { } } -impl<'de> ::serde::de::Deserialize<'de> for ReplayFileDeleteType { +impl<'de> ::serde::de::Deserialize<'de> for SendAndTrackRemovedFileAndAssociatedLinksType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = ReplayFileDeleteType; + type Value = SendAndTrackRemovedFileAndAssociatedLinksType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a ReplayFileDeleteType struct") + f.write_str("a SendAndTrackRemovedFileAndAssociatedLinksType struct") } fn visit_map>(self, map: V) -> Result { - ReplayFileDeleteType::internal_deserialize(map) + SendAndTrackRemovedFileAndAssociatedLinksType::internal_deserialize(map) } } - deserializer.deserialize_struct("ReplayFileDeleteType", REPLAY_FILE_DELETE_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("SendAndTrackRemovedFileAndAssociatedLinksType", SEND_AND_TRACK_REMOVED_FILE_AND_ASSOCIATED_LINKS_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for ReplayFileDeleteType { +impl ::serde::ser::Serialize for SendAndTrackRemovedFileAndAssociatedLinksType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("ReplayFileDeleteType", 1)?; + let mut s = serializer.serialize_struct("SendAndTrackRemovedFileAndAssociatedLinksType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Created shared link in Replay. -#[derive(Debug, Clone, PartialEq, Eq, Default)] +/// Policy for deciding whether team users can share Send content externally +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // variants may be added in the future +pub enum SendExternalSharingPolicy { + Default, + Disabled, + Enabled, + /// Catch-all used for unrecognized values returned from the server. Encountering this value + /// typically indicates that this SDK version is out of date. + Other, +} + +impl<'de> ::serde::de::Deserialize<'de> for SendExternalSharingPolicy { + fn deserialize>(deserializer: D) -> Result { + // union deserializer + use serde::de::{self, MapAccess, Visitor}; + struct EnumVisitor; + impl<'de> Visitor<'de> for EnumVisitor { + type Value = SendExternalSharingPolicy; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a SendExternalSharingPolicy structure") + } + fn visit_map>(self, mut map: V) -> Result { + let tag: &str = match map.next_key()? { + Some(".tag") => map.next_value()?, + _ => return Err(de::Error::missing_field(".tag")) + }; + let value = match tag { + "default" => SendExternalSharingPolicy::Default, + "disabled" => SendExternalSharingPolicy::Disabled, + "enabled" => SendExternalSharingPolicy::Enabled, + _ => SendExternalSharingPolicy::Other, + }; + crate::eat_json_fields(&mut map)?; + Ok(value) + } + } + const VARIANTS: &[&str] = &["default", + "disabled", + "enabled", + "other"]; + deserializer.deserialize_struct("SendExternalSharingPolicy", VARIANTS, EnumVisitor) + } +} + +impl ::serde::ser::Serialize for SendExternalSharingPolicy { + fn serialize(&self, serializer: S) -> Result { + // union serializer + use serde::ser::SerializeStruct; + match self { + SendExternalSharingPolicy::Default => { + // unit + let mut s = serializer.serialize_struct("SendExternalSharingPolicy", 1)?; + s.serialize_field(".tag", "default")?; + s.end() + } + SendExternalSharingPolicy::Disabled => { + // unit + let mut s = serializer.serialize_struct("SendExternalSharingPolicy", 1)?; + s.serialize_field(".tag", "disabled")?; + s.end() + } + SendExternalSharingPolicy::Enabled => { + // unit + let mut s = serializer.serialize_struct("SendExternalSharingPolicy", 1)?; + s.serialize_field(".tag", "enabled")?; + s.end() + } + SendExternalSharingPolicy::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) + } + } +} + +/// Changed “Send and track” external sharing policy for team. +#[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct ReplayFileSharedLinkCreatedDetails { +pub struct SendExternalSharingPolicyChangedDetails { + /// To. + pub new_value: SendExternalSharingPolicy, + /// From. + pub previous_value: SendExternalSharingPolicy, } -const REPLAY_FILE_SHARED_LINK_CREATED_DETAILS_FIELDS: &[&str] = &[]; -impl ReplayFileSharedLinkCreatedDetails { - // no _opt deserializer +impl SendExternalSharingPolicyChangedDetails { + pub fn new( + new_value: SendExternalSharingPolicy, + previous_value: SendExternalSharingPolicy, + ) -> Self { + SendExternalSharingPolicyChangedDetails { + new_value, + previous_value, + } + } +} + +const SEND_EXTERNAL_SHARING_POLICY_CHANGED_DETAILS_FIELDS: &[&str] = &["new_value", + "previous_value"]; +impl SendExternalSharingPolicyChangedDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - ) -> Result { - // ignore any fields found; none are presently recognized - crate::eat_json_fields(&mut map)?; - Ok(ReplayFileSharedLinkCreatedDetails {}) + optional: bool, + ) -> Result, V::Error> { + let mut field_new_value = None; + let mut field_previous_value = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "new_value" => { + if field_new_value.is_some() { + return Err(::serde::de::Error::duplicate_field("new_value")); + } + field_new_value = Some(map.next_value()?); + } + "previous_value" => { + if field_previous_value.is_some() { + return Err(::serde::de::Error::duplicate_field("previous_value")); + } + field_previous_value = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } + } + } + if optional && nothing { + return Ok(None); + } + let result = SendExternalSharingPolicyChangedDetails { + new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, + previous_value: field_previous_value.ok_or_else(|| ::serde::de::Error::missing_field("previous_value"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("new_value", &self.new_value)?; + s.serialize_field("previous_value", &self.previous_value)?; + Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for ReplayFileSharedLinkCreatedDetails { +impl<'de> ::serde::de::Deserialize<'de> for SendExternalSharingPolicyChangedDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = ReplayFileSharedLinkCreatedDetails; + type Value = SendExternalSharingPolicyChangedDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a ReplayFileSharedLinkCreatedDetails struct") + f.write_str("a SendExternalSharingPolicyChangedDetails struct") } fn visit_map>(self, map: V) -> Result { - ReplayFileSharedLinkCreatedDetails::internal_deserialize(map) + SendExternalSharingPolicyChangedDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("ReplayFileSharedLinkCreatedDetails", REPLAY_FILE_SHARED_LINK_CREATED_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("SendExternalSharingPolicyChangedDetails", SEND_EXTERNAL_SHARING_POLICY_CHANGED_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for ReplayFileSharedLinkCreatedDetails { +impl ::serde::ser::Serialize for SendExternalSharingPolicyChangedDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - serializer.serialize_struct("ReplayFileSharedLinkCreatedDetails", 0)?.end() + let mut s = serializer.serialize_struct("SendExternalSharingPolicyChangedDetails", 2)?; + self.internal_serialize::(&mut s)?; + s.end() } } #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct ReplayFileSharedLinkCreatedType { +pub struct SendExternalSharingPolicyChangedType { pub description: String, } -impl ReplayFileSharedLinkCreatedType { +impl SendExternalSharingPolicyChangedType { pub fn new(description: String) -> Self { - ReplayFileSharedLinkCreatedType { + SendExternalSharingPolicyChangedType { description, } } } -const REPLAY_FILE_SHARED_LINK_CREATED_TYPE_FIELDS: &[&str] = &["description"]; -impl ReplayFileSharedLinkCreatedType { +const SEND_EXTERNAL_SHARING_POLICY_CHANGED_TYPE_FIELDS: &[&str] = &["description"]; +impl SendExternalSharingPolicyChangedType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -82453,7 +104603,7 @@ impl ReplayFileSharedLinkCreatedType { if optional && nothing { return Ok(None); } - let result = ReplayFileSharedLinkCreatedType { + let result = SendExternalSharingPolicyChangedType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -82469,114 +104619,147 @@ impl ReplayFileSharedLinkCreatedType { } } -impl<'de> ::serde::de::Deserialize<'de> for ReplayFileSharedLinkCreatedType { +impl<'de> ::serde::de::Deserialize<'de> for SendExternalSharingPolicyChangedType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = ReplayFileSharedLinkCreatedType; + type Value = SendExternalSharingPolicyChangedType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a ReplayFileSharedLinkCreatedType struct") + f.write_str("a SendExternalSharingPolicyChangedType struct") } fn visit_map>(self, map: V) -> Result { - ReplayFileSharedLinkCreatedType::internal_deserialize(map) + SendExternalSharingPolicyChangedType::internal_deserialize(map) } } - deserializer.deserialize_struct("ReplayFileSharedLinkCreatedType", REPLAY_FILE_SHARED_LINK_CREATED_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("SendExternalSharingPolicyChangedType", SEND_EXTERNAL_SHARING_POLICY_CHANGED_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for ReplayFileSharedLinkCreatedType { +impl ::serde::ser::Serialize for SendExternalSharingPolicyChangedType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("ReplayFileSharedLinkCreatedType", 1)?; + let mut s = serializer.serialize_struct("SendExternalSharingPolicyChangedType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Modified shared link in Replay. -#[derive(Debug, Clone, PartialEq, Eq, Default)] -#[non_exhaustive] // structs may have more fields added in the future. -pub struct ReplayFileSharedLinkModifiedDetails { -} - -const REPLAY_FILE_SHARED_LINK_MODIFIED_DETAILS_FIELDS: &[&str] = &[]; -impl ReplayFileSharedLinkModifiedDetails { - // no _opt deserializer - pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( - mut map: V, - ) -> Result { - // ignore any fields found; none are presently recognized - crate::eat_json_fields(&mut map)?; - Ok(ReplayFileSharedLinkModifiedDetails {}) - } +/// Policy for controlling team access to send for signature feature +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // variants may be added in the future +pub enum SendForSignaturePolicy { + Disabled, + Enabled, + /// Catch-all used for unrecognized values returned from the server. Encountering this value + /// typically indicates that this SDK version is out of date. + Other, } -impl<'de> ::serde::de::Deserialize<'de> for ReplayFileSharedLinkModifiedDetails { +impl<'de> ::serde::de::Deserialize<'de> for SendForSignaturePolicy { fn deserialize>(deserializer: D) -> Result { - // struct deserializer - use serde::de::{MapAccess, Visitor}; - struct StructVisitor; - impl<'de> Visitor<'de> for StructVisitor { - type Value = ReplayFileSharedLinkModifiedDetails; + // union deserializer + use serde::de::{self, MapAccess, Visitor}; + struct EnumVisitor; + impl<'de> Visitor<'de> for EnumVisitor { + type Value = SendForSignaturePolicy; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a ReplayFileSharedLinkModifiedDetails struct") + f.write_str("a SendForSignaturePolicy structure") } - fn visit_map>(self, map: V) -> Result { - ReplayFileSharedLinkModifiedDetails::internal_deserialize(map) + fn visit_map>(self, mut map: V) -> Result { + let tag: &str = match map.next_key()? { + Some(".tag") => map.next_value()?, + _ => return Err(de::Error::missing_field(".tag")) + }; + let value = match tag { + "disabled" => SendForSignaturePolicy::Disabled, + "enabled" => SendForSignaturePolicy::Enabled, + _ => SendForSignaturePolicy::Other, + }; + crate::eat_json_fields(&mut map)?; + Ok(value) } } - deserializer.deserialize_struct("ReplayFileSharedLinkModifiedDetails", REPLAY_FILE_SHARED_LINK_MODIFIED_DETAILS_FIELDS, StructVisitor) + const VARIANTS: &[&str] = &["disabled", + "enabled", + "other"]; + deserializer.deserialize_struct("SendForSignaturePolicy", VARIANTS, EnumVisitor) } } -impl ::serde::ser::Serialize for ReplayFileSharedLinkModifiedDetails { +impl ::serde::ser::Serialize for SendForSignaturePolicy { fn serialize(&self, serializer: S) -> Result { - // struct serializer + // union serializer use serde::ser::SerializeStruct; - serializer.serialize_struct("ReplayFileSharedLinkModifiedDetails", 0)?.end() + match self { + SendForSignaturePolicy::Disabled => { + // unit + let mut s = serializer.serialize_struct("SendForSignaturePolicy", 1)?; + s.serialize_field(".tag", "disabled")?; + s.end() + } + SendForSignaturePolicy::Enabled => { + // unit + let mut s = serializer.serialize_struct("SendForSignaturePolicy", 1)?; + s.serialize_field(".tag", "enabled")?; + s.end() + } + SendForSignaturePolicy::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) + } } } +/// Changed send for signature policy for team. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct ReplayFileSharedLinkModifiedType { - pub description: String, +pub struct SendForSignaturePolicyChangedDetails { + /// New send for signature policy. + pub new_value: SendForSignaturePolicy, + /// Previous send for signature policy. + pub previous_value: SendForSignaturePolicy, } -impl ReplayFileSharedLinkModifiedType { - pub fn new(description: String) -> Self { - ReplayFileSharedLinkModifiedType { - description, +impl SendForSignaturePolicyChangedDetails { + pub fn new(new_value: SendForSignaturePolicy, previous_value: SendForSignaturePolicy) -> Self { + SendForSignaturePolicyChangedDetails { + new_value, + previous_value, } } } -const REPLAY_FILE_SHARED_LINK_MODIFIED_TYPE_FIELDS: &[&str] = &["description"]; -impl ReplayFileSharedLinkModifiedType { +const SEND_FOR_SIGNATURE_POLICY_CHANGED_DETAILS_FIELDS: &[&str] = &["new_value", + "previous_value"]; +impl SendForSignaturePolicyChangedDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_description = None; + ) -> Result, V::Error> { + let mut field_new_value = None; + let mut field_previous_value = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "description" => { - if field_description.is_some() { - return Err(::serde::de::Error::duplicate_field("description")); + "new_value" => { + if field_new_value.is_some() { + return Err(::serde::de::Error::duplicate_field("new_value")); } - field_description = Some(map.next_value()?); + field_new_value = Some(map.next_value()?); + } + "previous_value" => { + if field_previous_value.is_some() { + return Err(::serde::de::Error::duplicate_field("previous_value")); + } + field_previous_value = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -82587,8 +104770,9 @@ impl ReplayFileSharedLinkModifiedType { if optional && nothing { return Ok(None); } - let result = ReplayFileSharedLinkModifiedType { - description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + let result = SendForSignaturePolicyChangedDetails { + new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, + previous_value: field_previous_value.ok_or_else(|| ::serde::de::Error::missing_field("previous_value"))?, }; Ok(Some(result)) } @@ -82598,109 +104782,66 @@ impl ReplayFileSharedLinkModifiedType { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("description", &self.description)?; + s.serialize_field("new_value", &self.new_value)?; + s.serialize_field("previous_value", &self.previous_value)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for ReplayFileSharedLinkModifiedType { +impl<'de> ::serde::de::Deserialize<'de> for SendForSignaturePolicyChangedDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = ReplayFileSharedLinkModifiedType; + type Value = SendForSignaturePolicyChangedDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a ReplayFileSharedLinkModifiedType struct") + f.write_str("a SendForSignaturePolicyChangedDetails struct") } fn visit_map>(self, map: V) -> Result { - ReplayFileSharedLinkModifiedType::internal_deserialize(map) + SendForSignaturePolicyChangedDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("ReplayFileSharedLinkModifiedType", REPLAY_FILE_SHARED_LINK_MODIFIED_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("SendForSignaturePolicyChangedDetails", SEND_FOR_SIGNATURE_POLICY_CHANGED_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for ReplayFileSharedLinkModifiedType { +impl ::serde::ser::Serialize for SendForSignaturePolicyChangedDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("ReplayFileSharedLinkModifiedType", 1)?; + let mut s = serializer.serialize_struct("SendForSignaturePolicyChangedDetails", 2)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Added member to Replay Project. -#[derive(Debug, Clone, PartialEq, Eq, Default)] -#[non_exhaustive] // structs may have more fields added in the future. -pub struct ReplayProjectTeamAddDetails { -} - -const REPLAY_PROJECT_TEAM_ADD_DETAILS_FIELDS: &[&str] = &[]; -impl ReplayProjectTeamAddDetails { - // no _opt deserializer - pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( - mut map: V, - ) -> Result { - // ignore any fields found; none are presently recognized - crate::eat_json_fields(&mut map)?; - Ok(ReplayProjectTeamAddDetails {}) - } -} - -impl<'de> ::serde::de::Deserialize<'de> for ReplayProjectTeamAddDetails { - fn deserialize>(deserializer: D) -> Result { - // struct deserializer - use serde::de::{MapAccess, Visitor}; - struct StructVisitor; - impl<'de> Visitor<'de> for StructVisitor { - type Value = ReplayProjectTeamAddDetails; - fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a ReplayProjectTeamAddDetails struct") - } - fn visit_map>(self, map: V) -> Result { - ReplayProjectTeamAddDetails::internal_deserialize(map) - } - } - deserializer.deserialize_struct("ReplayProjectTeamAddDetails", REPLAY_PROJECT_TEAM_ADD_DETAILS_FIELDS, StructVisitor) - } -} - -impl ::serde::ser::Serialize for ReplayProjectTeamAddDetails { - fn serialize(&self, serializer: S) -> Result { - // struct serializer - use serde::ser::SerializeStruct; - serializer.serialize_struct("ReplayProjectTeamAddDetails", 0)?.end() - } -} - #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct ReplayProjectTeamAddType { +pub struct SendForSignaturePolicyChangedType { pub description: String, } -impl ReplayProjectTeamAddType { +impl SendForSignaturePolicyChangedType { pub fn new(description: String) -> Self { - ReplayProjectTeamAddType { + SendForSignaturePolicyChangedType { description, } } } -const REPLAY_PROJECT_TEAM_ADD_TYPE_FIELDS: &[&str] = &["description"]; -impl ReplayProjectTeamAddType { +const SEND_FOR_SIGNATURE_POLICY_CHANGED_TYPE_FIELDS: &[&str] = &["description"]; +impl SendForSignaturePolicyChangedType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -82721,7 +104862,7 @@ impl ReplayProjectTeamAddType { if optional && nothing { return Ok(None); } - let result = ReplayProjectTeamAddType { + let result = SendForSignaturePolicyChangedType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -82737,114 +104878,183 @@ impl ReplayProjectTeamAddType { } } -impl<'de> ::serde::de::Deserialize<'de> for ReplayProjectTeamAddType { +impl<'de> ::serde::de::Deserialize<'de> for SendForSignaturePolicyChangedType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = ReplayProjectTeamAddType; + type Value = SendForSignaturePolicyChangedType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a ReplayProjectTeamAddType struct") + f.write_str("a SendForSignaturePolicyChangedType struct") } fn visit_map>(self, map: V) -> Result { - ReplayProjectTeamAddType::internal_deserialize(map) + SendForSignaturePolicyChangedType::internal_deserialize(map) } } - deserializer.deserialize_struct("ReplayProjectTeamAddType", REPLAY_PROJECT_TEAM_ADD_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("SendForSignaturePolicyChangedType", SEND_FOR_SIGNATURE_POLICY_CHANGED_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for ReplayProjectTeamAddType { +impl ::serde::ser::Serialize for SendForSignaturePolicyChangedType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("ReplayProjectTeamAddType", 1)?; + let mut s = serializer.serialize_struct("SendForSignaturePolicyChangedType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Removed member from Replay Project. -#[derive(Debug, Clone, PartialEq, Eq, Default)] -#[non_exhaustive] // structs may have more fields added in the future. -pub struct ReplayProjectTeamDeleteDetails { -} - -const REPLAY_PROJECT_TEAM_DELETE_DETAILS_FIELDS: &[&str] = &[]; -impl ReplayProjectTeamDeleteDetails { - // no _opt deserializer - pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( - mut map: V, - ) -> Result { - // ignore any fields found; none are presently recognized - crate::eat_json_fields(&mut map)?; - Ok(ReplayProjectTeamDeleteDetails {}) - } +/// Session's logged information. +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // variants may be added in the future +pub enum SessionLogInfo { + Desktop(DesktopSessionLogInfo), + Mobile(MobileSessionLogInfo), + Web(WebSessionLogInfo), + /// Catch-all used for unrecognized values returned from the server. Encountering this value + /// typically indicates that this SDK version is out of date. + Other, } -impl<'de> ::serde::de::Deserialize<'de> for ReplayProjectTeamDeleteDetails { +impl<'de> ::serde::de::Deserialize<'de> for SessionLogInfo { fn deserialize>(deserializer: D) -> Result { - // struct deserializer - use serde::de::{MapAccess, Visitor}; - struct StructVisitor; - impl<'de> Visitor<'de> for StructVisitor { - type Value = ReplayProjectTeamDeleteDetails; + // polymorphic struct deserializer + use serde::de::{self, MapAccess, Visitor}; + struct EnumVisitor; + impl<'de> Visitor<'de> for EnumVisitor { + type Value = SessionLogInfo; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a ReplayProjectTeamDeleteDetails struct") + f.write_str("a SessionLogInfo structure") } - fn visit_map>(self, map: V) -> Result { - ReplayProjectTeamDeleteDetails::internal_deserialize(map) + fn visit_map>(self, mut map: V) -> Result { + let tag = match map.next_key()? { + Some(".tag") => map.next_value()?, + _ => return Err(de::Error::missing_field(".tag")) + }; + match tag { + "desktop" => Ok(SessionLogInfo::Desktop(DesktopSessionLogInfo::internal_deserialize(map)?)), + "mobile" => Ok(SessionLogInfo::Mobile(MobileSessionLogInfo::internal_deserialize(map)?)), + "web" => Ok(SessionLogInfo::Web(WebSessionLogInfo::internal_deserialize(map)?)), + _ => { + crate::eat_json_fields(&mut map)?; + Ok(SessionLogInfo::Other) + } + } } } - deserializer.deserialize_struct("ReplayProjectTeamDeleteDetails", REPLAY_PROJECT_TEAM_DELETE_DETAILS_FIELDS, StructVisitor) + const VARIANTS: &[&str] = &["desktop", + "mobile", + "web"]; + deserializer.deserialize_struct("SessionLogInfo", VARIANTS, EnumVisitor) } } -impl ::serde::ser::Serialize for ReplayProjectTeamDeleteDetails { +impl ::serde::ser::Serialize for SessionLogInfo { fn serialize(&self, serializer: S) -> Result { - // struct serializer + // polymorphic struct serializer use serde::ser::SerializeStruct; - serializer.serialize_struct("ReplayProjectTeamDeleteDetails", 0)?.end() + match self { + SessionLogInfo::Desktop(x) => { + let mut s = serializer.serialize_struct("SessionLogInfo", 2)?; + s.serialize_field(".tag", "desktop")?; + x.internal_serialize::(&mut s)?; + s.end() + } + SessionLogInfo::Mobile(x) => { + let mut s = serializer.serialize_struct("SessionLogInfo", 2)?; + s.serialize_field(".tag", "mobile")?; + x.internal_serialize::(&mut s)?; + s.end() + } + SessionLogInfo::Web(x) => { + let mut s = serializer.serialize_struct("SessionLogInfo", 2)?; + s.serialize_field(".tag", "web")?; + x.internal_serialize::(&mut s)?; + s.end() + } + SessionLogInfo::Other => Err(::serde::ser::Error::custom("cannot serialize unknown variant")) + } } } +/// Added team to shared folder. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct ReplayProjectTeamDeleteType { - pub description: String, +pub struct SfAddGroupDetails { + /// Target asset position in the Assets list. + pub target_asset_index: u64, + /// Original shared folder name. + pub original_folder_name: String, + /// Team name. + pub team_name: String, + /// Sharing permission. + pub sharing_permission: Option, } -impl ReplayProjectTeamDeleteType { - pub fn new(description: String) -> Self { - ReplayProjectTeamDeleteType { - description, +impl SfAddGroupDetails { + pub fn new(target_asset_index: u64, original_folder_name: String, team_name: String) -> Self { + SfAddGroupDetails { + target_asset_index, + original_folder_name, + team_name, + sharing_permission: None, } } + + pub fn with_sharing_permission(mut self, value: String) -> Self { + self.sharing_permission = Some(value); + self + } } -const REPLAY_PROJECT_TEAM_DELETE_TYPE_FIELDS: &[&str] = &["description"]; -impl ReplayProjectTeamDeleteType { +const SF_ADD_GROUP_DETAILS_FIELDS: &[&str] = &["target_asset_index", + "original_folder_name", + "team_name", + "sharing_permission"]; +impl SfAddGroupDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_description = None; + ) -> Result, V::Error> { + let mut field_target_asset_index = None; + let mut field_original_folder_name = None; + let mut field_team_name = None; + let mut field_sharing_permission = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "description" => { - if field_description.is_some() { - return Err(::serde::de::Error::duplicate_field("description")); + "target_asset_index" => { + if field_target_asset_index.is_some() { + return Err(::serde::de::Error::duplicate_field("target_asset_index")); } - field_description = Some(map.next_value()?); + field_target_asset_index = Some(map.next_value()?); + } + "original_folder_name" => { + if field_original_folder_name.is_some() { + return Err(::serde::de::Error::duplicate_field("original_folder_name")); + } + field_original_folder_name = Some(map.next_value()?); + } + "team_name" => { + if field_team_name.is_some() { + return Err(::serde::de::Error::duplicate_field("team_name")); + } + field_team_name = Some(map.next_value()?); + } + "sharing_permission" => { + if field_sharing_permission.is_some() { + return Err(::serde::de::Error::duplicate_field("sharing_permission")); + } + field_sharing_permission = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -82855,8 +105065,11 @@ impl ReplayProjectTeamDeleteType { if optional && nothing { return Ok(None); } - let result = ReplayProjectTeamDeleteType { - description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + let result = SfAddGroupDetails { + target_asset_index: field_target_asset_index.ok_or_else(|| ::serde::de::Error::missing_field("target_asset_index"))?, + original_folder_name: field_original_folder_name.ok_or_else(|| ::serde::de::Error::missing_field("original_folder_name"))?, + team_name: field_team_name.ok_or_else(|| ::serde::de::Error::missing_field("team_name"))?, + sharing_permission: field_sharing_permission.and_then(Option::flatten), }; Ok(Some(result)) } @@ -82866,88 +105079,80 @@ impl ReplayProjectTeamDeleteType { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("description", &self.description)?; + s.serialize_field("target_asset_index", &self.target_asset_index)?; + s.serialize_field("original_folder_name", &self.original_folder_name)?; + s.serialize_field("team_name", &self.team_name)?; + if let Some(val) = &self.sharing_permission { + s.serialize_field("sharing_permission", val)?; + } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for ReplayProjectTeamDeleteType { +impl<'de> ::serde::de::Deserialize<'de> for SfAddGroupDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = ReplayProjectTeamDeleteType; + type Value = SfAddGroupDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a ReplayProjectTeamDeleteType struct") + f.write_str("a SfAddGroupDetails struct") } fn visit_map>(self, map: V) -> Result { - ReplayProjectTeamDeleteType::internal_deserialize(map) + SfAddGroupDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("ReplayProjectTeamDeleteType", REPLAY_PROJECT_TEAM_DELETE_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("SfAddGroupDetails", SF_ADD_GROUP_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for ReplayProjectTeamDeleteType { +impl ::serde::ser::Serialize for SfAddGroupDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("ReplayProjectTeamDeleteType", 1)?; + let mut s = serializer.serialize_struct("SfAddGroupDetails", 4)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Reseller information. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct ResellerLogInfo { - /// Reseller name. - pub reseller_name: String, - /// Reseller email. - pub reseller_email: EmailAddress, +pub struct SfAddGroupType { + pub description: String, } -impl ResellerLogInfo { - pub fn new(reseller_name: String, reseller_email: EmailAddress) -> Self { - ResellerLogInfo { - reseller_name, - reseller_email, +impl SfAddGroupType { + pub fn new(description: String) -> Self { + SfAddGroupType { + description, } } } -const RESELLER_LOG_INFO_FIELDS: &[&str] = &["reseller_name", - "reseller_email"]; -impl ResellerLogInfo { +const SF_ADD_GROUP_TYPE_FIELDS: &[&str] = &["description"]; +impl SfAddGroupType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_reseller_name = None; - let mut field_reseller_email = None; + ) -> Result, V::Error> { + let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "reseller_name" => { - if field_reseller_name.is_some() { - return Err(::serde::de::Error::duplicate_field("reseller_name")); - } - field_reseller_name = Some(map.next_value()?); - } - "reseller_email" => { - if field_reseller_email.is_some() { - return Err(::serde::de::Error::duplicate_field("reseller_email")); + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); } - field_reseller_email = Some(map.next_value()?); + field_description = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -82958,9 +105163,8 @@ impl ResellerLogInfo { if optional && nothing { return Ok(None); } - let result = ResellerLogInfo { - reseller_name: field_reseller_name.ok_or_else(|| ::serde::de::Error::missing_field("reseller_name"))?, - reseller_email: field_reseller_email.ok_or_else(|| ::serde::de::Error::missing_field("reseller_email"))?, + let result = SfAddGroupType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) } @@ -82970,152 +105174,104 @@ impl ResellerLogInfo { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("reseller_name", &self.reseller_name)?; - s.serialize_field("reseller_email", &self.reseller_email)?; + s.serialize_field("description", &self.description)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for ResellerLogInfo { +impl<'de> ::serde::de::Deserialize<'de> for SfAddGroupType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = ResellerLogInfo; + type Value = SfAddGroupType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a ResellerLogInfo struct") + f.write_str("a SfAddGroupType struct") } fn visit_map>(self, map: V) -> Result { - ResellerLogInfo::internal_deserialize(map) + SfAddGroupType::internal_deserialize(map) } } - deserializer.deserialize_struct("ResellerLogInfo", RESELLER_LOG_INFO_FIELDS, StructVisitor) + deserializer.deserialize_struct("SfAddGroupType", SF_ADD_GROUP_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for ResellerLogInfo { +impl ::serde::ser::Serialize for SfAddGroupType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("ResellerLogInfo", 2)?; + let mut s = serializer.serialize_struct("SfAddGroupType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } +/// Allowed non-collaborators to view links to files in shared folder. #[derive(Debug, Clone, PartialEq, Eq)] -#[non_exhaustive] // variants may be added in the future -pub enum ResellerRole { - NotReseller, - ResellerAdmin, - /// Catch-all used for unrecognized values returned from the server. Encountering this value - /// typically indicates that this SDK version is out of date. - Other, -} - -impl<'de> ::serde::de::Deserialize<'de> for ResellerRole { - fn deserialize>(deserializer: D) -> Result { - // union deserializer - use serde::de::{self, MapAccess, Visitor}; - struct EnumVisitor; - impl<'de> Visitor<'de> for EnumVisitor { - type Value = ResellerRole; - fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a ResellerRole structure") - } - fn visit_map>(self, mut map: V) -> Result { - let tag: &str = match map.next_key()? { - Some(".tag") => map.next_value()?, - _ => return Err(de::Error::missing_field(".tag")) - }; - let value = match tag { - "not_reseller" => ResellerRole::NotReseller, - "reseller_admin" => ResellerRole::ResellerAdmin, - _ => ResellerRole::Other, - }; - crate::eat_json_fields(&mut map)?; - Ok(value) - } - } - const VARIANTS: &[&str] = &["not_reseller", - "reseller_admin", - "other"]; - deserializer.deserialize_struct("ResellerRole", VARIANTS, EnumVisitor) - } +#[non_exhaustive] // structs may have more fields added in the future. +pub struct SfAllowNonMembersToViewSharedLinksDetails { + /// Target asset position in the Assets list. + pub target_asset_index: u64, + /// Original shared folder name. + pub original_folder_name: String, + /// Shared folder type. + pub shared_folder_type: Option, } -impl ::serde::ser::Serialize for ResellerRole { - fn serialize(&self, serializer: S) -> Result { - // union serializer - use serde::ser::SerializeStruct; - match self { - ResellerRole::NotReseller => { - // unit - let mut s = serializer.serialize_struct("ResellerRole", 1)?; - s.serialize_field(".tag", "not_reseller")?; - s.end() - } - ResellerRole::ResellerAdmin => { - // unit - let mut s = serializer.serialize_struct("ResellerRole", 1)?; - s.serialize_field(".tag", "reseller_admin")?; - s.end() - } - ResellerRole::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) +impl SfAllowNonMembersToViewSharedLinksDetails { + pub fn new(target_asset_index: u64, original_folder_name: String) -> Self { + SfAllowNonMembersToViewSharedLinksDetails { + target_asset_index, + original_folder_name, + shared_folder_type: None, } } -} - -/// Enabled/disabled reseller support. -#[derive(Debug, Clone, PartialEq, Eq)] -#[non_exhaustive] // structs may have more fields added in the future. -pub struct ResellerSupportChangePolicyDetails { - /// New Reseller support policy. - pub new_value: ResellerSupportPolicy, - /// Previous Reseller support policy. - pub previous_value: ResellerSupportPolicy, -} -impl ResellerSupportChangePolicyDetails { - pub fn new(new_value: ResellerSupportPolicy, previous_value: ResellerSupportPolicy) -> Self { - ResellerSupportChangePolicyDetails { - new_value, - previous_value, - } + pub fn with_shared_folder_type(mut self, value: String) -> Self { + self.shared_folder_type = Some(value); + self } } -const RESELLER_SUPPORT_CHANGE_POLICY_DETAILS_FIELDS: &[&str] = &["new_value", - "previous_value"]; -impl ResellerSupportChangePolicyDetails { +const SF_ALLOW_NON_MEMBERS_TO_VIEW_SHARED_LINKS_DETAILS_FIELDS: &[&str] = &["target_asset_index", + "original_folder_name", + "shared_folder_type"]; +impl SfAllowNonMembersToViewSharedLinksDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_new_value = None; - let mut field_previous_value = None; + ) -> Result, V::Error> { + let mut field_target_asset_index = None; + let mut field_original_folder_name = None; + let mut field_shared_folder_type = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "new_value" => { - if field_new_value.is_some() { - return Err(::serde::de::Error::duplicate_field("new_value")); + "target_asset_index" => { + if field_target_asset_index.is_some() { + return Err(::serde::de::Error::duplicate_field("target_asset_index")); } - field_new_value = Some(map.next_value()?); + field_target_asset_index = Some(map.next_value()?); } - "previous_value" => { - if field_previous_value.is_some() { - return Err(::serde::de::Error::duplicate_field("previous_value")); + "original_folder_name" => { + if field_original_folder_name.is_some() { + return Err(::serde::de::Error::duplicate_field("original_folder_name")); } - field_previous_value = Some(map.next_value()?); + field_original_folder_name = Some(map.next_value()?); + } + "shared_folder_type" => { + if field_shared_folder_type.is_some() { + return Err(::serde::de::Error::duplicate_field("shared_folder_type")); + } + field_shared_folder_type = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -83126,9 +105282,10 @@ impl ResellerSupportChangePolicyDetails { if optional && nothing { return Ok(None); } - let result = ResellerSupportChangePolicyDetails { - new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, - previous_value: field_previous_value.ok_or_else(|| ::serde::de::Error::missing_field("previous_value"))?, + let result = SfAllowNonMembersToViewSharedLinksDetails { + target_asset_index: field_target_asset_index.ok_or_else(|| ::serde::de::Error::missing_field("target_asset_index"))?, + original_folder_name: field_original_folder_name.ok_or_else(|| ::serde::de::Error::missing_field("original_folder_name"))?, + shared_folder_type: field_shared_folder_type.and_then(Option::flatten), }; Ok(Some(result)) } @@ -83138,35 +105295,38 @@ impl ResellerSupportChangePolicyDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("new_value", &self.new_value)?; - s.serialize_field("previous_value", &self.previous_value)?; + s.serialize_field("target_asset_index", &self.target_asset_index)?; + s.serialize_field("original_folder_name", &self.original_folder_name)?; + if let Some(val) = &self.shared_folder_type { + s.serialize_field("shared_folder_type", val)?; + } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for ResellerSupportChangePolicyDetails { +impl<'de> ::serde::de::Deserialize<'de> for SfAllowNonMembersToViewSharedLinksDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = ResellerSupportChangePolicyDetails; + type Value = SfAllowNonMembersToViewSharedLinksDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a ResellerSupportChangePolicyDetails struct") + f.write_str("a SfAllowNonMembersToViewSharedLinksDetails struct") } fn visit_map>(self, map: V) -> Result { - ResellerSupportChangePolicyDetails::internal_deserialize(map) + SfAllowNonMembersToViewSharedLinksDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("ResellerSupportChangePolicyDetails", RESELLER_SUPPORT_CHANGE_POLICY_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("SfAllowNonMembersToViewSharedLinksDetails", SF_ALLOW_NON_MEMBERS_TO_VIEW_SHARED_LINKS_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for ResellerSupportChangePolicyDetails { +impl ::serde::ser::Serialize for SfAllowNonMembersToViewSharedLinksDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("ResellerSupportChangePolicyDetails", 2)?; + let mut s = serializer.serialize_struct("SfAllowNonMembersToViewSharedLinksDetails", 3)?; self.internal_serialize::(&mut s)?; s.end() } @@ -83174,30 +105334,30 @@ impl ::serde::ser::Serialize for ResellerSupportChangePolicyDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct ResellerSupportChangePolicyType { +pub struct SfAllowNonMembersToViewSharedLinksType { pub description: String, } -impl ResellerSupportChangePolicyType { +impl SfAllowNonMembersToViewSharedLinksType { pub fn new(description: String) -> Self { - ResellerSupportChangePolicyType { + SfAllowNonMembersToViewSharedLinksType { description, } } } -const RESELLER_SUPPORT_CHANGE_POLICY_TYPE_FIELDS: &[&str] = &["description"]; -impl ResellerSupportChangePolicyType { +const SF_ALLOW_NON_MEMBERS_TO_VIEW_SHARED_LINKS_TYPE_FIELDS: &[&str] = &["description"]; +impl SfAllowNonMembersToViewSharedLinksType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -83218,7 +105378,7 @@ impl ResellerSupportChangePolicyType { if optional && nothing { return Ok(None); } - let result = ResellerSupportChangePolicyType { + let result = SfAllowNonMembersToViewSharedLinksType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -83234,168 +105394,205 @@ impl ResellerSupportChangePolicyType { } } -impl<'de> ::serde::de::Deserialize<'de> for ResellerSupportChangePolicyType { +impl<'de> ::serde::de::Deserialize<'de> for SfAllowNonMembersToViewSharedLinksType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = ResellerSupportChangePolicyType; + type Value = SfAllowNonMembersToViewSharedLinksType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a ResellerSupportChangePolicyType struct") + f.write_str("a SfAllowNonMembersToViewSharedLinksType struct") } fn visit_map>(self, map: V) -> Result { - ResellerSupportChangePolicyType::internal_deserialize(map) + SfAllowNonMembersToViewSharedLinksType::internal_deserialize(map) } } - deserializer.deserialize_struct("ResellerSupportChangePolicyType", RESELLER_SUPPORT_CHANGE_POLICY_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("SfAllowNonMembersToViewSharedLinksType", SF_ALLOW_NON_MEMBERS_TO_VIEW_SHARED_LINKS_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for ResellerSupportChangePolicyType { +impl ::serde::ser::Serialize for SfAllowNonMembersToViewSharedLinksType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("ResellerSupportChangePolicyType", 1)?; + let mut s = serializer.serialize_struct("SfAllowNonMembersToViewSharedLinksType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Policy for controlling if reseller can access the admin console as administrator +/// Set team members to see warning before sharing folders outside team. #[derive(Debug, Clone, PartialEq, Eq)] -#[non_exhaustive] // variants may be added in the future -pub enum ResellerSupportPolicy { - Disabled, - Enabled, - /// Catch-all used for unrecognized values returned from the server. Encountering this value - /// typically indicates that this SDK version is out of date. - Other, +#[non_exhaustive] // structs may have more fields added in the future. +pub struct SfExternalInviteWarnDetails { + /// Target asset position in the Assets list. + pub target_asset_index: u64, + /// Original shared folder name. + pub original_folder_name: String, + /// New sharing permission. + pub new_sharing_permission: Option, + /// Previous sharing permission. + pub previous_sharing_permission: Option, } -impl<'de> ::serde::de::Deserialize<'de> for ResellerSupportPolicy { - fn deserialize>(deserializer: D) -> Result { - // union deserializer - use serde::de::{self, MapAccess, Visitor}; - struct EnumVisitor; - impl<'de> Visitor<'de> for EnumVisitor { - type Value = ResellerSupportPolicy; - fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a ResellerSupportPolicy structure") - } - fn visit_map>(self, mut map: V) -> Result { - let tag: &str = match map.next_key()? { - Some(".tag") => map.next_value()?, - _ => return Err(de::Error::missing_field(".tag")) - }; - let value = match tag { - "disabled" => ResellerSupportPolicy::Disabled, - "enabled" => ResellerSupportPolicy::Enabled, - _ => ResellerSupportPolicy::Other, - }; - crate::eat_json_fields(&mut map)?; - Ok(value) - } +impl SfExternalInviteWarnDetails { + pub fn new(target_asset_index: u64, original_folder_name: String) -> Self { + SfExternalInviteWarnDetails { + target_asset_index, + original_folder_name, + new_sharing_permission: None, + previous_sharing_permission: None, } - const VARIANTS: &[&str] = &["disabled", - "enabled", - "other"]; - deserializer.deserialize_struct("ResellerSupportPolicy", VARIANTS, EnumVisitor) } -} -impl ::serde::ser::Serialize for ResellerSupportPolicy { - fn serialize(&self, serializer: S) -> Result { - // union serializer - use serde::ser::SerializeStruct; - match self { - ResellerSupportPolicy::Disabled => { - // unit - let mut s = serializer.serialize_struct("ResellerSupportPolicy", 1)?; - s.serialize_field(".tag", "disabled")?; - s.end() - } - ResellerSupportPolicy::Enabled => { - // unit - let mut s = serializer.serialize_struct("ResellerSupportPolicy", 1)?; - s.serialize_field(".tag", "enabled")?; - s.end() - } - ResellerSupportPolicy::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) - } + pub fn with_new_sharing_permission(mut self, value: String) -> Self { + self.new_sharing_permission = Some(value); + self } -} -/// Ended reseller support session. -#[derive(Debug, Clone, PartialEq, Eq, Default)] -#[non_exhaustive] // structs may have more fields added in the future. -pub struct ResellerSupportSessionEndDetails { + pub fn with_previous_sharing_permission(mut self, value: String) -> Self { + self.previous_sharing_permission = Some(value); + self + } } -const RESELLER_SUPPORT_SESSION_END_DETAILS_FIELDS: &[&str] = &[]; -impl ResellerSupportSessionEndDetails { - // no _opt deserializer +const SF_EXTERNAL_INVITE_WARN_DETAILS_FIELDS: &[&str] = &["target_asset_index", + "original_folder_name", + "new_sharing_permission", + "previous_sharing_permission"]; +impl SfExternalInviteWarnDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - ) -> Result { - // ignore any fields found; none are presently recognized - crate::eat_json_fields(&mut map)?; - Ok(ResellerSupportSessionEndDetails {}) + optional: bool, + ) -> Result, V::Error> { + let mut field_target_asset_index = None; + let mut field_original_folder_name = None; + let mut field_new_sharing_permission = None; + let mut field_previous_sharing_permission = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "target_asset_index" => { + if field_target_asset_index.is_some() { + return Err(::serde::de::Error::duplicate_field("target_asset_index")); + } + field_target_asset_index = Some(map.next_value()?); + } + "original_folder_name" => { + if field_original_folder_name.is_some() { + return Err(::serde::de::Error::duplicate_field("original_folder_name")); + } + field_original_folder_name = Some(map.next_value()?); + } + "new_sharing_permission" => { + if field_new_sharing_permission.is_some() { + return Err(::serde::de::Error::duplicate_field("new_sharing_permission")); + } + field_new_sharing_permission = Some(map.next_value()?); + } + "previous_sharing_permission" => { + if field_previous_sharing_permission.is_some() { + return Err(::serde::de::Error::duplicate_field("previous_sharing_permission")); + } + field_previous_sharing_permission = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } + } + } + if optional && nothing { + return Ok(None); + } + let result = SfExternalInviteWarnDetails { + target_asset_index: field_target_asset_index.ok_or_else(|| ::serde::de::Error::missing_field("target_asset_index"))?, + original_folder_name: field_original_folder_name.ok_or_else(|| ::serde::de::Error::missing_field("original_folder_name"))?, + new_sharing_permission: field_new_sharing_permission.and_then(Option::flatten), + previous_sharing_permission: field_previous_sharing_permission.and_then(Option::flatten), + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("target_asset_index", &self.target_asset_index)?; + s.serialize_field("original_folder_name", &self.original_folder_name)?; + if let Some(val) = &self.new_sharing_permission { + s.serialize_field("new_sharing_permission", val)?; + } + if let Some(val) = &self.previous_sharing_permission { + s.serialize_field("previous_sharing_permission", val)?; + } + Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for ResellerSupportSessionEndDetails { +impl<'de> ::serde::de::Deserialize<'de> for SfExternalInviteWarnDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = ResellerSupportSessionEndDetails; + type Value = SfExternalInviteWarnDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a ResellerSupportSessionEndDetails struct") + f.write_str("a SfExternalInviteWarnDetails struct") } fn visit_map>(self, map: V) -> Result { - ResellerSupportSessionEndDetails::internal_deserialize(map) + SfExternalInviteWarnDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("ResellerSupportSessionEndDetails", RESELLER_SUPPORT_SESSION_END_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("SfExternalInviteWarnDetails", SF_EXTERNAL_INVITE_WARN_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for ResellerSupportSessionEndDetails { +impl ::serde::ser::Serialize for SfExternalInviteWarnDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - serializer.serialize_struct("ResellerSupportSessionEndDetails", 0)?.end() + let mut s = serializer.serialize_struct("SfExternalInviteWarnDetails", 4)?; + self.internal_serialize::(&mut s)?; + s.end() } } #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct ResellerSupportSessionEndType { +pub struct SfExternalInviteWarnType { pub description: String, } -impl ResellerSupportSessionEndType { +impl SfExternalInviteWarnType { pub fn new(description: String) -> Self { - ResellerSupportSessionEndType { + SfExternalInviteWarnType { description, } } } -const RESELLER_SUPPORT_SESSION_END_TYPE_FIELDS: &[&str] = &["description"]; -impl ResellerSupportSessionEndType { +const SF_EXTERNAL_INVITE_WARN_TYPE_FIELDS: &[&str] = &["description"]; +impl SfExternalInviteWarnType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -83416,7 +105613,7 @@ impl ResellerSupportSessionEndType { if optional && nothing { return Ok(None); } - let result = ResellerSupportSessionEndType { + let result = SfExternalInviteWarnType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -83432,104 +105629,205 @@ impl ResellerSupportSessionEndType { } } -impl<'de> ::serde::de::Deserialize<'de> for ResellerSupportSessionEndType { +impl<'de> ::serde::de::Deserialize<'de> for SfExternalInviteWarnType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = ResellerSupportSessionEndType; + type Value = SfExternalInviteWarnType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a ResellerSupportSessionEndType struct") + f.write_str("a SfExternalInviteWarnType struct") } fn visit_map>(self, map: V) -> Result { - ResellerSupportSessionEndType::internal_deserialize(map) + SfExternalInviteWarnType::internal_deserialize(map) } } - deserializer.deserialize_struct("ResellerSupportSessionEndType", RESELLER_SUPPORT_SESSION_END_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("SfExternalInviteWarnType", SF_EXTERNAL_INVITE_WARN_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for ResellerSupportSessionEndType { +impl ::serde::ser::Serialize for SfExternalInviteWarnType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("ResellerSupportSessionEndType", 1)?; + let mut s = serializer.serialize_struct("SfExternalInviteWarnType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Started reseller support session. -#[derive(Debug, Clone, PartialEq, Eq, Default)] +/// Changed Facebook user's role in shared folder. +#[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct ResellerSupportSessionStartDetails { +pub struct SfFbInviteChangeRoleDetails { + /// Target asset position in the Assets list. + pub target_asset_index: u64, + /// Original shared folder name. + pub original_folder_name: String, + /// Previous sharing permission. + pub previous_sharing_permission: Option, + /// New sharing permission. + pub new_sharing_permission: Option, } -const RESELLER_SUPPORT_SESSION_START_DETAILS_FIELDS: &[&str] = &[]; -impl ResellerSupportSessionStartDetails { - // no _opt deserializer +impl SfFbInviteChangeRoleDetails { + pub fn new(target_asset_index: u64, original_folder_name: String) -> Self { + SfFbInviteChangeRoleDetails { + target_asset_index, + original_folder_name, + previous_sharing_permission: None, + new_sharing_permission: None, + } + } + + pub fn with_previous_sharing_permission(mut self, value: String) -> Self { + self.previous_sharing_permission = Some(value); + self + } + + pub fn with_new_sharing_permission(mut self, value: String) -> Self { + self.new_sharing_permission = Some(value); + self + } +} + +const SF_FB_INVITE_CHANGE_ROLE_DETAILS_FIELDS: &[&str] = &["target_asset_index", + "original_folder_name", + "previous_sharing_permission", + "new_sharing_permission"]; +impl SfFbInviteChangeRoleDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - ) -> Result { - // ignore any fields found; none are presently recognized - crate::eat_json_fields(&mut map)?; - Ok(ResellerSupportSessionStartDetails {}) + optional: bool, + ) -> Result, V::Error> { + let mut field_target_asset_index = None; + let mut field_original_folder_name = None; + let mut field_previous_sharing_permission = None; + let mut field_new_sharing_permission = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "target_asset_index" => { + if field_target_asset_index.is_some() { + return Err(::serde::de::Error::duplicate_field("target_asset_index")); + } + field_target_asset_index = Some(map.next_value()?); + } + "original_folder_name" => { + if field_original_folder_name.is_some() { + return Err(::serde::de::Error::duplicate_field("original_folder_name")); + } + field_original_folder_name = Some(map.next_value()?); + } + "previous_sharing_permission" => { + if field_previous_sharing_permission.is_some() { + return Err(::serde::de::Error::duplicate_field("previous_sharing_permission")); + } + field_previous_sharing_permission = Some(map.next_value()?); + } + "new_sharing_permission" => { + if field_new_sharing_permission.is_some() { + return Err(::serde::de::Error::duplicate_field("new_sharing_permission")); + } + field_new_sharing_permission = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } + } + } + if optional && nothing { + return Ok(None); + } + let result = SfFbInviteChangeRoleDetails { + target_asset_index: field_target_asset_index.ok_or_else(|| ::serde::de::Error::missing_field("target_asset_index"))?, + original_folder_name: field_original_folder_name.ok_or_else(|| ::serde::de::Error::missing_field("original_folder_name"))?, + previous_sharing_permission: field_previous_sharing_permission.and_then(Option::flatten), + new_sharing_permission: field_new_sharing_permission.and_then(Option::flatten), + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("target_asset_index", &self.target_asset_index)?; + s.serialize_field("original_folder_name", &self.original_folder_name)?; + if let Some(val) = &self.previous_sharing_permission { + s.serialize_field("previous_sharing_permission", val)?; + } + if let Some(val) = &self.new_sharing_permission { + s.serialize_field("new_sharing_permission", val)?; + } + Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for ResellerSupportSessionStartDetails { +impl<'de> ::serde::de::Deserialize<'de> for SfFbInviteChangeRoleDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = ResellerSupportSessionStartDetails; + type Value = SfFbInviteChangeRoleDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a ResellerSupportSessionStartDetails struct") + f.write_str("a SfFbInviteChangeRoleDetails struct") } fn visit_map>(self, map: V) -> Result { - ResellerSupportSessionStartDetails::internal_deserialize(map) + SfFbInviteChangeRoleDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("ResellerSupportSessionStartDetails", RESELLER_SUPPORT_SESSION_START_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("SfFbInviteChangeRoleDetails", SF_FB_INVITE_CHANGE_ROLE_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for ResellerSupportSessionStartDetails { +impl ::serde::ser::Serialize for SfFbInviteChangeRoleDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - serializer.serialize_struct("ResellerSupportSessionStartDetails", 0)?.end() + let mut s = serializer.serialize_struct("SfFbInviteChangeRoleDetails", 4)?; + self.internal_serialize::(&mut s)?; + s.end() } } #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct ResellerSupportSessionStartType { +pub struct SfFbInviteChangeRoleType { pub description: String, } -impl ResellerSupportSessionStartType { +impl SfFbInviteChangeRoleType { pub fn new(description: String) -> Self { - ResellerSupportSessionStartType { + SfFbInviteChangeRoleType { description, } } } -const RESELLER_SUPPORT_SESSION_START_TYPE_FIELDS: &[&str] = &["description"]; -impl ResellerSupportSessionStartType { +const SF_FB_INVITE_CHANGE_ROLE_TYPE_FIELDS: &[&str] = &["description"]; +impl SfFbInviteChangeRoleType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -83550,7 +105848,7 @@ impl ResellerSupportSessionStartType { if optional && nothing { return Ok(None); } - let result = ResellerSupportSessionStartType { + let result = SfFbInviteChangeRoleType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -83566,72 +105864,99 @@ impl ResellerSupportSessionStartType { } } -impl<'de> ::serde::de::Deserialize<'de> for ResellerSupportSessionStartType { +impl<'de> ::serde::de::Deserialize<'de> for SfFbInviteChangeRoleType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = ResellerSupportSessionStartType; + type Value = SfFbInviteChangeRoleType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a ResellerSupportSessionStartType struct") + f.write_str("a SfFbInviteChangeRoleType struct") } fn visit_map>(self, map: V) -> Result { - ResellerSupportSessionStartType::internal_deserialize(map) + SfFbInviteChangeRoleType::internal_deserialize(map) } } - deserializer.deserialize_struct("ResellerSupportSessionStartType", RESELLER_SUPPORT_SESSION_START_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("SfFbInviteChangeRoleType", SF_FB_INVITE_CHANGE_ROLE_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for ResellerSupportSessionStartType { +impl ::serde::ser::Serialize for SfFbInviteChangeRoleType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("ResellerSupportSessionStartType", 1)?; + let mut s = serializer.serialize_struct("SfFbInviteChangeRoleType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Rewound a folder. +/// Invited Facebook users to shared folder. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct RewindFolderDetails { - /// Folder was Rewound to this date. - pub rewind_folder_target_ts_ms: crate::types::common::DropboxTimestamp, +pub struct SfFbInviteDetails { + /// Target asset position in the Assets list. + pub target_asset_index: u64, + /// Original shared folder name. + pub original_folder_name: String, + /// Sharing permission. + pub sharing_permission: Option, } -impl RewindFolderDetails { - pub fn new(rewind_folder_target_ts_ms: crate::types::common::DropboxTimestamp) -> Self { - RewindFolderDetails { - rewind_folder_target_ts_ms, +impl SfFbInviteDetails { + pub fn new(target_asset_index: u64, original_folder_name: String) -> Self { + SfFbInviteDetails { + target_asset_index, + original_folder_name, + sharing_permission: None, } } + + pub fn with_sharing_permission(mut self, value: String) -> Self { + self.sharing_permission = Some(value); + self + } } -const REWIND_FOLDER_DETAILS_FIELDS: &[&str] = &["rewind_folder_target_ts_ms"]; -impl RewindFolderDetails { +const SF_FB_INVITE_DETAILS_FIELDS: &[&str] = &["target_asset_index", + "original_folder_name", + "sharing_permission"]; +impl SfFbInviteDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_rewind_folder_target_ts_ms = None; + ) -> Result, V::Error> { + let mut field_target_asset_index = None; + let mut field_original_folder_name = None; + let mut field_sharing_permission = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "rewind_folder_target_ts_ms" => { - if field_rewind_folder_target_ts_ms.is_some() { - return Err(::serde::de::Error::duplicate_field("rewind_folder_target_ts_ms")); + "target_asset_index" => { + if field_target_asset_index.is_some() { + return Err(::serde::de::Error::duplicate_field("target_asset_index")); } - field_rewind_folder_target_ts_ms = Some(map.next_value()?); + field_target_asset_index = Some(map.next_value()?); + } + "original_folder_name" => { + if field_original_folder_name.is_some() { + return Err(::serde::de::Error::duplicate_field("original_folder_name")); + } + field_original_folder_name = Some(map.next_value()?); + } + "sharing_permission" => { + if field_sharing_permission.is_some() { + return Err(::serde::de::Error::duplicate_field("sharing_permission")); + } + field_sharing_permission = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -83642,8 +105967,10 @@ impl RewindFolderDetails { if optional && nothing { return Ok(None); } - let result = RewindFolderDetails { - rewind_folder_target_ts_ms: field_rewind_folder_target_ts_ms.ok_or_else(|| ::serde::de::Error::missing_field("rewind_folder_target_ts_ms"))?, + let result = SfFbInviteDetails { + target_asset_index: field_target_asset_index.ok_or_else(|| ::serde::de::Error::missing_field("target_asset_index"))?, + original_folder_name: field_original_folder_name.ok_or_else(|| ::serde::de::Error::missing_field("original_folder_name"))?, + sharing_permission: field_sharing_permission.and_then(Option::flatten), }; Ok(Some(result)) } @@ -83653,34 +105980,38 @@ impl RewindFolderDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("rewind_folder_target_ts_ms", &self.rewind_folder_target_ts_ms)?; + s.serialize_field("target_asset_index", &self.target_asset_index)?; + s.serialize_field("original_folder_name", &self.original_folder_name)?; + if let Some(val) = &self.sharing_permission { + s.serialize_field("sharing_permission", val)?; + } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for RewindFolderDetails { +impl<'de> ::serde::de::Deserialize<'de> for SfFbInviteDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = RewindFolderDetails; + type Value = SfFbInviteDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a RewindFolderDetails struct") + f.write_str("a SfFbInviteDetails struct") } fn visit_map>(self, map: V) -> Result { - RewindFolderDetails::internal_deserialize(map) + SfFbInviteDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("RewindFolderDetails", REWIND_FOLDER_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("SfFbInviteDetails", SF_FB_INVITE_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for RewindFolderDetails { +impl ::serde::ser::Serialize for SfFbInviteDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("RewindFolderDetails", 1)?; + let mut s = serializer.serialize_struct("SfFbInviteDetails", 3)?; self.internal_serialize::(&mut s)?; s.end() } @@ -83688,30 +106019,30 @@ impl ::serde::ser::Serialize for RewindFolderDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct RewindFolderType { +pub struct SfFbInviteType { pub description: String, } -impl RewindFolderType { +impl SfFbInviteType { pub fn new(description: String) -> Self { - RewindFolderType { + SfFbInviteType { description, } } } -const REWIND_FOLDER_TYPE_FIELDS: &[&str] = &["description"]; -impl RewindFolderType { +const SF_FB_INVITE_TYPE_FIELDS: &[&str] = &["description"]; +impl SfFbInviteType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -83732,7 +106063,7 @@ impl RewindFolderType { if optional && nothing { return Ok(None); } - let result = RewindFolderType { + let result = SfFbInviteType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -83748,147 +106079,83 @@ impl RewindFolderType { } } -impl<'de> ::serde::de::Deserialize<'de> for RewindFolderType { +impl<'de> ::serde::de::Deserialize<'de> for SfFbInviteType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = RewindFolderType; + type Value = SfFbInviteType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a RewindFolderType struct") + f.write_str("a SfFbInviteType struct") } fn visit_map>(self, map: V) -> Result { - RewindFolderType::internal_deserialize(map) + SfFbInviteType::internal_deserialize(map) } } - deserializer.deserialize_struct("RewindFolderType", REWIND_FOLDER_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("SfFbInviteType", SF_FB_INVITE_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for RewindFolderType { +impl ::serde::ser::Serialize for SfFbInviteType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("RewindFolderType", 1)?; + let mut s = serializer.serialize_struct("SfFbInviteType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Policy for controlling whether team members can rewind -#[derive(Debug, Clone, PartialEq, Eq)] -#[non_exhaustive] // variants may be added in the future -pub enum RewindPolicy { - AdminsOnly, - Everyone, - /// Catch-all used for unrecognized values returned from the server. Encountering this value - /// typically indicates that this SDK version is out of date. - Other, -} - -impl<'de> ::serde::de::Deserialize<'de> for RewindPolicy { - fn deserialize>(deserializer: D) -> Result { - // union deserializer - use serde::de::{self, MapAccess, Visitor}; - struct EnumVisitor; - impl<'de> Visitor<'de> for EnumVisitor { - type Value = RewindPolicy; - fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a RewindPolicy structure") - } - fn visit_map>(self, mut map: V) -> Result { - let tag: &str = match map.next_key()? { - Some(".tag") => map.next_value()?, - _ => return Err(de::Error::missing_field(".tag")) - }; - let value = match tag { - "admins_only" => RewindPolicy::AdminsOnly, - "everyone" => RewindPolicy::Everyone, - _ => RewindPolicy::Other, - }; - crate::eat_json_fields(&mut map)?; - Ok(value) - } - } - const VARIANTS: &[&str] = &["admins_only", - "everyone", - "other"]; - deserializer.deserialize_struct("RewindPolicy", VARIANTS, EnumVisitor) - } -} - -impl ::serde::ser::Serialize for RewindPolicy { - fn serialize(&self, serializer: S) -> Result { - // union serializer - use serde::ser::SerializeStruct; - match self { - RewindPolicy::AdminsOnly => { - // unit - let mut s = serializer.serialize_struct("RewindPolicy", 1)?; - s.serialize_field(".tag", "admins_only")?; - s.end() - } - RewindPolicy::Everyone => { - // unit - let mut s = serializer.serialize_struct("RewindPolicy", 1)?; - s.serialize_field(".tag", "everyone")?; - s.end() - } - RewindPolicy::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) - } - } -} - -/// Changed Rewind policy for team. +/// Uninvited Facebook user from shared folder. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct RewindPolicyChangedDetails { - /// New Dropbox Rewind policy. - pub new_value: RewindPolicy, - /// Previous Dropbox Rewind policy. - pub previous_value: RewindPolicy, +pub struct SfFbUninviteDetails { + /// Target asset position in the Assets list. + pub target_asset_index: u64, + /// Original shared folder name. + pub original_folder_name: String, } -impl RewindPolicyChangedDetails { - pub fn new(new_value: RewindPolicy, previous_value: RewindPolicy) -> Self { - RewindPolicyChangedDetails { - new_value, - previous_value, +impl SfFbUninviteDetails { + pub fn new(target_asset_index: u64, original_folder_name: String) -> Self { + SfFbUninviteDetails { + target_asset_index, + original_folder_name, } } } -const REWIND_POLICY_CHANGED_DETAILS_FIELDS: &[&str] = &["new_value", - "previous_value"]; -impl RewindPolicyChangedDetails { +const SF_FB_UNINVITE_DETAILS_FIELDS: &[&str] = &["target_asset_index", + "original_folder_name"]; +impl SfFbUninviteDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_new_value = None; - let mut field_previous_value = None; + ) -> Result, V::Error> { + let mut field_target_asset_index = None; + let mut field_original_folder_name = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "new_value" => { - if field_new_value.is_some() { - return Err(::serde::de::Error::duplicate_field("new_value")); + "target_asset_index" => { + if field_target_asset_index.is_some() { + return Err(::serde::de::Error::duplicate_field("target_asset_index")); } - field_new_value = Some(map.next_value()?); + field_target_asset_index = Some(map.next_value()?); } - "previous_value" => { - if field_previous_value.is_some() { - return Err(::serde::de::Error::duplicate_field("previous_value")); + "original_folder_name" => { + if field_original_folder_name.is_some() { + return Err(::serde::de::Error::duplicate_field("original_folder_name")); } - field_previous_value = Some(map.next_value()?); + field_original_folder_name = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -83899,9 +106166,9 @@ impl RewindPolicyChangedDetails { if optional && nothing { return Ok(None); } - let result = RewindPolicyChangedDetails { - new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, - previous_value: field_previous_value.ok_or_else(|| ::serde::de::Error::missing_field("previous_value"))?, + let result = SfFbUninviteDetails { + target_asset_index: field_target_asset_index.ok_or_else(|| ::serde::de::Error::missing_field("target_asset_index"))?, + original_folder_name: field_original_folder_name.ok_or_else(|| ::serde::de::Error::missing_field("original_folder_name"))?, }; Ok(Some(result)) } @@ -83911,35 +106178,35 @@ impl RewindPolicyChangedDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("new_value", &self.new_value)?; - s.serialize_field("previous_value", &self.previous_value)?; + s.serialize_field("target_asset_index", &self.target_asset_index)?; + s.serialize_field("original_folder_name", &self.original_folder_name)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for RewindPolicyChangedDetails { +impl<'de> ::serde::de::Deserialize<'de> for SfFbUninviteDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = RewindPolicyChangedDetails; + type Value = SfFbUninviteDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a RewindPolicyChangedDetails struct") + f.write_str("a SfFbUninviteDetails struct") } fn visit_map>(self, map: V) -> Result { - RewindPolicyChangedDetails::internal_deserialize(map) + SfFbUninviteDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("RewindPolicyChangedDetails", REWIND_POLICY_CHANGED_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("SfFbUninviteDetails", SF_FB_UNINVITE_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for RewindPolicyChangedDetails { +impl ::serde::ser::Serialize for SfFbUninviteDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("RewindPolicyChangedDetails", 2)?; + let mut s = serializer.serialize_struct("SfFbUninviteDetails", 2)?; self.internal_serialize::(&mut s)?; s.end() } @@ -83947,30 +106214,30 @@ impl ::serde::ser::Serialize for RewindPolicyChangedDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct RewindPolicyChangedType { +pub struct SfFbUninviteType { pub description: String, } -impl RewindPolicyChangedType { +impl SfFbUninviteType { pub fn new(description: String) -> Self { - RewindPolicyChangedType { + SfFbUninviteType { description, } } } -const REWIND_POLICY_CHANGED_TYPE_FIELDS: &[&str] = &["description"]; -impl RewindPolicyChangedType { +const SF_FB_UNINVITE_TYPE_FIELDS: &[&str] = &["description"]; +impl SfFbUninviteType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -83991,7 +106258,7 @@ impl RewindPolicyChangedType { if optional && nothing { return Ok(None); } - let result = RewindPolicyChangedType { + let result = SfFbUninviteType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -84007,72 +106274,72 @@ impl RewindPolicyChangedType { } } -impl<'de> ::serde::de::Deserialize<'de> for RewindPolicyChangedType { +impl<'de> ::serde::de::Deserialize<'de> for SfFbUninviteType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = RewindPolicyChangedType; + type Value = SfFbUninviteType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a RewindPolicyChangedType struct") + f.write_str("a SfFbUninviteType struct") } fn visit_map>(self, map: V) -> Result { - RewindPolicyChangedType::internal_deserialize(map) + SfFbUninviteType::internal_deserialize(map) } } - deserializer.deserialize_struct("RewindPolicyChangedType", REWIND_POLICY_CHANGED_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("SfFbUninviteType", SF_FB_UNINVITE_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for RewindPolicyChangedType { +impl ::serde::ser::Serialize for SfFbUninviteType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("RewindPolicyChangedType", 1)?; + let mut s = serializer.serialize_struct("SfFbUninviteType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Deleted secondary email. +/// Invited group to shared folder. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SecondaryEmailDeletedDetails { - /// Deleted secondary email. - pub secondary_email: EmailAddress, +pub struct SfInviteGroupDetails { + /// Target asset position in the Assets list. + pub target_asset_index: u64, } -impl SecondaryEmailDeletedDetails { - pub fn new(secondary_email: EmailAddress) -> Self { - SecondaryEmailDeletedDetails { - secondary_email, +impl SfInviteGroupDetails { + pub fn new(target_asset_index: u64) -> Self { + SfInviteGroupDetails { + target_asset_index, } } } -const SECONDARY_EMAIL_DELETED_DETAILS_FIELDS: &[&str] = &["secondary_email"]; -impl SecondaryEmailDeletedDetails { +const SF_INVITE_GROUP_DETAILS_FIELDS: &[&str] = &["target_asset_index"]; +impl SfInviteGroupDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_secondary_email = None; + ) -> Result, V::Error> { + let mut field_target_asset_index = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "secondary_email" => { - if field_secondary_email.is_some() { - return Err(::serde::de::Error::duplicate_field("secondary_email")); + "target_asset_index" => { + if field_target_asset_index.is_some() { + return Err(::serde::de::Error::duplicate_field("target_asset_index")); } - field_secondary_email = Some(map.next_value()?); + field_target_asset_index = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -84083,8 +106350,8 @@ impl SecondaryEmailDeletedDetails { if optional && nothing { return Ok(None); } - let result = SecondaryEmailDeletedDetails { - secondary_email: field_secondary_email.ok_or_else(|| ::serde::de::Error::missing_field("secondary_email"))?, + let result = SfInviteGroupDetails { + target_asset_index: field_target_asset_index.ok_or_else(|| ::serde::de::Error::missing_field("target_asset_index"))?, }; Ok(Some(result)) } @@ -84094,34 +106361,34 @@ impl SecondaryEmailDeletedDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("secondary_email", &self.secondary_email)?; + s.serialize_field("target_asset_index", &self.target_asset_index)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for SecondaryEmailDeletedDetails { +impl<'de> ::serde::de::Deserialize<'de> for SfInviteGroupDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SecondaryEmailDeletedDetails; + type Value = SfInviteGroupDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SecondaryEmailDeletedDetails struct") + f.write_str("a SfInviteGroupDetails struct") } fn visit_map>(self, map: V) -> Result { - SecondaryEmailDeletedDetails::internal_deserialize(map) + SfInviteGroupDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("SecondaryEmailDeletedDetails", SECONDARY_EMAIL_DELETED_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("SfInviteGroupDetails", SF_INVITE_GROUP_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SecondaryEmailDeletedDetails { +impl ::serde::ser::Serialize for SfInviteGroupDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SecondaryEmailDeletedDetails", 1)?; + let mut s = serializer.serialize_struct("SfInviteGroupDetails", 1)?; self.internal_serialize::(&mut s)?; s.end() } @@ -84129,30 +106396,30 @@ impl ::serde::ser::Serialize for SecondaryEmailDeletedDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SecondaryEmailDeletedType { +pub struct SfInviteGroupType { pub description: String, } -impl SecondaryEmailDeletedType { +impl SfInviteGroupType { pub fn new(description: String) -> Self { - SecondaryEmailDeletedType { + SfInviteGroupType { description, } } } -const SECONDARY_EMAIL_DELETED_TYPE_FIELDS: &[&str] = &["description"]; -impl SecondaryEmailDeletedType { +const SF_INVITE_GROUP_TYPE_FIELDS: &[&str] = &["description"]; +impl SfInviteGroupType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -84173,7 +106440,7 @@ impl SecondaryEmailDeletedType { if optional && nothing { return Ok(None); } - let result = SecondaryEmailDeletedType { + let result = SfInviteGroupType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -84189,72 +106456,83 @@ impl SecondaryEmailDeletedType { } } -impl<'de> ::serde::de::Deserialize<'de> for SecondaryEmailDeletedType { +impl<'de> ::serde::de::Deserialize<'de> for SfInviteGroupType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SecondaryEmailDeletedType; + type Value = SfInviteGroupType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SecondaryEmailDeletedType struct") + f.write_str("a SfInviteGroupType struct") } fn visit_map>(self, map: V) -> Result { - SecondaryEmailDeletedType::internal_deserialize(map) + SfInviteGroupType::internal_deserialize(map) } } - deserializer.deserialize_struct("SecondaryEmailDeletedType", SECONDARY_EMAIL_DELETED_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("SfInviteGroupType", SF_INVITE_GROUP_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SecondaryEmailDeletedType { +impl ::serde::ser::Serialize for SfInviteGroupType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SecondaryEmailDeletedType", 1)?; + let mut s = serializer.serialize_struct("SfInviteGroupType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Verified secondary email. +/// Granted access to shared folder. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SecondaryEmailVerifiedDetails { - /// Verified secondary email. - pub secondary_email: EmailAddress, +pub struct SfTeamGrantAccessDetails { + /// Target asset position in the Assets list. + pub target_asset_index: u64, + /// Original shared folder name. + pub original_folder_name: String, } -impl SecondaryEmailVerifiedDetails { - pub fn new(secondary_email: EmailAddress) -> Self { - SecondaryEmailVerifiedDetails { - secondary_email, +impl SfTeamGrantAccessDetails { + pub fn new(target_asset_index: u64, original_folder_name: String) -> Self { + SfTeamGrantAccessDetails { + target_asset_index, + original_folder_name, } } } -const SECONDARY_EMAIL_VERIFIED_DETAILS_FIELDS: &[&str] = &["secondary_email"]; -impl SecondaryEmailVerifiedDetails { +const SF_TEAM_GRANT_ACCESS_DETAILS_FIELDS: &[&str] = &["target_asset_index", + "original_folder_name"]; +impl SfTeamGrantAccessDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_secondary_email = None; + ) -> Result, V::Error> { + let mut field_target_asset_index = None; + let mut field_original_folder_name = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "secondary_email" => { - if field_secondary_email.is_some() { - return Err(::serde::de::Error::duplicate_field("secondary_email")); + "target_asset_index" => { + if field_target_asset_index.is_some() { + return Err(::serde::de::Error::duplicate_field("target_asset_index")); } - field_secondary_email = Some(map.next_value()?); + field_target_asset_index = Some(map.next_value()?); + } + "original_folder_name" => { + if field_original_folder_name.is_some() { + return Err(::serde::de::Error::duplicate_field("original_folder_name")); + } + field_original_folder_name = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -84265,8 +106543,9 @@ impl SecondaryEmailVerifiedDetails { if optional && nothing { return Ok(None); } - let result = SecondaryEmailVerifiedDetails { - secondary_email: field_secondary_email.ok_or_else(|| ::serde::de::Error::missing_field("secondary_email"))?, + let result = SfTeamGrantAccessDetails { + target_asset_index: field_target_asset_index.ok_or_else(|| ::serde::de::Error::missing_field("target_asset_index"))?, + original_folder_name: field_original_folder_name.ok_or_else(|| ::serde::de::Error::missing_field("original_folder_name"))?, }; Ok(Some(result)) } @@ -84276,34 +106555,35 @@ impl SecondaryEmailVerifiedDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("secondary_email", &self.secondary_email)?; + s.serialize_field("target_asset_index", &self.target_asset_index)?; + s.serialize_field("original_folder_name", &self.original_folder_name)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for SecondaryEmailVerifiedDetails { +impl<'de> ::serde::de::Deserialize<'de> for SfTeamGrantAccessDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SecondaryEmailVerifiedDetails; + type Value = SfTeamGrantAccessDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SecondaryEmailVerifiedDetails struct") + f.write_str("a SfTeamGrantAccessDetails struct") } fn visit_map>(self, map: V) -> Result { - SecondaryEmailVerifiedDetails::internal_deserialize(map) + SfTeamGrantAccessDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("SecondaryEmailVerifiedDetails", SECONDARY_EMAIL_VERIFIED_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("SfTeamGrantAccessDetails", SF_TEAM_GRANT_ACCESS_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SecondaryEmailVerifiedDetails { +impl ::serde::ser::Serialize for SfTeamGrantAccessDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SecondaryEmailVerifiedDetails", 1)?; + let mut s = serializer.serialize_struct("SfTeamGrantAccessDetails", 2)?; self.internal_serialize::(&mut s)?; s.end() } @@ -84311,30 +106591,30 @@ impl ::serde::ser::Serialize for SecondaryEmailVerifiedDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SecondaryEmailVerifiedType { +pub struct SfTeamGrantAccessType { pub description: String, } -impl SecondaryEmailVerifiedType { +impl SfTeamGrantAccessType { pub fn new(description: String) -> Self { - SecondaryEmailVerifiedType { + SfTeamGrantAccessType { description, } } } -const SECONDARY_EMAIL_VERIFIED_TYPE_FIELDS: &[&str] = &["description"]; -impl SecondaryEmailVerifiedType { +const SF_TEAM_GRANT_ACCESS_TYPE_FIELDS: &[&str] = &["description"]; +impl SfTeamGrantAccessType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -84355,7 +106635,7 @@ impl SecondaryEmailVerifiedType { if optional && nothing { return Ok(None); } - let result = SecondaryEmailVerifiedType { + let result = SfTeamGrantAccessType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -84371,146 +106651,115 @@ impl SecondaryEmailVerifiedType { } } -impl<'de> ::serde::de::Deserialize<'de> for SecondaryEmailVerifiedType { +impl<'de> ::serde::de::Deserialize<'de> for SfTeamGrantAccessType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SecondaryEmailVerifiedType; + type Value = SfTeamGrantAccessType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SecondaryEmailVerifiedType struct") + f.write_str("a SfTeamGrantAccessType struct") } fn visit_map>(self, map: V) -> Result { - SecondaryEmailVerifiedType::internal_deserialize(map) + SfTeamGrantAccessType::internal_deserialize(map) } } - deserializer.deserialize_struct("SecondaryEmailVerifiedType", SECONDARY_EMAIL_VERIFIED_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("SfTeamGrantAccessType", SF_TEAM_GRANT_ACCESS_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SecondaryEmailVerifiedType { +impl ::serde::ser::Serialize for SfTeamGrantAccessType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SecondaryEmailVerifiedType", 1)?; + let mut s = serializer.serialize_struct("SfTeamGrantAccessType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -#[derive(Debug, Clone, PartialEq, Eq)] -#[non_exhaustive] // variants may be added in the future -pub enum SecondaryMailsPolicy { - Disabled, - Enabled, - /// Catch-all used for unrecognized values returned from the server. Encountering this value - /// typically indicates that this SDK version is out of date. - Other, -} - -impl<'de> ::serde::de::Deserialize<'de> for SecondaryMailsPolicy { - fn deserialize>(deserializer: D) -> Result { - // union deserializer - use serde::de::{self, MapAccess, Visitor}; - struct EnumVisitor; - impl<'de> Visitor<'de> for EnumVisitor { - type Value = SecondaryMailsPolicy; - fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SecondaryMailsPolicy structure") - } - fn visit_map>(self, mut map: V) -> Result { - let tag: &str = match map.next_key()? { - Some(".tag") => map.next_value()?, - _ => return Err(de::Error::missing_field(".tag")) - }; - let value = match tag { - "disabled" => SecondaryMailsPolicy::Disabled, - "enabled" => SecondaryMailsPolicy::Enabled, - _ => SecondaryMailsPolicy::Other, - }; - crate::eat_json_fields(&mut map)?; - Ok(value) - } - } - const VARIANTS: &[&str] = &["disabled", - "enabled", - "other"]; - deserializer.deserialize_struct("SecondaryMailsPolicy", VARIANTS, EnumVisitor) - } -} - -impl ::serde::ser::Serialize for SecondaryMailsPolicy { - fn serialize(&self, serializer: S) -> Result { - // union serializer - use serde::ser::SerializeStruct; - match self { - SecondaryMailsPolicy::Disabled => { - // unit - let mut s = serializer.serialize_struct("SecondaryMailsPolicy", 1)?; - s.serialize_field(".tag", "disabled")?; - s.end() - } - SecondaryMailsPolicy::Enabled => { - // unit - let mut s = serializer.serialize_struct("SecondaryMailsPolicy", 1)?; - s.serialize_field(".tag", "enabled")?; - s.end() - } - SecondaryMailsPolicy::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) - } - } -} - -/// Secondary mails policy changed. +/// Changed team member's role in shared folder. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SecondaryMailsPolicyChangedDetails { - /// Previous secondary mails policy. - pub previous_value: SecondaryMailsPolicy, - /// New secondary mails policy. - pub new_value: SecondaryMailsPolicy, +pub struct SfTeamInviteChangeRoleDetails { + /// Target asset position in the Assets list. + pub target_asset_index: u64, + /// Original shared folder name. + pub original_folder_name: String, + /// New sharing permission. + pub new_sharing_permission: Option, + /// Previous sharing permission. + pub previous_sharing_permission: Option, } -impl SecondaryMailsPolicyChangedDetails { - pub fn new(previous_value: SecondaryMailsPolicy, new_value: SecondaryMailsPolicy) -> Self { - SecondaryMailsPolicyChangedDetails { - previous_value, - new_value, +impl SfTeamInviteChangeRoleDetails { + pub fn new(target_asset_index: u64, original_folder_name: String) -> Self { + SfTeamInviteChangeRoleDetails { + target_asset_index, + original_folder_name, + new_sharing_permission: None, + previous_sharing_permission: None, } } + + pub fn with_new_sharing_permission(mut self, value: String) -> Self { + self.new_sharing_permission = Some(value); + self + } + + pub fn with_previous_sharing_permission(mut self, value: String) -> Self { + self.previous_sharing_permission = Some(value); + self + } } -const SECONDARY_MAILS_POLICY_CHANGED_DETAILS_FIELDS: &[&str] = &["previous_value", - "new_value"]; -impl SecondaryMailsPolicyChangedDetails { +const SF_TEAM_INVITE_CHANGE_ROLE_DETAILS_FIELDS: &[&str] = &["target_asset_index", + "original_folder_name", + "new_sharing_permission", + "previous_sharing_permission"]; +impl SfTeamInviteChangeRoleDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_previous_value = None; - let mut field_new_value = None; + ) -> Result, V::Error> { + let mut field_target_asset_index = None; + let mut field_original_folder_name = None; + let mut field_new_sharing_permission = None; + let mut field_previous_sharing_permission = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "previous_value" => { - if field_previous_value.is_some() { - return Err(::serde::de::Error::duplicate_field("previous_value")); + "target_asset_index" => { + if field_target_asset_index.is_some() { + return Err(::serde::de::Error::duplicate_field("target_asset_index")); } - field_previous_value = Some(map.next_value()?); + field_target_asset_index = Some(map.next_value()?); } - "new_value" => { - if field_new_value.is_some() { - return Err(::serde::de::Error::duplicate_field("new_value")); + "original_folder_name" => { + if field_original_folder_name.is_some() { + return Err(::serde::de::Error::duplicate_field("original_folder_name")); } - field_new_value = Some(map.next_value()?); + field_original_folder_name = Some(map.next_value()?); + } + "new_sharing_permission" => { + if field_new_sharing_permission.is_some() { + return Err(::serde::de::Error::duplicate_field("new_sharing_permission")); + } + field_new_sharing_permission = Some(map.next_value()?); + } + "previous_sharing_permission" => { + if field_previous_sharing_permission.is_some() { + return Err(::serde::de::Error::duplicate_field("previous_sharing_permission")); + } + field_previous_sharing_permission = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -84521,9 +106770,11 @@ impl SecondaryMailsPolicyChangedDetails { if optional && nothing { return Ok(None); } - let result = SecondaryMailsPolicyChangedDetails { - previous_value: field_previous_value.ok_or_else(|| ::serde::de::Error::missing_field("previous_value"))?, - new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, + let result = SfTeamInviteChangeRoleDetails { + target_asset_index: field_target_asset_index.ok_or_else(|| ::serde::de::Error::missing_field("target_asset_index"))?, + original_folder_name: field_original_folder_name.ok_or_else(|| ::serde::de::Error::missing_field("original_folder_name"))?, + new_sharing_permission: field_new_sharing_permission.and_then(Option::flatten), + previous_sharing_permission: field_previous_sharing_permission.and_then(Option::flatten), }; Ok(Some(result)) } @@ -84533,35 +106784,41 @@ impl SecondaryMailsPolicyChangedDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("previous_value", &self.previous_value)?; - s.serialize_field("new_value", &self.new_value)?; + s.serialize_field("target_asset_index", &self.target_asset_index)?; + s.serialize_field("original_folder_name", &self.original_folder_name)?; + if let Some(val) = &self.new_sharing_permission { + s.serialize_field("new_sharing_permission", val)?; + } + if let Some(val) = &self.previous_sharing_permission { + s.serialize_field("previous_sharing_permission", val)?; + } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for SecondaryMailsPolicyChangedDetails { +impl<'de> ::serde::de::Deserialize<'de> for SfTeamInviteChangeRoleDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SecondaryMailsPolicyChangedDetails; + type Value = SfTeamInviteChangeRoleDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SecondaryMailsPolicyChangedDetails struct") + f.write_str("a SfTeamInviteChangeRoleDetails struct") } fn visit_map>(self, map: V) -> Result { - SecondaryMailsPolicyChangedDetails::internal_deserialize(map) + SfTeamInviteChangeRoleDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("SecondaryMailsPolicyChangedDetails", SECONDARY_MAILS_POLICY_CHANGED_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("SfTeamInviteChangeRoleDetails", SF_TEAM_INVITE_CHANGE_ROLE_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SecondaryMailsPolicyChangedDetails { +impl ::serde::ser::Serialize for SfTeamInviteChangeRoleDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SecondaryMailsPolicyChangedDetails", 2)?; + let mut s = serializer.serialize_struct("SfTeamInviteChangeRoleDetails", 4)?; self.internal_serialize::(&mut s)?; s.end() } @@ -84569,30 +106826,30 @@ impl ::serde::ser::Serialize for SecondaryMailsPolicyChangedDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SecondaryMailsPolicyChangedType { +pub struct SfTeamInviteChangeRoleType { pub description: String, } -impl SecondaryMailsPolicyChangedType { +impl SfTeamInviteChangeRoleType { pub fn new(description: String) -> Self { - SecondaryMailsPolicyChangedType { + SfTeamInviteChangeRoleType { description, } } } -const SECONDARY_MAILS_POLICY_CHANGED_TYPE_FIELDS: &[&str] = &["description"]; -impl SecondaryMailsPolicyChangedType { +const SF_TEAM_INVITE_CHANGE_ROLE_TYPE_FIELDS: &[&str] = &["description"]; +impl SfTeamInviteChangeRoleType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -84613,7 +106870,7 @@ impl SecondaryMailsPolicyChangedType { if optional && nothing { return Ok(None); } - let result = SecondaryMailsPolicyChangedType { + let result = SfTeamInviteChangeRoleType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -84629,83 +106886,99 @@ impl SecondaryMailsPolicyChangedType { } } -impl<'de> ::serde::de::Deserialize<'de> for SecondaryMailsPolicyChangedType { +impl<'de> ::serde::de::Deserialize<'de> for SfTeamInviteChangeRoleType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SecondaryMailsPolicyChangedType; + type Value = SfTeamInviteChangeRoleType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SecondaryMailsPolicyChangedType struct") + f.write_str("a SfTeamInviteChangeRoleType struct") } fn visit_map>(self, map: V) -> Result { - SecondaryMailsPolicyChangedType::internal_deserialize(map) + SfTeamInviteChangeRoleType::internal_deserialize(map) } } - deserializer.deserialize_struct("SecondaryMailsPolicyChangedType", SECONDARY_MAILS_POLICY_CHANGED_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("SfTeamInviteChangeRoleType", SF_TEAM_INVITE_CHANGE_ROLE_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SecondaryMailsPolicyChangedType { +impl ::serde::ser::Serialize for SfTeamInviteChangeRoleType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SecondaryMailsPolicyChangedType", 1)?; + let mut s = serializer.serialize_struct("SfTeamInviteChangeRoleType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Team merge request acceptance details shown to the secondary team +/// Invited team members to shared folder. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SecondaryTeamRequestAcceptedDetails { - /// The primary team name. - pub primary_team: String, - /// The name of the secondary team admin who sent the request originally. - pub sent_by: String, +pub struct SfTeamInviteDetails { + /// Target asset position in the Assets list. + pub target_asset_index: u64, + /// Original shared folder name. + pub original_folder_name: String, + /// Sharing permission. + pub sharing_permission: Option, } -impl SecondaryTeamRequestAcceptedDetails { - pub fn new(primary_team: String, sent_by: String) -> Self { - SecondaryTeamRequestAcceptedDetails { - primary_team, - sent_by, +impl SfTeamInviteDetails { + pub fn new(target_asset_index: u64, original_folder_name: String) -> Self { + SfTeamInviteDetails { + target_asset_index, + original_folder_name, + sharing_permission: None, } } + + pub fn with_sharing_permission(mut self, value: String) -> Self { + self.sharing_permission = Some(value); + self + } } -const SECONDARY_TEAM_REQUEST_ACCEPTED_DETAILS_FIELDS: &[&str] = &["primary_team", - "sent_by"]; -impl SecondaryTeamRequestAcceptedDetails { +const SF_TEAM_INVITE_DETAILS_FIELDS: &[&str] = &["target_asset_index", + "original_folder_name", + "sharing_permission"]; +impl SfTeamInviteDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_primary_team = None; - let mut field_sent_by = None; + ) -> Result, V::Error> { + let mut field_target_asset_index = None; + let mut field_original_folder_name = None; + let mut field_sharing_permission = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "primary_team" => { - if field_primary_team.is_some() { - return Err(::serde::de::Error::duplicate_field("primary_team")); + "target_asset_index" => { + if field_target_asset_index.is_some() { + return Err(::serde::de::Error::duplicate_field("target_asset_index")); } - field_primary_team = Some(map.next_value()?); + field_target_asset_index = Some(map.next_value()?); } - "sent_by" => { - if field_sent_by.is_some() { - return Err(::serde::de::Error::duplicate_field("sent_by")); + "original_folder_name" => { + if field_original_folder_name.is_some() { + return Err(::serde::de::Error::duplicate_field("original_folder_name")); } - field_sent_by = Some(map.next_value()?); + field_original_folder_name = Some(map.next_value()?); + } + "sharing_permission" => { + if field_sharing_permission.is_some() { + return Err(::serde::de::Error::duplicate_field("sharing_permission")); + } + field_sharing_permission = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -84716,9 +106989,10 @@ impl SecondaryTeamRequestAcceptedDetails { if optional && nothing { return Ok(None); } - let result = SecondaryTeamRequestAcceptedDetails { - primary_team: field_primary_team.ok_or_else(|| ::serde::de::Error::missing_field("primary_team"))?, - sent_by: field_sent_by.ok_or_else(|| ::serde::de::Error::missing_field("sent_by"))?, + let result = SfTeamInviteDetails { + target_asset_index: field_target_asset_index.ok_or_else(|| ::serde::de::Error::missing_field("target_asset_index"))?, + original_folder_name: field_original_folder_name.ok_or_else(|| ::serde::de::Error::missing_field("original_folder_name"))?, + sharing_permission: field_sharing_permission.and_then(Option::flatten), }; Ok(Some(result)) } @@ -84728,89 +107002,79 @@ impl SecondaryTeamRequestAcceptedDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("primary_team", &self.primary_team)?; - s.serialize_field("sent_by", &self.sent_by)?; + s.serialize_field("target_asset_index", &self.target_asset_index)?; + s.serialize_field("original_folder_name", &self.original_folder_name)?; + if let Some(val) = &self.sharing_permission { + s.serialize_field("sharing_permission", val)?; + } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for SecondaryTeamRequestAcceptedDetails { +impl<'de> ::serde::de::Deserialize<'de> for SfTeamInviteDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SecondaryTeamRequestAcceptedDetails; + type Value = SfTeamInviteDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SecondaryTeamRequestAcceptedDetails struct") + f.write_str("a SfTeamInviteDetails struct") } fn visit_map>(self, map: V) -> Result { - SecondaryTeamRequestAcceptedDetails::internal_deserialize(map) + SfTeamInviteDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("SecondaryTeamRequestAcceptedDetails", SECONDARY_TEAM_REQUEST_ACCEPTED_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("SfTeamInviteDetails", SF_TEAM_INVITE_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SecondaryTeamRequestAcceptedDetails { +impl ::serde::ser::Serialize for SfTeamInviteDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SecondaryTeamRequestAcceptedDetails", 2)?; + let mut s = serializer.serialize_struct("SfTeamInviteDetails", 3)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Team merge request cancellation details shown to the secondary team #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SecondaryTeamRequestCanceledDetails { - /// The email of the primary team admin that the request was sent to. - pub sent_to: String, - /// The name of the secondary team admin who sent the request originally. - pub sent_by: String, +pub struct SfTeamInviteType { + pub description: String, } -impl SecondaryTeamRequestCanceledDetails { - pub fn new(sent_to: String, sent_by: String) -> Self { - SecondaryTeamRequestCanceledDetails { - sent_to, - sent_by, +impl SfTeamInviteType { + pub fn new(description: String) -> Self { + SfTeamInviteType { + description, } } } -const SECONDARY_TEAM_REQUEST_CANCELED_DETAILS_FIELDS: &[&str] = &["sent_to", - "sent_by"]; -impl SecondaryTeamRequestCanceledDetails { +const SF_TEAM_INVITE_TYPE_FIELDS: &[&str] = &["description"]; +impl SfTeamInviteType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_sent_to = None; - let mut field_sent_by = None; + ) -> Result, V::Error> { + let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "sent_to" => { - if field_sent_to.is_some() { - return Err(::serde::de::Error::duplicate_field("sent_to")); - } - field_sent_to = Some(map.next_value()?); - } - "sent_by" => { - if field_sent_by.is_some() { - return Err(::serde::de::Error::duplicate_field("sent_by")); + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); } - field_sent_by = Some(map.next_value()?); + field_description = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -84821,9 +107085,8 @@ impl SecondaryTeamRequestCanceledDetails { if optional && nothing { return Ok(None); } - let result = SecondaryTeamRequestCanceledDetails { - sent_to: field_sent_to.ok_or_else(|| ::serde::de::Error::missing_field("sent_to"))?, - sent_by: field_sent_by.ok_or_else(|| ::serde::de::Error::missing_field("sent_by"))?, + let result = SfTeamInviteType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) } @@ -84833,78 +107096,88 @@ impl SecondaryTeamRequestCanceledDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("sent_to", &self.sent_to)?; - s.serialize_field("sent_by", &self.sent_by)?; + s.serialize_field("description", &self.description)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for SecondaryTeamRequestCanceledDetails { +impl<'de> ::serde::de::Deserialize<'de> for SfTeamInviteType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SecondaryTeamRequestCanceledDetails; + type Value = SfTeamInviteType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SecondaryTeamRequestCanceledDetails struct") + f.write_str("a SfTeamInviteType struct") } fn visit_map>(self, map: V) -> Result { - SecondaryTeamRequestCanceledDetails::internal_deserialize(map) + SfTeamInviteType::internal_deserialize(map) } } - deserializer.deserialize_struct("SecondaryTeamRequestCanceledDetails", SECONDARY_TEAM_REQUEST_CANCELED_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("SfTeamInviteType", SF_TEAM_INVITE_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SecondaryTeamRequestCanceledDetails { +impl ::serde::ser::Serialize for SfTeamInviteType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SecondaryTeamRequestCanceledDetails", 2)?; + let mut s = serializer.serialize_struct("SfTeamInviteType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Team merge request expiration details shown to the secondary team +/// Joined team member's shared folder. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SecondaryTeamRequestExpiredDetails { - /// The email of the primary team admin the request was sent to. - pub sent_to: String, +pub struct SfTeamJoinDetails { + /// Target asset position in the Assets list. + pub target_asset_index: u64, + /// Original shared folder name. + pub original_folder_name: String, } -impl SecondaryTeamRequestExpiredDetails { - pub fn new(sent_to: String) -> Self { - SecondaryTeamRequestExpiredDetails { - sent_to, +impl SfTeamJoinDetails { + pub fn new(target_asset_index: u64, original_folder_name: String) -> Self { + SfTeamJoinDetails { + target_asset_index, + original_folder_name, } } } -const SECONDARY_TEAM_REQUEST_EXPIRED_DETAILS_FIELDS: &[&str] = &["sent_to"]; -impl SecondaryTeamRequestExpiredDetails { +const SF_TEAM_JOIN_DETAILS_FIELDS: &[&str] = &["target_asset_index", + "original_folder_name"]; +impl SfTeamJoinDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_sent_to = None; + ) -> Result, V::Error> { + let mut field_target_asset_index = None; + let mut field_original_folder_name = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "sent_to" => { - if field_sent_to.is_some() { - return Err(::serde::de::Error::duplicate_field("sent_to")); + "target_asset_index" => { + if field_target_asset_index.is_some() { + return Err(::serde::de::Error::duplicate_field("target_asset_index")); } - field_sent_to = Some(map.next_value()?); + field_target_asset_index = Some(map.next_value()?); + } + "original_folder_name" => { + if field_original_folder_name.is_some() { + return Err(::serde::de::Error::duplicate_field("original_folder_name")); + } + field_original_folder_name = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -84915,8 +107188,9 @@ impl SecondaryTeamRequestExpiredDetails { if optional && nothing { return Ok(None); } - let result = SecondaryTeamRequestExpiredDetails { - sent_to: field_sent_to.ok_or_else(|| ::serde::de::Error::missing_field("sent_to"))?, + let result = SfTeamJoinDetails { + target_asset_index: field_target_asset_index.ok_or_else(|| ::serde::de::Error::missing_field("target_asset_index"))?, + original_folder_name: field_original_folder_name.ok_or_else(|| ::serde::de::Error::missing_field("original_folder_name"))?, }; Ok(Some(result)) } @@ -84926,77 +107200,121 @@ impl SecondaryTeamRequestExpiredDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("sent_to", &self.sent_to)?; + s.serialize_field("target_asset_index", &self.target_asset_index)?; + s.serialize_field("original_folder_name", &self.original_folder_name)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for SecondaryTeamRequestExpiredDetails { +impl<'de> ::serde::de::Deserialize<'de> for SfTeamJoinDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SecondaryTeamRequestExpiredDetails; + type Value = SfTeamJoinDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SecondaryTeamRequestExpiredDetails struct") + f.write_str("a SfTeamJoinDetails struct") } fn visit_map>(self, map: V) -> Result { - SecondaryTeamRequestExpiredDetails::internal_deserialize(map) + SfTeamJoinDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("SecondaryTeamRequestExpiredDetails", SECONDARY_TEAM_REQUEST_EXPIRED_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("SfTeamJoinDetails", SF_TEAM_JOIN_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SecondaryTeamRequestExpiredDetails { +impl ::serde::ser::Serialize for SfTeamJoinDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SecondaryTeamRequestExpiredDetails", 1)?; + let mut s = serializer.serialize_struct("SfTeamJoinDetails", 2)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Team merge request reminder details shown to the secondary team +/// Joined team member's shared folder from link. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SecondaryTeamRequestReminderDetails { - /// The email of the primary team admin the request was sent to. - pub sent_to: String, +pub struct SfTeamJoinFromOobLinkDetails { + /// Target asset position in the Assets list. + pub target_asset_index: u64, + /// Original shared folder name. + pub original_folder_name: String, + /// Shared link token key. + pub token_key: Option, + /// Sharing permission. + pub sharing_permission: Option, } -impl SecondaryTeamRequestReminderDetails { - pub fn new(sent_to: String) -> Self { - SecondaryTeamRequestReminderDetails { - sent_to, +impl SfTeamJoinFromOobLinkDetails { + pub fn new(target_asset_index: u64, original_folder_name: String) -> Self { + SfTeamJoinFromOobLinkDetails { + target_asset_index, + original_folder_name, + token_key: None, + sharing_permission: None, } } + + pub fn with_token_key(mut self, value: String) -> Self { + self.token_key = Some(value); + self + } + + pub fn with_sharing_permission(mut self, value: String) -> Self { + self.sharing_permission = Some(value); + self + } } -const SECONDARY_TEAM_REQUEST_REMINDER_DETAILS_FIELDS: &[&str] = &["sent_to"]; -impl SecondaryTeamRequestReminderDetails { +const SF_TEAM_JOIN_FROM_OOB_LINK_DETAILS_FIELDS: &[&str] = &["target_asset_index", + "original_folder_name", + "token_key", + "sharing_permission"]; +impl SfTeamJoinFromOobLinkDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_sent_to = None; + ) -> Result, V::Error> { + let mut field_target_asset_index = None; + let mut field_original_folder_name = None; + let mut field_token_key = None; + let mut field_sharing_permission = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "sent_to" => { - if field_sent_to.is_some() { - return Err(::serde::de::Error::duplicate_field("sent_to")); + "target_asset_index" => { + if field_target_asset_index.is_some() { + return Err(::serde::de::Error::duplicate_field("target_asset_index")); } - field_sent_to = Some(map.next_value()?); + field_target_asset_index = Some(map.next_value()?); + } + "original_folder_name" => { + if field_original_folder_name.is_some() { + return Err(::serde::de::Error::duplicate_field("original_folder_name")); + } + field_original_folder_name = Some(map.next_value()?); + } + "token_key" => { + if field_token_key.is_some() { + return Err(::serde::de::Error::duplicate_field("token_key")); + } + field_token_key = Some(map.next_value()?); + } + "sharing_permission" => { + if field_sharing_permission.is_some() { + return Err(::serde::de::Error::duplicate_field("sharing_permission")); + } + field_sharing_permission = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -85007,8 +107325,11 @@ impl SecondaryTeamRequestReminderDetails { if optional && nothing { return Ok(None); } - let result = SecondaryTeamRequestReminderDetails { - sent_to: field_sent_to.ok_or_else(|| ::serde::de::Error::missing_field("sent_to"))?, + let result = SfTeamJoinFromOobLinkDetails { + target_asset_index: field_target_asset_index.ok_or_else(|| ::serde::de::Error::missing_field("target_asset_index"))?, + original_folder_name: field_original_folder_name.ok_or_else(|| ::serde::de::Error::missing_field("original_folder_name"))?, + token_key: field_token_key.and_then(Option::flatten), + sharing_permission: field_sharing_permission.and_then(Option::flatten), }; Ok(Some(result)) } @@ -85018,152 +107339,82 @@ impl SecondaryTeamRequestReminderDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("sent_to", &self.sent_to)?; - Ok(()) - } -} - -impl<'de> ::serde::de::Deserialize<'de> for SecondaryTeamRequestReminderDetails { - fn deserialize>(deserializer: D) -> Result { - // struct deserializer - use serde::de::{MapAccess, Visitor}; - struct StructVisitor; - impl<'de> Visitor<'de> for StructVisitor { - type Value = SecondaryTeamRequestReminderDetails; - fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SecondaryTeamRequestReminderDetails struct") - } - fn visit_map>(self, map: V) -> Result { - SecondaryTeamRequestReminderDetails::internal_deserialize(map) - } + s.serialize_field("target_asset_index", &self.target_asset_index)?; + s.serialize_field("original_folder_name", &self.original_folder_name)?; + if let Some(val) = &self.token_key { + s.serialize_field("token_key", val)?; } - deserializer.deserialize_struct("SecondaryTeamRequestReminderDetails", SECONDARY_TEAM_REQUEST_REMINDER_DETAILS_FIELDS, StructVisitor) - } -} - -impl ::serde::ser::Serialize for SecondaryTeamRequestReminderDetails { - fn serialize(&self, serializer: S) -> Result { - // struct serializer - use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SecondaryTeamRequestReminderDetails", 1)?; - self.internal_serialize::(&mut s)?; - s.end() + if let Some(val) = &self.sharing_permission { + s.serialize_field("sharing_permission", val)?; + } + Ok(()) } } -/// Policy for controlling team access to send for signature feature -#[derive(Debug, Clone, PartialEq, Eq)] -#[non_exhaustive] // variants may be added in the future -pub enum SendForSignaturePolicy { - Disabled, - Enabled, - /// Catch-all used for unrecognized values returned from the server. Encountering this value - /// typically indicates that this SDK version is out of date. - Other, -} - -impl<'de> ::serde::de::Deserialize<'de> for SendForSignaturePolicy { +impl<'de> ::serde::de::Deserialize<'de> for SfTeamJoinFromOobLinkDetails { fn deserialize>(deserializer: D) -> Result { - // union deserializer - use serde::de::{self, MapAccess, Visitor}; - struct EnumVisitor; - impl<'de> Visitor<'de> for EnumVisitor { - type Value = SendForSignaturePolicy; - fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SendForSignaturePolicy structure") - } - fn visit_map>(self, mut map: V) -> Result { - let tag: &str = match map.next_key()? { - Some(".tag") => map.next_value()?, - _ => return Err(de::Error::missing_field(".tag")) - }; - let value = match tag { - "disabled" => SendForSignaturePolicy::Disabled, - "enabled" => SendForSignaturePolicy::Enabled, - _ => SendForSignaturePolicy::Other, - }; - crate::eat_json_fields(&mut map)?; - Ok(value) + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = SfTeamJoinFromOobLinkDetails; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a SfTeamJoinFromOobLinkDetails struct") + } + fn visit_map>(self, map: V) -> Result { + SfTeamJoinFromOobLinkDetails::internal_deserialize(map) } } - const VARIANTS: &[&str] = &["disabled", - "enabled", - "other"]; - deserializer.deserialize_struct("SendForSignaturePolicy", VARIANTS, EnumVisitor) + deserializer.deserialize_struct("SfTeamJoinFromOobLinkDetails", SF_TEAM_JOIN_FROM_OOB_LINK_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SendForSignaturePolicy { +impl ::serde::ser::Serialize for SfTeamJoinFromOobLinkDetails { fn serialize(&self, serializer: S) -> Result { - // union serializer + // struct serializer use serde::ser::SerializeStruct; - match self { - SendForSignaturePolicy::Disabled => { - // unit - let mut s = serializer.serialize_struct("SendForSignaturePolicy", 1)?; - s.serialize_field(".tag", "disabled")?; - s.end() - } - SendForSignaturePolicy::Enabled => { - // unit - let mut s = serializer.serialize_struct("SendForSignaturePolicy", 1)?; - s.serialize_field(".tag", "enabled")?; - s.end() - } - SendForSignaturePolicy::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) - } + let mut s = serializer.serialize_struct("SfTeamJoinFromOobLinkDetails", 4)?; + self.internal_serialize::(&mut s)?; + s.end() } } -/// Changed send for signature policy for team. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SendForSignaturePolicyChangedDetails { - /// New send for signature policy. - pub new_value: SendForSignaturePolicy, - /// Previous send for signature policy. - pub previous_value: SendForSignaturePolicy, +pub struct SfTeamJoinFromOobLinkType { + pub description: String, } -impl SendForSignaturePolicyChangedDetails { - pub fn new(new_value: SendForSignaturePolicy, previous_value: SendForSignaturePolicy) -> Self { - SendForSignaturePolicyChangedDetails { - new_value, - previous_value, +impl SfTeamJoinFromOobLinkType { + pub fn new(description: String) -> Self { + SfTeamJoinFromOobLinkType { + description, } } } -const SEND_FOR_SIGNATURE_POLICY_CHANGED_DETAILS_FIELDS: &[&str] = &["new_value", - "previous_value"]; -impl SendForSignaturePolicyChangedDetails { +const SF_TEAM_JOIN_FROM_OOB_LINK_TYPE_FIELDS: &[&str] = &["description"]; +impl SfTeamJoinFromOobLinkType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_new_value = None; - let mut field_previous_value = None; + ) -> Result, V::Error> { + let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "new_value" => { - if field_new_value.is_some() { - return Err(::serde::de::Error::duplicate_field("new_value")); - } - field_new_value = Some(map.next_value()?); - } - "previous_value" => { - if field_previous_value.is_some() { - return Err(::serde::de::Error::duplicate_field("previous_value")); + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); } - field_previous_value = Some(map.next_value()?); + field_description = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -85174,9 +107425,8 @@ impl SendForSignaturePolicyChangedDetails { if optional && nothing { return Ok(None); } - let result = SendForSignaturePolicyChangedDetails { - new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, - previous_value: field_previous_value.ok_or_else(|| ::serde::de::Error::missing_field("previous_value"))?, + let result = SfTeamJoinFromOobLinkType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) } @@ -85186,35 +107436,34 @@ impl SendForSignaturePolicyChangedDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("new_value", &self.new_value)?; - s.serialize_field("previous_value", &self.previous_value)?; + s.serialize_field("description", &self.description)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for SendForSignaturePolicyChangedDetails { +impl<'de> ::serde::de::Deserialize<'de> for SfTeamJoinFromOobLinkType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SendForSignaturePolicyChangedDetails; + type Value = SfTeamJoinFromOobLinkType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SendForSignaturePolicyChangedDetails struct") + f.write_str("a SfTeamJoinFromOobLinkType struct") } fn visit_map>(self, map: V) -> Result { - SendForSignaturePolicyChangedDetails::internal_deserialize(map) + SfTeamJoinFromOobLinkType::internal_deserialize(map) } } - deserializer.deserialize_struct("SendForSignaturePolicyChangedDetails", SEND_FOR_SIGNATURE_POLICY_CHANGED_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("SfTeamJoinFromOobLinkType", SF_TEAM_JOIN_FROM_OOB_LINK_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SendForSignaturePolicyChangedDetails { +impl ::serde::ser::Serialize for SfTeamJoinFromOobLinkType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SendForSignaturePolicyChangedDetails", 2)?; + let mut s = serializer.serialize_struct("SfTeamJoinFromOobLinkType", 1)?; self.internal_serialize::(&mut s)?; s.end() } @@ -85222,30 +107471,30 @@ impl ::serde::ser::Serialize for SendForSignaturePolicyChangedDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SendForSignaturePolicyChangedType { +pub struct SfTeamJoinType { pub description: String, } -impl SendForSignaturePolicyChangedType { +impl SfTeamJoinType { pub fn new(description: String) -> Self { - SendForSignaturePolicyChangedType { + SfTeamJoinType { description, } } } -const SEND_FOR_SIGNATURE_POLICY_CHANGED_TYPE_FIELDS: &[&str] = &["description"]; -impl SendForSignaturePolicyChangedType { +const SF_TEAM_JOIN_TYPE_FIELDS: &[&str] = &["description"]; +impl SfTeamJoinType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -85266,7 +107515,7 @@ impl SendForSignaturePolicyChangedType { if optional && nothing { return Ok(None); } - let result = SendForSignaturePolicyChangedType { + let result = SfTeamJoinType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -85282,156 +107531,68 @@ impl SendForSignaturePolicyChangedType { } } -impl<'de> ::serde::de::Deserialize<'de> for SendForSignaturePolicyChangedType { +impl<'de> ::serde::de::Deserialize<'de> for SfTeamJoinType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SendForSignaturePolicyChangedType; + type Value = SfTeamJoinType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SendForSignaturePolicyChangedType struct") + f.write_str("a SfTeamJoinType struct") } fn visit_map>(self, map: V) -> Result { - SendForSignaturePolicyChangedType::internal_deserialize(map) + SfTeamJoinType::internal_deserialize(map) } } - deserializer.deserialize_struct("SendForSignaturePolicyChangedType", SEND_FOR_SIGNATURE_POLICY_CHANGED_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("SfTeamJoinType", SF_TEAM_JOIN_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SendForSignaturePolicyChangedType { +impl ::serde::ser::Serialize for SfTeamJoinType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SendForSignaturePolicyChangedType", 1)?; + let mut s = serializer.serialize_struct("SfTeamJoinType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Session's logged information. -#[derive(Debug, Clone, PartialEq, Eq)] -#[non_exhaustive] // variants may be added in the future -pub enum SessionLogInfo { - Web(WebSessionLogInfo), - Desktop(DesktopSessionLogInfo), - Mobile(MobileSessionLogInfo), - /// Catch-all used for unrecognized values returned from the server. Encountering this value - /// typically indicates that this SDK version is out of date. - Other, -} - -impl<'de> ::serde::de::Deserialize<'de> for SessionLogInfo { - fn deserialize>(deserializer: D) -> Result { - // polymorphic struct deserializer - use serde::de::{self, MapAccess, Visitor}; - struct EnumVisitor; - impl<'de> Visitor<'de> for EnumVisitor { - type Value = SessionLogInfo; - fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SessionLogInfo structure") - } - fn visit_map>(self, mut map: V) -> Result { - let tag = match map.next_key()? { - Some(".tag") => map.next_value()?, - _ => return Err(de::Error::missing_field(".tag")) - }; - match tag { - "web" => Ok(SessionLogInfo::Web(WebSessionLogInfo::internal_deserialize(map)?)), - "desktop" => Ok(SessionLogInfo::Desktop(DesktopSessionLogInfo::internal_deserialize(map)?)), - "mobile" => Ok(SessionLogInfo::Mobile(MobileSessionLogInfo::internal_deserialize(map)?)), - _ => { - crate::eat_json_fields(&mut map)?; - Ok(SessionLogInfo::Other) - } - } - } - } - const VARIANTS: &[&str] = &["web", - "desktop", - "mobile"]; - deserializer.deserialize_struct("SessionLogInfo", VARIANTS, EnumVisitor) - } -} - -impl ::serde::ser::Serialize for SessionLogInfo { - fn serialize(&self, serializer: S) -> Result { - // polymorphic struct serializer - use serde::ser::SerializeStruct; - match self { - SessionLogInfo::Web(x) => { - let mut s = serializer.serialize_struct("SessionLogInfo", 2)?; - s.serialize_field(".tag", "web")?; - x.internal_serialize::(&mut s)?; - s.end() - } - SessionLogInfo::Desktop(x) => { - let mut s = serializer.serialize_struct("SessionLogInfo", 2)?; - s.serialize_field(".tag", "desktop")?; - x.internal_serialize::(&mut s)?; - s.end() - } - SessionLogInfo::Mobile(x) => { - let mut s = serializer.serialize_struct("SessionLogInfo", 2)?; - s.serialize_field(".tag", "mobile")?; - x.internal_serialize::(&mut s)?; - s.end() - } - SessionLogInfo::Other => Err(::serde::ser::Error::custom("cannot serialize unknown variant")) - } - } -} - -/// Added team to shared folder. +/// Unshared folder with team member. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SfAddGroupDetails { +pub struct SfTeamUninviteDetails { /// Target asset position in the Assets list. pub target_asset_index: u64, /// Original shared folder name. pub original_folder_name: String, - /// Team name. - pub team_name: String, - /// Sharing permission. - pub sharing_permission: Option, } -impl SfAddGroupDetails { - pub fn new(target_asset_index: u64, original_folder_name: String, team_name: String) -> Self { - SfAddGroupDetails { +impl SfTeamUninviteDetails { + pub fn new(target_asset_index: u64, original_folder_name: String) -> Self { + SfTeamUninviteDetails { target_asset_index, original_folder_name, - team_name, - sharing_permission: None, } } - - pub fn with_sharing_permission(mut self, value: String) -> Self { - self.sharing_permission = Some(value); - self - } } -const SF_ADD_GROUP_DETAILS_FIELDS: &[&str] = &["target_asset_index", - "original_folder_name", - "team_name", - "sharing_permission"]; -impl SfAddGroupDetails { +const SF_TEAM_UNINVITE_DETAILS_FIELDS: &[&str] = &["target_asset_index", + "original_folder_name"]; +impl SfTeamUninviteDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_target_asset_index = None; let mut field_original_folder_name = None; - let mut field_team_name = None; - let mut field_sharing_permission = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; @@ -85448,18 +107609,6 @@ impl SfAddGroupDetails { } field_original_folder_name = Some(map.next_value()?); } - "team_name" => { - if field_team_name.is_some() { - return Err(::serde::de::Error::duplicate_field("team_name")); - } - field_team_name = Some(map.next_value()?); - } - "sharing_permission" => { - if field_sharing_permission.is_some() { - return Err(::serde::de::Error::duplicate_field("sharing_permission")); - } - field_sharing_permission = Some(map.next_value()?); - } _ => { // unknown field allowed and ignored map.next_value::<::serde_json::Value>()?; @@ -85469,11 +107618,9 @@ impl SfAddGroupDetails { if optional && nothing { return Ok(None); } - let result = SfAddGroupDetails { + let result = SfTeamUninviteDetails { target_asset_index: field_target_asset_index.ok_or_else(|| ::serde::de::Error::missing_field("target_asset_index"))?, original_folder_name: field_original_folder_name.ok_or_else(|| ::serde::de::Error::missing_field("original_folder_name"))?, - team_name: field_team_name.ok_or_else(|| ::serde::de::Error::missing_field("team_name"))?, - sharing_permission: field_sharing_permission.and_then(Option::flatten), }; Ok(Some(result)) } @@ -85485,37 +107632,33 @@ impl SfAddGroupDetails { use serde::ser::SerializeStruct; s.serialize_field("target_asset_index", &self.target_asset_index)?; s.serialize_field("original_folder_name", &self.original_folder_name)?; - s.serialize_field("team_name", &self.team_name)?; - if let Some(val) = &self.sharing_permission { - s.serialize_field("sharing_permission", val)?; - } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for SfAddGroupDetails { +impl<'de> ::serde::de::Deserialize<'de> for SfTeamUninviteDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SfAddGroupDetails; + type Value = SfTeamUninviteDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SfAddGroupDetails struct") + f.write_str("a SfTeamUninviteDetails struct") } fn visit_map>(self, map: V) -> Result { - SfAddGroupDetails::internal_deserialize(map) + SfTeamUninviteDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("SfAddGroupDetails", SF_ADD_GROUP_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("SfTeamUninviteDetails", SF_TEAM_UNINVITE_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SfAddGroupDetails { +impl ::serde::ser::Serialize for SfTeamUninviteDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SfAddGroupDetails", 4)?; + let mut s = serializer.serialize_struct("SfTeamUninviteDetails", 2)?; self.internal_serialize::(&mut s)?; s.end() } @@ -85523,30 +107666,30 @@ impl ::serde::ser::Serialize for SfAddGroupDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SfAddGroupType { +pub struct SfTeamUninviteType { pub description: String, } -impl SfAddGroupType { +impl SfTeamUninviteType { pub fn new(description: String) -> Self { - SfAddGroupType { + SfTeamUninviteType { description, } } } -const SF_ADD_GROUP_TYPE_FIELDS: &[&str] = &["description"]; -impl SfAddGroupType { +const SF_TEAM_UNINVITE_TYPE_FIELDS: &[&str] = &["description"]; +impl SfTeamUninviteType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -85567,7 +107710,7 @@ impl SfAddGroupType { if optional && nothing { return Ok(None); } - let result = SfAddGroupType { + let result = SfTeamUninviteType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -85583,99 +107726,86 @@ impl SfAddGroupType { } } -impl<'de> ::serde::de::Deserialize<'de> for SfAddGroupType { +impl<'de> ::serde::de::Deserialize<'de> for SfTeamUninviteType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SfAddGroupType; + type Value = SfTeamUninviteType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SfAddGroupType struct") + f.write_str("a SfTeamUninviteType struct") } fn visit_map>(self, map: V) -> Result { - SfAddGroupType::internal_deserialize(map) + SfTeamUninviteType::internal_deserialize(map) } } - deserializer.deserialize_struct("SfAddGroupType", SF_ADD_GROUP_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("SfTeamUninviteType", SF_TEAM_UNINVITE_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SfAddGroupType { +impl ::serde::ser::Serialize for SfTeamUninviteType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SfAddGroupType", 1)?; + let mut s = serializer.serialize_struct("SfTeamUninviteType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Allowed non-collaborators to view links to files in shared folder. +/// Invited user to Dropbox and added them to shared file/folder. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SfAllowNonMembersToViewSharedLinksDetails { - /// Target asset position in the Assets list. - pub target_asset_index: u64, - /// Original shared folder name. - pub original_folder_name: String, - /// Shared folder type. - pub shared_folder_type: Option, +pub struct SharedContentAddInviteesDetails { + /// Shared content access level. + pub shared_content_access_level: crate::types::sharing::AccessLevel, + /// A list of invitees. + pub invitees: Vec, } -impl SfAllowNonMembersToViewSharedLinksDetails { - pub fn new(target_asset_index: u64, original_folder_name: String) -> Self { - SfAllowNonMembersToViewSharedLinksDetails { - target_asset_index, - original_folder_name, - shared_folder_type: None, +impl SharedContentAddInviteesDetails { + pub fn new( + shared_content_access_level: crate::types::sharing::AccessLevel, + invitees: Vec, + ) -> Self { + SharedContentAddInviteesDetails { + shared_content_access_level, + invitees, } } - - pub fn with_shared_folder_type(mut self, value: String) -> Self { - self.shared_folder_type = Some(value); - self - } } -const SF_ALLOW_NON_MEMBERS_TO_VIEW_SHARED_LINKS_DETAILS_FIELDS: &[&str] = &["target_asset_index", - "original_folder_name", - "shared_folder_type"]; -impl SfAllowNonMembersToViewSharedLinksDetails { +const SHARED_CONTENT_ADD_INVITEES_DETAILS_FIELDS: &[&str] = &["shared_content_access_level", + "invitees"]; +impl SharedContentAddInviteesDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_target_asset_index = None; - let mut field_original_folder_name = None; - let mut field_shared_folder_type = None; + ) -> Result, V::Error> { + let mut field_shared_content_access_level = None; + let mut field_invitees = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "target_asset_index" => { - if field_target_asset_index.is_some() { - return Err(::serde::de::Error::duplicate_field("target_asset_index")); - } - field_target_asset_index = Some(map.next_value()?); - } - "original_folder_name" => { - if field_original_folder_name.is_some() { - return Err(::serde::de::Error::duplicate_field("original_folder_name")); + "shared_content_access_level" => { + if field_shared_content_access_level.is_some() { + return Err(::serde::de::Error::duplicate_field("shared_content_access_level")); } - field_original_folder_name = Some(map.next_value()?); + field_shared_content_access_level = Some(map.next_value()?); } - "shared_folder_type" => { - if field_shared_folder_type.is_some() { - return Err(::serde::de::Error::duplicate_field("shared_folder_type")); + "invitees" => { + if field_invitees.is_some() { + return Err(::serde::de::Error::duplicate_field("invitees")); } - field_shared_folder_type = Some(map.next_value()?); + field_invitees = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -85686,10 +107816,9 @@ impl SfAllowNonMembersToViewSharedLinksDetails { if optional && nothing { return Ok(None); } - let result = SfAllowNonMembersToViewSharedLinksDetails { - target_asset_index: field_target_asset_index.ok_or_else(|| ::serde::de::Error::missing_field("target_asset_index"))?, - original_folder_name: field_original_folder_name.ok_or_else(|| ::serde::de::Error::missing_field("original_folder_name"))?, - shared_folder_type: field_shared_folder_type.and_then(Option::flatten), + let result = SharedContentAddInviteesDetails { + shared_content_access_level: field_shared_content_access_level.ok_or_else(|| ::serde::de::Error::missing_field("shared_content_access_level"))?, + invitees: field_invitees.ok_or_else(|| ::serde::de::Error::missing_field("invitees"))?, }; Ok(Some(result)) } @@ -85699,38 +107828,35 @@ impl SfAllowNonMembersToViewSharedLinksDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("target_asset_index", &self.target_asset_index)?; - s.serialize_field("original_folder_name", &self.original_folder_name)?; - if let Some(val) = &self.shared_folder_type { - s.serialize_field("shared_folder_type", val)?; - } + s.serialize_field("shared_content_access_level", &self.shared_content_access_level)?; + s.serialize_field("invitees", &self.invitees)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for SfAllowNonMembersToViewSharedLinksDetails { +impl<'de> ::serde::de::Deserialize<'de> for SharedContentAddInviteesDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SfAllowNonMembersToViewSharedLinksDetails; + type Value = SharedContentAddInviteesDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SfAllowNonMembersToViewSharedLinksDetails struct") + f.write_str("a SharedContentAddInviteesDetails struct") } fn visit_map>(self, map: V) -> Result { - SfAllowNonMembersToViewSharedLinksDetails::internal_deserialize(map) + SharedContentAddInviteesDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("SfAllowNonMembersToViewSharedLinksDetails", SF_ALLOW_NON_MEMBERS_TO_VIEW_SHARED_LINKS_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("SharedContentAddInviteesDetails", SHARED_CONTENT_ADD_INVITEES_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SfAllowNonMembersToViewSharedLinksDetails { +impl ::serde::ser::Serialize for SharedContentAddInviteesDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SfAllowNonMembersToViewSharedLinksDetails", 3)?; + let mut s = serializer.serialize_struct("SharedContentAddInviteesDetails", 2)?; self.internal_serialize::(&mut s)?; s.end() } @@ -85738,30 +107864,30 @@ impl ::serde::ser::Serialize for SfAllowNonMembersToViewSharedLinksDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SfAllowNonMembersToViewSharedLinksType { +pub struct SharedContentAddInviteesType { pub description: String, } -impl SfAllowNonMembersToViewSharedLinksType { +impl SharedContentAddInviteesType { pub fn new(description: String) -> Self { - SfAllowNonMembersToViewSharedLinksType { + SharedContentAddInviteesType { description, } } } -const SF_ALLOW_NON_MEMBERS_TO_VIEW_SHARED_LINKS_TYPE_FIELDS: &[&str] = &["description"]; -impl SfAllowNonMembersToViewSharedLinksType { +const SHARED_CONTENT_ADD_INVITEES_TYPE_FIELDS: &[&str] = &["description"]; +impl SharedContentAddInviteesType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -85782,7 +107908,7 @@ impl SfAllowNonMembersToViewSharedLinksType { if optional && nothing { return Ok(None); } - let result = SfAllowNonMembersToViewSharedLinksType { + let result = SharedContentAddInviteesType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -85798,115 +107924,63 @@ impl SfAllowNonMembersToViewSharedLinksType { } } -impl<'de> ::serde::de::Deserialize<'de> for SfAllowNonMembersToViewSharedLinksType { +impl<'de> ::serde::de::Deserialize<'de> for SharedContentAddInviteesType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SfAllowNonMembersToViewSharedLinksType; + type Value = SharedContentAddInviteesType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SfAllowNonMembersToViewSharedLinksType struct") + f.write_str("a SharedContentAddInviteesType struct") } fn visit_map>(self, map: V) -> Result { - SfAllowNonMembersToViewSharedLinksType::internal_deserialize(map) + SharedContentAddInviteesType::internal_deserialize(map) } } - deserializer.deserialize_struct("SfAllowNonMembersToViewSharedLinksType", SF_ALLOW_NON_MEMBERS_TO_VIEW_SHARED_LINKS_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("SharedContentAddInviteesType", SHARED_CONTENT_ADD_INVITEES_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SfAllowNonMembersToViewSharedLinksType { +impl ::serde::ser::Serialize for SharedContentAddInviteesType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SfAllowNonMembersToViewSharedLinksType", 1)?; + let mut s = serializer.serialize_struct("SharedContentAddInviteesType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Set team members to see warning before sharing folders outside team. -#[derive(Debug, Clone, PartialEq, Eq)] +/// Added expiration date to link for shared file/folder. +#[derive(Debug, Clone, PartialEq, Eq, Default)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SfExternalInviteWarnDetails { - /// Target asset position in the Assets list. - pub target_asset_index: u64, - /// Original shared folder name. - pub original_folder_name: String, - /// New sharing permission. - pub new_sharing_permission: Option, - /// Previous sharing permission. - pub previous_sharing_permission: Option, +pub struct SharedContentAddLinkExpiryDetails { + /// New shared content link expiration date. Might be missing due to historical data gap. + pub new_value: Option, } -impl SfExternalInviteWarnDetails { - pub fn new(target_asset_index: u64, original_folder_name: String) -> Self { - SfExternalInviteWarnDetails { - target_asset_index, - original_folder_name, - new_sharing_permission: None, - previous_sharing_permission: None, - } - } - - pub fn with_new_sharing_permission(mut self, value: String) -> Self { - self.new_sharing_permission = Some(value); - self - } - - pub fn with_previous_sharing_permission(mut self, value: String) -> Self { - self.previous_sharing_permission = Some(value); +impl SharedContentAddLinkExpiryDetails { + pub fn with_new_value(mut self, value: crate::types::common::DropboxTimestamp) -> Self { + self.new_value = Some(value); self } -} - -const SF_EXTERNAL_INVITE_WARN_DETAILS_FIELDS: &[&str] = &["target_asset_index", - "original_folder_name", - "new_sharing_permission", - "previous_sharing_permission"]; -impl SfExternalInviteWarnDetails { - pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( - map: V, - ) -> Result { - Self::internal_deserialize_opt(map, false).map(Option::unwrap) - } - - pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( - mut map: V, - optional: bool, - ) -> Result, V::Error> { - let mut field_target_asset_index = None; - let mut field_original_folder_name = None; - let mut field_new_sharing_permission = None; - let mut field_previous_sharing_permission = None; - let mut nothing = true; - while let Some(key) = map.next_key::<&str>()? { - nothing = false; - match key { - "target_asset_index" => { - if field_target_asset_index.is_some() { - return Err(::serde::de::Error::duplicate_field("target_asset_index")); - } - field_target_asset_index = Some(map.next_value()?); - } - "original_folder_name" => { - if field_original_folder_name.is_some() { - return Err(::serde::de::Error::duplicate_field("original_folder_name")); - } - field_original_folder_name = Some(map.next_value()?); - } - "new_sharing_permission" => { - if field_new_sharing_permission.is_some() { - return Err(::serde::de::Error::duplicate_field("new_sharing_permission")); - } - field_new_sharing_permission = Some(map.next_value()?); - } - "previous_sharing_permission" => { - if field_previous_sharing_permission.is_some() { - return Err(::serde::de::Error::duplicate_field("previous_sharing_permission")); +} + +const SHARED_CONTENT_ADD_LINK_EXPIRY_DETAILS_FIELDS: &[&str] = &["new_value"]; +impl SharedContentAddLinkExpiryDetails { + // no _opt deserializer + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + ) -> Result { + let mut field_new_value = None; + while let Some(key) = map.next_key::<&str>()? { + match key { + "new_value" => { + if field_new_value.is_some() { + return Err(::serde::de::Error::duplicate_field("new_value")); } - field_previous_sharing_permission = Some(map.next_value()?); + field_new_value = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -85914,16 +107988,10 @@ impl SfExternalInviteWarnDetails { } } } - if optional && nothing { - return Ok(None); - } - let result = SfExternalInviteWarnDetails { - target_asset_index: field_target_asset_index.ok_or_else(|| ::serde::de::Error::missing_field("target_asset_index"))?, - original_folder_name: field_original_folder_name.ok_or_else(|| ::serde::de::Error::missing_field("original_folder_name"))?, - new_sharing_permission: field_new_sharing_permission.and_then(Option::flatten), - previous_sharing_permission: field_previous_sharing_permission.and_then(Option::flatten), + let result = SharedContentAddLinkExpiryDetails { + new_value: field_new_value.and_then(Option::flatten), }; - Ok(Some(result)) + Ok(result) } pub(crate) fn internal_serialize( @@ -85931,41 +107999,36 @@ impl SfExternalInviteWarnDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("target_asset_index", &self.target_asset_index)?; - s.serialize_field("original_folder_name", &self.original_folder_name)?; - if let Some(val) = &self.new_sharing_permission { - s.serialize_field("new_sharing_permission", val)?; - } - if let Some(val) = &self.previous_sharing_permission { - s.serialize_field("previous_sharing_permission", val)?; + if let Some(val) = &self.new_value { + s.serialize_field("new_value", val)?; } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for SfExternalInviteWarnDetails { +impl<'de> ::serde::de::Deserialize<'de> for SharedContentAddLinkExpiryDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SfExternalInviteWarnDetails; + type Value = SharedContentAddLinkExpiryDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SfExternalInviteWarnDetails struct") + f.write_str("a SharedContentAddLinkExpiryDetails struct") } fn visit_map>(self, map: V) -> Result { - SfExternalInviteWarnDetails::internal_deserialize(map) + SharedContentAddLinkExpiryDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("SfExternalInviteWarnDetails", SF_EXTERNAL_INVITE_WARN_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("SharedContentAddLinkExpiryDetails", SHARED_CONTENT_ADD_LINK_EXPIRY_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SfExternalInviteWarnDetails { +impl ::serde::ser::Serialize for SharedContentAddLinkExpiryDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SfExternalInviteWarnDetails", 4)?; + let mut s = serializer.serialize_struct("SharedContentAddLinkExpiryDetails", 1)?; self.internal_serialize::(&mut s)?; s.end() } @@ -85973,30 +108036,30 @@ impl ::serde::ser::Serialize for SfExternalInviteWarnDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SfExternalInviteWarnType { +pub struct SharedContentAddLinkExpiryType { pub description: String, } -impl SfExternalInviteWarnType { +impl SharedContentAddLinkExpiryType { pub fn new(description: String) -> Self { - SfExternalInviteWarnType { + SharedContentAddLinkExpiryType { description, } } } -const SF_EXTERNAL_INVITE_WARN_TYPE_FIELDS: &[&str] = &["description"]; -impl SfExternalInviteWarnType { +const SHARED_CONTENT_ADD_LINK_EXPIRY_TYPE_FIELDS: &[&str] = &["description"]; +impl SharedContentAddLinkExpiryType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -86017,7 +108080,7 @@ impl SfExternalInviteWarnType { if optional && nothing { return Ok(None); } - let result = SfExternalInviteWarnType { + let result = SharedContentAddLinkExpiryType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -86033,205 +108096,104 @@ impl SfExternalInviteWarnType { } } -impl<'de> ::serde::de::Deserialize<'de> for SfExternalInviteWarnType { +impl<'de> ::serde::de::Deserialize<'de> for SharedContentAddLinkExpiryType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SfExternalInviteWarnType; + type Value = SharedContentAddLinkExpiryType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SfExternalInviteWarnType struct") + f.write_str("a SharedContentAddLinkExpiryType struct") } fn visit_map>(self, map: V) -> Result { - SfExternalInviteWarnType::internal_deserialize(map) + SharedContentAddLinkExpiryType::internal_deserialize(map) } } - deserializer.deserialize_struct("SfExternalInviteWarnType", SF_EXTERNAL_INVITE_WARN_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("SharedContentAddLinkExpiryType", SHARED_CONTENT_ADD_LINK_EXPIRY_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SfExternalInviteWarnType { +impl ::serde::ser::Serialize for SharedContentAddLinkExpiryType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SfExternalInviteWarnType", 1)?; + let mut s = serializer.serialize_struct("SharedContentAddLinkExpiryType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Changed Facebook user's role in shared folder. -#[derive(Debug, Clone, PartialEq, Eq)] +/// Added password to link for shared file/folder. +#[derive(Debug, Clone, PartialEq, Eq, Default)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SfFbInviteChangeRoleDetails { - /// Target asset position in the Assets list. - pub target_asset_index: u64, - /// Original shared folder name. - pub original_folder_name: String, - /// Previous sharing permission. - pub previous_sharing_permission: Option, - /// New sharing permission. - pub new_sharing_permission: Option, -} - -impl SfFbInviteChangeRoleDetails { - pub fn new(target_asset_index: u64, original_folder_name: String) -> Self { - SfFbInviteChangeRoleDetails { - target_asset_index, - original_folder_name, - previous_sharing_permission: None, - new_sharing_permission: None, - } - } - - pub fn with_previous_sharing_permission(mut self, value: String) -> Self { - self.previous_sharing_permission = Some(value); - self - } - - pub fn with_new_sharing_permission(mut self, value: String) -> Self { - self.new_sharing_permission = Some(value); - self - } +pub struct SharedContentAddLinkPasswordDetails { } -const SF_FB_INVITE_CHANGE_ROLE_DETAILS_FIELDS: &[&str] = &["target_asset_index", - "original_folder_name", - "previous_sharing_permission", - "new_sharing_permission"]; -impl SfFbInviteChangeRoleDetails { +const SHARED_CONTENT_ADD_LINK_PASSWORD_DETAILS_FIELDS: &[&str] = &[]; +impl SharedContentAddLinkPasswordDetails { + // no _opt deserializer pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( - map: V, - ) -> Result { - Self::internal_deserialize_opt(map, false).map(Option::unwrap) - } - - pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - optional: bool, - ) -> Result, V::Error> { - let mut field_target_asset_index = None; - let mut field_original_folder_name = None; - let mut field_previous_sharing_permission = None; - let mut field_new_sharing_permission = None; - let mut nothing = true; - while let Some(key) = map.next_key::<&str>()? { - nothing = false; - match key { - "target_asset_index" => { - if field_target_asset_index.is_some() { - return Err(::serde::de::Error::duplicate_field("target_asset_index")); - } - field_target_asset_index = Some(map.next_value()?); - } - "original_folder_name" => { - if field_original_folder_name.is_some() { - return Err(::serde::de::Error::duplicate_field("original_folder_name")); - } - field_original_folder_name = Some(map.next_value()?); - } - "previous_sharing_permission" => { - if field_previous_sharing_permission.is_some() { - return Err(::serde::de::Error::duplicate_field("previous_sharing_permission")); - } - field_previous_sharing_permission = Some(map.next_value()?); - } - "new_sharing_permission" => { - if field_new_sharing_permission.is_some() { - return Err(::serde::de::Error::duplicate_field("new_sharing_permission")); - } - field_new_sharing_permission = Some(map.next_value()?); - } - _ => { - // unknown field allowed and ignored - map.next_value::<::serde_json::Value>()?; - } - } - } - if optional && nothing { - return Ok(None); - } - let result = SfFbInviteChangeRoleDetails { - target_asset_index: field_target_asset_index.ok_or_else(|| ::serde::de::Error::missing_field("target_asset_index"))?, - original_folder_name: field_original_folder_name.ok_or_else(|| ::serde::de::Error::missing_field("original_folder_name"))?, - previous_sharing_permission: field_previous_sharing_permission.and_then(Option::flatten), - new_sharing_permission: field_new_sharing_permission.and_then(Option::flatten), - }; - Ok(Some(result)) - } - - pub(crate) fn internal_serialize( - &self, - s: &mut S::SerializeStruct, - ) -> Result<(), S::Error> { - use serde::ser::SerializeStruct; - s.serialize_field("target_asset_index", &self.target_asset_index)?; - s.serialize_field("original_folder_name", &self.original_folder_name)?; - if let Some(val) = &self.previous_sharing_permission { - s.serialize_field("previous_sharing_permission", val)?; - } - if let Some(val) = &self.new_sharing_permission { - s.serialize_field("new_sharing_permission", val)?; - } - Ok(()) + ) -> Result { + // ignore any fields found; none are presently recognized + crate::eat_json_fields(&mut map)?; + Ok(SharedContentAddLinkPasswordDetails {}) } } -impl<'de> ::serde::de::Deserialize<'de> for SfFbInviteChangeRoleDetails { +impl<'de> ::serde::de::Deserialize<'de> for SharedContentAddLinkPasswordDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SfFbInviteChangeRoleDetails; + type Value = SharedContentAddLinkPasswordDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SfFbInviteChangeRoleDetails struct") + f.write_str("a SharedContentAddLinkPasswordDetails struct") } fn visit_map>(self, map: V) -> Result { - SfFbInviteChangeRoleDetails::internal_deserialize(map) + SharedContentAddLinkPasswordDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("SfFbInviteChangeRoleDetails", SF_FB_INVITE_CHANGE_ROLE_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("SharedContentAddLinkPasswordDetails", SHARED_CONTENT_ADD_LINK_PASSWORD_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SfFbInviteChangeRoleDetails { +impl ::serde::ser::Serialize for SharedContentAddLinkPasswordDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SfFbInviteChangeRoleDetails", 4)?; - self.internal_serialize::(&mut s)?; - s.end() + serializer.serialize_struct("SharedContentAddLinkPasswordDetails", 0)?.end() } } #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SfFbInviteChangeRoleType { +pub struct SharedContentAddLinkPasswordType { pub description: String, } -impl SfFbInviteChangeRoleType { +impl SharedContentAddLinkPasswordType { pub fn new(description: String) -> Self { - SfFbInviteChangeRoleType { + SharedContentAddLinkPasswordType { description, } } } -const SF_FB_INVITE_CHANGE_ROLE_TYPE_FIELDS: &[&str] = &["description"]; -impl SfFbInviteChangeRoleType { +const SHARED_CONTENT_ADD_LINK_PASSWORD_TYPE_FIELDS: &[&str] = &["description"]; +impl SharedContentAddLinkPasswordType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -86252,7 +108214,7 @@ impl SfFbInviteChangeRoleType { if optional && nothing { return Ok(None); } - let result = SfFbInviteChangeRoleType { + let result = SharedContentAddLinkPasswordType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -86268,99 +108230,72 @@ impl SfFbInviteChangeRoleType { } } -impl<'de> ::serde::de::Deserialize<'de> for SfFbInviteChangeRoleType { +impl<'de> ::serde::de::Deserialize<'de> for SharedContentAddLinkPasswordType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SfFbInviteChangeRoleType; + type Value = SharedContentAddLinkPasswordType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SfFbInviteChangeRoleType struct") + f.write_str("a SharedContentAddLinkPasswordType struct") } fn visit_map>(self, map: V) -> Result { - SfFbInviteChangeRoleType::internal_deserialize(map) + SharedContentAddLinkPasswordType::internal_deserialize(map) } } - deserializer.deserialize_struct("SfFbInviteChangeRoleType", SF_FB_INVITE_CHANGE_ROLE_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("SharedContentAddLinkPasswordType", SHARED_CONTENT_ADD_LINK_PASSWORD_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SfFbInviteChangeRoleType { +impl ::serde::ser::Serialize for SharedContentAddLinkPasswordType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SfFbInviteChangeRoleType", 1)?; + let mut s = serializer.serialize_struct("SharedContentAddLinkPasswordType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Invited Facebook users to shared folder. +/// Added users and/or groups to shared file/folder. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SfFbInviteDetails { - /// Target asset position in the Assets list. - pub target_asset_index: u64, - /// Original shared folder name. - pub original_folder_name: String, - /// Sharing permission. - pub sharing_permission: Option, +pub struct SharedContentAddMemberDetails { + /// Shared content access level. + pub shared_content_access_level: crate::types::sharing::AccessLevel, } -impl SfFbInviteDetails { - pub fn new(target_asset_index: u64, original_folder_name: String) -> Self { - SfFbInviteDetails { - target_asset_index, - original_folder_name, - sharing_permission: None, +impl SharedContentAddMemberDetails { + pub fn new(shared_content_access_level: crate::types::sharing::AccessLevel) -> Self { + SharedContentAddMemberDetails { + shared_content_access_level, } } - - pub fn with_sharing_permission(mut self, value: String) -> Self { - self.sharing_permission = Some(value); - self - } } -const SF_FB_INVITE_DETAILS_FIELDS: &[&str] = &["target_asset_index", - "original_folder_name", - "sharing_permission"]; -impl SfFbInviteDetails { +const SHARED_CONTENT_ADD_MEMBER_DETAILS_FIELDS: &[&str] = &["shared_content_access_level"]; +impl SharedContentAddMemberDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_target_asset_index = None; - let mut field_original_folder_name = None; - let mut field_sharing_permission = None; + ) -> Result, V::Error> { + let mut field_shared_content_access_level = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "target_asset_index" => { - if field_target_asset_index.is_some() { - return Err(::serde::de::Error::duplicate_field("target_asset_index")); - } - field_target_asset_index = Some(map.next_value()?); - } - "original_folder_name" => { - if field_original_folder_name.is_some() { - return Err(::serde::de::Error::duplicate_field("original_folder_name")); - } - field_original_folder_name = Some(map.next_value()?); - } - "sharing_permission" => { - if field_sharing_permission.is_some() { - return Err(::serde::de::Error::duplicate_field("sharing_permission")); + "shared_content_access_level" => { + if field_shared_content_access_level.is_some() { + return Err(::serde::de::Error::duplicate_field("shared_content_access_level")); } - field_sharing_permission = Some(map.next_value()?); + field_shared_content_access_level = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -86371,10 +108306,8 @@ impl SfFbInviteDetails { if optional && nothing { return Ok(None); } - let result = SfFbInviteDetails { - target_asset_index: field_target_asset_index.ok_or_else(|| ::serde::de::Error::missing_field("target_asset_index"))?, - original_folder_name: field_original_folder_name.ok_or_else(|| ::serde::de::Error::missing_field("original_folder_name"))?, - sharing_permission: field_sharing_permission.and_then(Option::flatten), + let result = SharedContentAddMemberDetails { + shared_content_access_level: field_shared_content_access_level.ok_or_else(|| ::serde::de::Error::missing_field("shared_content_access_level"))?, }; Ok(Some(result)) } @@ -86384,38 +108317,34 @@ impl SfFbInviteDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("target_asset_index", &self.target_asset_index)?; - s.serialize_field("original_folder_name", &self.original_folder_name)?; - if let Some(val) = &self.sharing_permission { - s.serialize_field("sharing_permission", val)?; - } + s.serialize_field("shared_content_access_level", &self.shared_content_access_level)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for SfFbInviteDetails { +impl<'de> ::serde::de::Deserialize<'de> for SharedContentAddMemberDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SfFbInviteDetails; + type Value = SharedContentAddMemberDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SfFbInviteDetails struct") + f.write_str("a SharedContentAddMemberDetails struct") } fn visit_map>(self, map: V) -> Result { - SfFbInviteDetails::internal_deserialize(map) + SharedContentAddMemberDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("SfFbInviteDetails", SF_FB_INVITE_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("SharedContentAddMemberDetails", SHARED_CONTENT_ADD_MEMBER_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SfFbInviteDetails { +impl ::serde::ser::Serialize for SharedContentAddMemberDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SfFbInviteDetails", 3)?; + let mut s = serializer.serialize_struct("SharedContentAddMemberDetails", 1)?; self.internal_serialize::(&mut s)?; s.end() } @@ -86423,30 +108352,30 @@ impl ::serde::ser::Serialize for SfFbInviteDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SfFbInviteType { +pub struct SharedContentAddMemberType { pub description: String, } -impl SfFbInviteType { +impl SharedContentAddMemberType { pub fn new(description: String) -> Self { - SfFbInviteType { + SharedContentAddMemberType { description, } } } -const SF_FB_INVITE_TYPE_FIELDS: &[&str] = &["description"]; -impl SfFbInviteType { +const SHARED_CONTENT_ADD_MEMBER_TYPE_FIELDS: &[&str] = &["description"]; +impl SharedContentAddMemberType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -86467,7 +108396,7 @@ impl SfFbInviteType { if optional && nothing { return Ok(None); } - let result = SfFbInviteType { + let result = SharedContentAddMemberType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -86483,83 +108412,88 @@ impl SfFbInviteType { } } -impl<'de> ::serde::de::Deserialize<'de> for SfFbInviteType { +impl<'de> ::serde::de::Deserialize<'de> for SharedContentAddMemberType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SfFbInviteType; + type Value = SharedContentAddMemberType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SfFbInviteType struct") + f.write_str("a SharedContentAddMemberType struct") } fn visit_map>(self, map: V) -> Result { - SfFbInviteType::internal_deserialize(map) + SharedContentAddMemberType::internal_deserialize(map) } } - deserializer.deserialize_struct("SfFbInviteType", SF_FB_INVITE_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("SharedContentAddMemberType", SHARED_CONTENT_ADD_MEMBER_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SfFbInviteType { +impl ::serde::ser::Serialize for SharedContentAddMemberType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SfFbInviteType", 1)?; + let mut s = serializer.serialize_struct("SharedContentAddMemberType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Uninvited Facebook user from shared folder. +/// Changed whether members can download shared file/folder. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SfFbUninviteDetails { - /// Target asset position in the Assets list. - pub target_asset_index: u64, - /// Original shared folder name. - pub original_folder_name: String, +pub struct SharedContentChangeDownloadsPolicyDetails { + /// New downloads policy. + pub new_value: DownloadPolicyType, + /// Previous downloads policy. Might be missing due to historical data gap. + pub previous_value: Option, } -impl SfFbUninviteDetails { - pub fn new(target_asset_index: u64, original_folder_name: String) -> Self { - SfFbUninviteDetails { - target_asset_index, - original_folder_name, +impl SharedContentChangeDownloadsPolicyDetails { + pub fn new(new_value: DownloadPolicyType) -> Self { + SharedContentChangeDownloadsPolicyDetails { + new_value, + previous_value: None, } } + + pub fn with_previous_value(mut self, value: DownloadPolicyType) -> Self { + self.previous_value = Some(value); + self + } } -const SF_FB_UNINVITE_DETAILS_FIELDS: &[&str] = &["target_asset_index", - "original_folder_name"]; -impl SfFbUninviteDetails { +const SHARED_CONTENT_CHANGE_DOWNLOADS_POLICY_DETAILS_FIELDS: &[&str] = &["new_value", + "previous_value"]; +impl SharedContentChangeDownloadsPolicyDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_target_asset_index = None; - let mut field_original_folder_name = None; + ) -> Result, V::Error> { + let mut field_new_value = None; + let mut field_previous_value = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "target_asset_index" => { - if field_target_asset_index.is_some() { - return Err(::serde::de::Error::duplicate_field("target_asset_index")); + "new_value" => { + if field_new_value.is_some() { + return Err(::serde::de::Error::duplicate_field("new_value")); } - field_target_asset_index = Some(map.next_value()?); + field_new_value = Some(map.next_value()?); } - "original_folder_name" => { - if field_original_folder_name.is_some() { - return Err(::serde::de::Error::duplicate_field("original_folder_name")); + "previous_value" => { + if field_previous_value.is_some() { + return Err(::serde::de::Error::duplicate_field("previous_value")); } - field_original_folder_name = Some(map.next_value()?); + field_previous_value = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -86570,9 +108504,9 @@ impl SfFbUninviteDetails { if optional && nothing { return Ok(None); } - let result = SfFbUninviteDetails { - target_asset_index: field_target_asset_index.ok_or_else(|| ::serde::de::Error::missing_field("target_asset_index"))?, - original_folder_name: field_original_folder_name.ok_or_else(|| ::serde::de::Error::missing_field("original_folder_name"))?, + let result = SharedContentChangeDownloadsPolicyDetails { + new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, + previous_value: field_previous_value.and_then(Option::flatten), }; Ok(Some(result)) } @@ -86582,35 +108516,37 @@ impl SfFbUninviteDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("target_asset_index", &self.target_asset_index)?; - s.serialize_field("original_folder_name", &self.original_folder_name)?; + s.serialize_field("new_value", &self.new_value)?; + if let Some(val) = &self.previous_value { + s.serialize_field("previous_value", val)?; + } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for SfFbUninviteDetails { +impl<'de> ::serde::de::Deserialize<'de> for SharedContentChangeDownloadsPolicyDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SfFbUninviteDetails; + type Value = SharedContentChangeDownloadsPolicyDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SfFbUninviteDetails struct") + f.write_str("a SharedContentChangeDownloadsPolicyDetails struct") } fn visit_map>(self, map: V) -> Result { - SfFbUninviteDetails::internal_deserialize(map) + SharedContentChangeDownloadsPolicyDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("SfFbUninviteDetails", SF_FB_UNINVITE_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("SharedContentChangeDownloadsPolicyDetails", SHARED_CONTENT_CHANGE_DOWNLOADS_POLICY_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SfFbUninviteDetails { +impl ::serde::ser::Serialize for SharedContentChangeDownloadsPolicyDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SfFbUninviteDetails", 2)?; + let mut s = serializer.serialize_struct("SharedContentChangeDownloadsPolicyDetails", 2)?; self.internal_serialize::(&mut s)?; s.end() } @@ -86618,30 +108554,30 @@ impl ::serde::ser::Serialize for SfFbUninviteDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SfFbUninviteType { +pub struct SharedContentChangeDownloadsPolicyType { pub description: String, } -impl SfFbUninviteType { +impl SharedContentChangeDownloadsPolicyType { pub fn new(description: String) -> Self { - SfFbUninviteType { + SharedContentChangeDownloadsPolicyType { description, } } } -const SF_FB_UNINVITE_TYPE_FIELDS: &[&str] = &["description"]; -impl SfFbUninviteType { +const SHARED_CONTENT_CHANGE_DOWNLOADS_POLICY_TYPE_FIELDS: &[&str] = &["description"]; +impl SharedContentChangeDownloadsPolicyType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -86662,7 +108598,7 @@ impl SfFbUninviteType { if optional && nothing { return Ok(None); } - let result = SfFbUninviteType { + let result = SharedContentChangeDownloadsPolicyType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -86678,72 +108614,105 @@ impl SfFbUninviteType { } } -impl<'de> ::serde::de::Deserialize<'de> for SfFbUninviteType { +impl<'de> ::serde::de::Deserialize<'de> for SharedContentChangeDownloadsPolicyType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SfFbUninviteType; + type Value = SharedContentChangeDownloadsPolicyType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SfFbUninviteType struct") + f.write_str("a SharedContentChangeDownloadsPolicyType struct") } fn visit_map>(self, map: V) -> Result { - SfFbUninviteType::internal_deserialize(map) + SharedContentChangeDownloadsPolicyType::internal_deserialize(map) } } - deserializer.deserialize_struct("SfFbUninviteType", SF_FB_UNINVITE_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("SharedContentChangeDownloadsPolicyType", SHARED_CONTENT_CHANGE_DOWNLOADS_POLICY_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SfFbUninviteType { +impl ::serde::ser::Serialize for SharedContentChangeDownloadsPolicyType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SfFbUninviteType", 1)?; + let mut s = serializer.serialize_struct("SharedContentChangeDownloadsPolicyType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Invited group to shared folder. +/// Changed access type of invitee to shared file/folder before invite was accepted. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SfInviteGroupDetails { - /// Target asset position in the Assets list. - pub target_asset_index: u64, +pub struct SharedContentChangeInviteeRoleDetails { + /// New access level. + pub new_access_level: crate::types::sharing::AccessLevel, + /// The invitee whose role was changed. + pub invitee: EmailAddress, + /// Previous access level. Might be missing due to historical data gap. + pub previous_access_level: Option, } -impl SfInviteGroupDetails { - pub fn new(target_asset_index: u64) -> Self { - SfInviteGroupDetails { - target_asset_index, +impl SharedContentChangeInviteeRoleDetails { + pub fn new( + new_access_level: crate::types::sharing::AccessLevel, + invitee: EmailAddress, + ) -> Self { + SharedContentChangeInviteeRoleDetails { + new_access_level, + invitee, + previous_access_level: None, } } + + pub fn with_previous_access_level( + mut self, + value: crate::types::sharing::AccessLevel, + ) -> Self { + self.previous_access_level = Some(value); + self + } } -const SF_INVITE_GROUP_DETAILS_FIELDS: &[&str] = &["target_asset_index"]; -impl SfInviteGroupDetails { +const SHARED_CONTENT_CHANGE_INVITEE_ROLE_DETAILS_FIELDS: &[&str] = &["new_access_level", + "invitee", + "previous_access_level"]; +impl SharedContentChangeInviteeRoleDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_target_asset_index = None; + ) -> Result, V::Error> { + let mut field_new_access_level = None; + let mut field_invitee = None; + let mut field_previous_access_level = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "target_asset_index" => { - if field_target_asset_index.is_some() { - return Err(::serde::de::Error::duplicate_field("target_asset_index")); + "new_access_level" => { + if field_new_access_level.is_some() { + return Err(::serde::de::Error::duplicate_field("new_access_level")); } - field_target_asset_index = Some(map.next_value()?); + field_new_access_level = Some(map.next_value()?); + } + "invitee" => { + if field_invitee.is_some() { + return Err(::serde::de::Error::duplicate_field("invitee")); + } + field_invitee = Some(map.next_value()?); + } + "previous_access_level" => { + if field_previous_access_level.is_some() { + return Err(::serde::de::Error::duplicate_field("previous_access_level")); + } + field_previous_access_level = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -86754,8 +108723,10 @@ impl SfInviteGroupDetails { if optional && nothing { return Ok(None); } - let result = SfInviteGroupDetails { - target_asset_index: field_target_asset_index.ok_or_else(|| ::serde::de::Error::missing_field("target_asset_index"))?, + let result = SharedContentChangeInviteeRoleDetails { + new_access_level: field_new_access_level.ok_or_else(|| ::serde::de::Error::missing_field("new_access_level"))?, + invitee: field_invitee.ok_or_else(|| ::serde::de::Error::missing_field("invitee"))?, + previous_access_level: field_previous_access_level.and_then(Option::flatten), }; Ok(Some(result)) } @@ -86765,34 +108736,38 @@ impl SfInviteGroupDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("target_asset_index", &self.target_asset_index)?; + s.serialize_field("new_access_level", &self.new_access_level)?; + s.serialize_field("invitee", &self.invitee)?; + if let Some(val) = &self.previous_access_level { + s.serialize_field("previous_access_level", val)?; + } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for SfInviteGroupDetails { +impl<'de> ::serde::de::Deserialize<'de> for SharedContentChangeInviteeRoleDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SfInviteGroupDetails; + type Value = SharedContentChangeInviteeRoleDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SfInviteGroupDetails struct") + f.write_str("a SharedContentChangeInviteeRoleDetails struct") } fn visit_map>(self, map: V) -> Result { - SfInviteGroupDetails::internal_deserialize(map) + SharedContentChangeInviteeRoleDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("SfInviteGroupDetails", SF_INVITE_GROUP_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("SharedContentChangeInviteeRoleDetails", SHARED_CONTENT_CHANGE_INVITEE_ROLE_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SfInviteGroupDetails { +impl ::serde::ser::Serialize for SharedContentChangeInviteeRoleDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SfInviteGroupDetails", 1)?; + let mut s = serializer.serialize_struct("SharedContentChangeInviteeRoleDetails", 3)?; self.internal_serialize::(&mut s)?; s.end() } @@ -86800,30 +108775,30 @@ impl ::serde::ser::Serialize for SfInviteGroupDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SfInviteGroupType { +pub struct SharedContentChangeInviteeRoleType { pub description: String, } -impl SfInviteGroupType { +impl SharedContentChangeInviteeRoleType { pub fn new(description: String) -> Self { - SfInviteGroupType { + SharedContentChangeInviteeRoleType { description, } } } -const SF_INVITE_GROUP_TYPE_FIELDS: &[&str] = &["description"]; -impl SfInviteGroupType { +const SHARED_CONTENT_CHANGE_INVITEE_ROLE_TYPE_FIELDS: &[&str] = &["description"]; +impl SharedContentChangeInviteeRoleType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -86844,7 +108819,7 @@ impl SfInviteGroupType { if optional && nothing { return Ok(None); } - let result = SfInviteGroupType { + let result = SharedContentChangeInviteeRoleType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -86860,83 +108835,88 @@ impl SfInviteGroupType { } } -impl<'de> ::serde::de::Deserialize<'de> for SfInviteGroupType { +impl<'de> ::serde::de::Deserialize<'de> for SharedContentChangeInviteeRoleType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SfInviteGroupType; + type Value = SharedContentChangeInviteeRoleType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SfInviteGroupType struct") + f.write_str("a SharedContentChangeInviteeRoleType struct") } fn visit_map>(self, map: V) -> Result { - SfInviteGroupType::internal_deserialize(map) + SharedContentChangeInviteeRoleType::internal_deserialize(map) } } - deserializer.deserialize_struct("SfInviteGroupType", SF_INVITE_GROUP_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("SharedContentChangeInviteeRoleType", SHARED_CONTENT_CHANGE_INVITEE_ROLE_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SfInviteGroupType { +impl ::serde::ser::Serialize for SharedContentChangeInviteeRoleType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SfInviteGroupType", 1)?; + let mut s = serializer.serialize_struct("SharedContentChangeInviteeRoleType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Granted access to shared folder. +/// Changed link audience of shared file/folder. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SfTeamGrantAccessDetails { - /// Target asset position in the Assets list. - pub target_asset_index: u64, - /// Original shared folder name. - pub original_folder_name: String, +pub struct SharedContentChangeLinkAudienceDetails { + /// New link audience value. + pub new_value: crate::types::sharing::LinkAudience, + /// Previous link audience value. + pub previous_value: Option, } -impl SfTeamGrantAccessDetails { - pub fn new(target_asset_index: u64, original_folder_name: String) -> Self { - SfTeamGrantAccessDetails { - target_asset_index, - original_folder_name, +impl SharedContentChangeLinkAudienceDetails { + pub fn new(new_value: crate::types::sharing::LinkAudience) -> Self { + SharedContentChangeLinkAudienceDetails { + new_value, + previous_value: None, } } + + pub fn with_previous_value(mut self, value: crate::types::sharing::LinkAudience) -> Self { + self.previous_value = Some(value); + self + } } -const SF_TEAM_GRANT_ACCESS_DETAILS_FIELDS: &[&str] = &["target_asset_index", - "original_folder_name"]; -impl SfTeamGrantAccessDetails { +const SHARED_CONTENT_CHANGE_LINK_AUDIENCE_DETAILS_FIELDS: &[&str] = &["new_value", + "previous_value"]; +impl SharedContentChangeLinkAudienceDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_target_asset_index = None; - let mut field_original_folder_name = None; + ) -> Result, V::Error> { + let mut field_new_value = None; + let mut field_previous_value = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "target_asset_index" => { - if field_target_asset_index.is_some() { - return Err(::serde::de::Error::duplicate_field("target_asset_index")); + "new_value" => { + if field_new_value.is_some() { + return Err(::serde::de::Error::duplicate_field("new_value")); } - field_target_asset_index = Some(map.next_value()?); + field_new_value = Some(map.next_value()?); } - "original_folder_name" => { - if field_original_folder_name.is_some() { - return Err(::serde::de::Error::duplicate_field("original_folder_name")); + "previous_value" => { + if field_previous_value.is_some() { + return Err(::serde::de::Error::duplicate_field("previous_value")); } - field_original_folder_name = Some(map.next_value()?); + field_previous_value = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -86947,9 +108927,9 @@ impl SfTeamGrantAccessDetails { if optional && nothing { return Ok(None); } - let result = SfTeamGrantAccessDetails { - target_asset_index: field_target_asset_index.ok_or_else(|| ::serde::de::Error::missing_field("target_asset_index"))?, - original_folder_name: field_original_folder_name.ok_or_else(|| ::serde::de::Error::missing_field("original_folder_name"))?, + let result = SharedContentChangeLinkAudienceDetails { + new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, + previous_value: field_previous_value.and_then(Option::flatten), }; Ok(Some(result)) } @@ -86959,35 +108939,37 @@ impl SfTeamGrantAccessDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("target_asset_index", &self.target_asset_index)?; - s.serialize_field("original_folder_name", &self.original_folder_name)?; + s.serialize_field("new_value", &self.new_value)?; + if let Some(val) = &self.previous_value { + s.serialize_field("previous_value", val)?; + } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for SfTeamGrantAccessDetails { +impl<'de> ::serde::de::Deserialize<'de> for SharedContentChangeLinkAudienceDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SfTeamGrantAccessDetails; + type Value = SharedContentChangeLinkAudienceDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SfTeamGrantAccessDetails struct") + f.write_str("a SharedContentChangeLinkAudienceDetails struct") } fn visit_map>(self, map: V) -> Result { - SfTeamGrantAccessDetails::internal_deserialize(map) + SharedContentChangeLinkAudienceDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("SfTeamGrantAccessDetails", SF_TEAM_GRANT_ACCESS_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("SharedContentChangeLinkAudienceDetails", SHARED_CONTENT_CHANGE_LINK_AUDIENCE_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SfTeamGrantAccessDetails { +impl ::serde::ser::Serialize for SharedContentChangeLinkAudienceDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SfTeamGrantAccessDetails", 2)?; + let mut s = serializer.serialize_struct("SharedContentChangeLinkAudienceDetails", 2)?; self.internal_serialize::(&mut s)?; s.end() } @@ -86995,30 +108977,30 @@ impl ::serde::ser::Serialize for SfTeamGrantAccessDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SfTeamGrantAccessType { +pub struct SharedContentChangeLinkAudienceType { pub description: String, } -impl SfTeamGrantAccessType { +impl SharedContentChangeLinkAudienceType { pub fn new(description: String) -> Self { - SfTeamGrantAccessType { + SharedContentChangeLinkAudienceType { description, } } } -const SF_TEAM_GRANT_ACCESS_TYPE_FIELDS: &[&str] = &["description"]; -impl SfTeamGrantAccessType { +const SHARED_CONTENT_CHANGE_LINK_AUDIENCE_TYPE_FIELDS: &[&str] = &["description"]; +impl SharedContentChangeLinkAudienceType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -87039,7 +109021,7 @@ impl SfTeamGrantAccessType { if optional && nothing { return Ok(None); } - let result = SfTeamGrantAccessType { + let result = SharedContentChangeLinkAudienceType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -87055,115 +109037,78 @@ impl SfTeamGrantAccessType { } } -impl<'de> ::serde::de::Deserialize<'de> for SfTeamGrantAccessType { +impl<'de> ::serde::de::Deserialize<'de> for SharedContentChangeLinkAudienceType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SfTeamGrantAccessType; + type Value = SharedContentChangeLinkAudienceType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SfTeamGrantAccessType struct") + f.write_str("a SharedContentChangeLinkAudienceType struct") } fn visit_map>(self, map: V) -> Result { - SfTeamGrantAccessType::internal_deserialize(map) + SharedContentChangeLinkAudienceType::internal_deserialize(map) } } - deserializer.deserialize_struct("SfTeamGrantAccessType", SF_TEAM_GRANT_ACCESS_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("SharedContentChangeLinkAudienceType", SHARED_CONTENT_CHANGE_LINK_AUDIENCE_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SfTeamGrantAccessType { +impl ::serde::ser::Serialize for SharedContentChangeLinkAudienceType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SfTeamGrantAccessType", 1)?; + let mut s = serializer.serialize_struct("SharedContentChangeLinkAudienceType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Changed team member's role in shared folder. -#[derive(Debug, Clone, PartialEq, Eq)] +/// Changed link expiration of shared file/folder. +#[derive(Debug, Clone, PartialEq, Eq, Default)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SfTeamInviteChangeRoleDetails { - /// Target asset position in the Assets list. - pub target_asset_index: u64, - /// Original shared folder name. - pub original_folder_name: String, - /// New sharing permission. - pub new_sharing_permission: Option, - /// Previous sharing permission. - pub previous_sharing_permission: Option, +pub struct SharedContentChangeLinkExpiryDetails { + /// New shared content link expiration date. Might be missing due to historical data gap. + pub new_value: Option, + /// Previous shared content link expiration date. Might be missing due to historical data gap. + pub previous_value: Option, } -impl SfTeamInviteChangeRoleDetails { - pub fn new(target_asset_index: u64, original_folder_name: String) -> Self { - SfTeamInviteChangeRoleDetails { - target_asset_index, - original_folder_name, - new_sharing_permission: None, - previous_sharing_permission: None, - } - } - - pub fn with_new_sharing_permission(mut self, value: String) -> Self { - self.new_sharing_permission = Some(value); +impl SharedContentChangeLinkExpiryDetails { + pub fn with_new_value(mut self, value: crate::types::common::DropboxTimestamp) -> Self { + self.new_value = Some(value); self } - pub fn with_previous_sharing_permission(mut self, value: String) -> Self { - self.previous_sharing_permission = Some(value); + pub fn with_previous_value(mut self, value: crate::types::common::DropboxTimestamp) -> Self { + self.previous_value = Some(value); self } } -const SF_TEAM_INVITE_CHANGE_ROLE_DETAILS_FIELDS: &[&str] = &["target_asset_index", - "original_folder_name", - "new_sharing_permission", - "previous_sharing_permission"]; -impl SfTeamInviteChangeRoleDetails { +const SHARED_CONTENT_CHANGE_LINK_EXPIRY_DETAILS_FIELDS: &[&str] = &["new_value", + "previous_value"]; +impl SharedContentChangeLinkExpiryDetails { + // no _opt deserializer pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( - map: V, - ) -> Result { - Self::internal_deserialize_opt(map, false).map(Option::unwrap) - } - - pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - optional: bool, - ) -> Result, V::Error> { - let mut field_target_asset_index = None; - let mut field_original_folder_name = None; - let mut field_new_sharing_permission = None; - let mut field_previous_sharing_permission = None; - let mut nothing = true; + ) -> Result { + let mut field_new_value = None; + let mut field_previous_value = None; while let Some(key) = map.next_key::<&str>()? { - nothing = false; match key { - "target_asset_index" => { - if field_target_asset_index.is_some() { - return Err(::serde::de::Error::duplicate_field("target_asset_index")); - } - field_target_asset_index = Some(map.next_value()?); - } - "original_folder_name" => { - if field_original_folder_name.is_some() { - return Err(::serde::de::Error::duplicate_field("original_folder_name")); - } - field_original_folder_name = Some(map.next_value()?); - } - "new_sharing_permission" => { - if field_new_sharing_permission.is_some() { - return Err(::serde::de::Error::duplicate_field("new_sharing_permission")); + "new_value" => { + if field_new_value.is_some() { + return Err(::serde::de::Error::duplicate_field("new_value")); } - field_new_sharing_permission = Some(map.next_value()?); + field_new_value = Some(map.next_value()?); } - "previous_sharing_permission" => { - if field_previous_sharing_permission.is_some() { - return Err(::serde::de::Error::duplicate_field("previous_sharing_permission")); + "previous_value" => { + if field_previous_value.is_some() { + return Err(::serde::de::Error::duplicate_field("previous_value")); } - field_previous_sharing_permission = Some(map.next_value()?); + field_previous_value = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -87171,16 +109116,11 @@ impl SfTeamInviteChangeRoleDetails { } } } - if optional && nothing { - return Ok(None); - } - let result = SfTeamInviteChangeRoleDetails { - target_asset_index: field_target_asset_index.ok_or_else(|| ::serde::de::Error::missing_field("target_asset_index"))?, - original_folder_name: field_original_folder_name.ok_or_else(|| ::serde::de::Error::missing_field("original_folder_name"))?, - new_sharing_permission: field_new_sharing_permission.and_then(Option::flatten), - previous_sharing_permission: field_previous_sharing_permission.and_then(Option::flatten), + let result = SharedContentChangeLinkExpiryDetails { + new_value: field_new_value.and_then(Option::flatten), + previous_value: field_previous_value.and_then(Option::flatten), }; - Ok(Some(result)) + Ok(result) } pub(crate) fn internal_serialize( @@ -87188,41 +109128,39 @@ impl SfTeamInviteChangeRoleDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("target_asset_index", &self.target_asset_index)?; - s.serialize_field("original_folder_name", &self.original_folder_name)?; - if let Some(val) = &self.new_sharing_permission { - s.serialize_field("new_sharing_permission", val)?; + if let Some(val) = &self.new_value { + s.serialize_field("new_value", val)?; } - if let Some(val) = &self.previous_sharing_permission { - s.serialize_field("previous_sharing_permission", val)?; + if let Some(val) = &self.previous_value { + s.serialize_field("previous_value", val)?; } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for SfTeamInviteChangeRoleDetails { +impl<'de> ::serde::de::Deserialize<'de> for SharedContentChangeLinkExpiryDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SfTeamInviteChangeRoleDetails; + type Value = SharedContentChangeLinkExpiryDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SfTeamInviteChangeRoleDetails struct") + f.write_str("a SharedContentChangeLinkExpiryDetails struct") } fn visit_map>(self, map: V) -> Result { - SfTeamInviteChangeRoleDetails::internal_deserialize(map) + SharedContentChangeLinkExpiryDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("SfTeamInviteChangeRoleDetails", SF_TEAM_INVITE_CHANGE_ROLE_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("SharedContentChangeLinkExpiryDetails", SHARED_CONTENT_CHANGE_LINK_EXPIRY_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SfTeamInviteChangeRoleDetails { +impl ::serde::ser::Serialize for SharedContentChangeLinkExpiryDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SfTeamInviteChangeRoleDetails", 4)?; + let mut s = serializer.serialize_struct("SharedContentChangeLinkExpiryDetails", 2)?; self.internal_serialize::(&mut s)?; s.end() } @@ -87230,30 +109168,30 @@ impl ::serde::ser::Serialize for SfTeamInviteChangeRoleDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SfTeamInviteChangeRoleType { +pub struct SharedContentChangeLinkExpiryType { pub description: String, } -impl SfTeamInviteChangeRoleType { +impl SharedContentChangeLinkExpiryType { pub fn new(description: String) -> Self { - SfTeamInviteChangeRoleType { + SharedContentChangeLinkExpiryType { description, } } } -const SF_TEAM_INVITE_CHANGE_ROLE_TYPE_FIELDS: &[&str] = &["description"]; -impl SfTeamInviteChangeRoleType { +const SHARED_CONTENT_CHANGE_LINK_EXPIRY_TYPE_FIELDS: &[&str] = &["description"]; +impl SharedContentChangeLinkExpiryType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -87274,7 +109212,7 @@ impl SfTeamInviteChangeRoleType { if optional && nothing { return Ok(None); } - let result = SfTeamInviteChangeRoleType { + let result = SharedContentChangeLinkExpiryType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -87290,185 +109228,104 @@ impl SfTeamInviteChangeRoleType { } } -impl<'de> ::serde::de::Deserialize<'de> for SfTeamInviteChangeRoleType { +impl<'de> ::serde::de::Deserialize<'de> for SharedContentChangeLinkExpiryType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SfTeamInviteChangeRoleType; + type Value = SharedContentChangeLinkExpiryType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SfTeamInviteChangeRoleType struct") + f.write_str("a SharedContentChangeLinkExpiryType struct") } fn visit_map>(self, map: V) -> Result { - SfTeamInviteChangeRoleType::internal_deserialize(map) + SharedContentChangeLinkExpiryType::internal_deserialize(map) } } - deserializer.deserialize_struct("SfTeamInviteChangeRoleType", SF_TEAM_INVITE_CHANGE_ROLE_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("SharedContentChangeLinkExpiryType", SHARED_CONTENT_CHANGE_LINK_EXPIRY_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SfTeamInviteChangeRoleType { +impl ::serde::ser::Serialize for SharedContentChangeLinkExpiryType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SfTeamInviteChangeRoleType", 1)?; + let mut s = serializer.serialize_struct("SharedContentChangeLinkExpiryType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Invited team members to shared folder. -#[derive(Debug, Clone, PartialEq, Eq)] +/// Changed link password of shared file/folder. +#[derive(Debug, Clone, PartialEq, Eq, Default)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SfTeamInviteDetails { - /// Target asset position in the Assets list. - pub target_asset_index: u64, - /// Original shared folder name. - pub original_folder_name: String, - /// Sharing permission. - pub sharing_permission: Option, -} - -impl SfTeamInviteDetails { - pub fn new(target_asset_index: u64, original_folder_name: String) -> Self { - SfTeamInviteDetails { - target_asset_index, - original_folder_name, - sharing_permission: None, - } - } - - pub fn with_sharing_permission(mut self, value: String) -> Self { - self.sharing_permission = Some(value); - self - } +pub struct SharedContentChangeLinkPasswordDetails { } -const SF_TEAM_INVITE_DETAILS_FIELDS: &[&str] = &["target_asset_index", - "original_folder_name", - "sharing_permission"]; -impl SfTeamInviteDetails { +const SHARED_CONTENT_CHANGE_LINK_PASSWORD_DETAILS_FIELDS: &[&str] = &[]; +impl SharedContentChangeLinkPasswordDetails { + // no _opt deserializer pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( - map: V, - ) -> Result { - Self::internal_deserialize_opt(map, false).map(Option::unwrap) - } - - pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - optional: bool, - ) -> Result, V::Error> { - let mut field_target_asset_index = None; - let mut field_original_folder_name = None; - let mut field_sharing_permission = None; - let mut nothing = true; - while let Some(key) = map.next_key::<&str>()? { - nothing = false; - match key { - "target_asset_index" => { - if field_target_asset_index.is_some() { - return Err(::serde::de::Error::duplicate_field("target_asset_index")); - } - field_target_asset_index = Some(map.next_value()?); - } - "original_folder_name" => { - if field_original_folder_name.is_some() { - return Err(::serde::de::Error::duplicate_field("original_folder_name")); - } - field_original_folder_name = Some(map.next_value()?); - } - "sharing_permission" => { - if field_sharing_permission.is_some() { - return Err(::serde::de::Error::duplicate_field("sharing_permission")); - } - field_sharing_permission = Some(map.next_value()?); - } - _ => { - // unknown field allowed and ignored - map.next_value::<::serde_json::Value>()?; - } - } - } - if optional && nothing { - return Ok(None); - } - let result = SfTeamInviteDetails { - target_asset_index: field_target_asset_index.ok_or_else(|| ::serde::de::Error::missing_field("target_asset_index"))?, - original_folder_name: field_original_folder_name.ok_or_else(|| ::serde::de::Error::missing_field("original_folder_name"))?, - sharing_permission: field_sharing_permission.and_then(Option::flatten), - }; - Ok(Some(result)) - } - - pub(crate) fn internal_serialize( - &self, - s: &mut S::SerializeStruct, - ) -> Result<(), S::Error> { - use serde::ser::SerializeStruct; - s.serialize_field("target_asset_index", &self.target_asset_index)?; - s.serialize_field("original_folder_name", &self.original_folder_name)?; - if let Some(val) = &self.sharing_permission { - s.serialize_field("sharing_permission", val)?; - } - Ok(()) + ) -> Result { + // ignore any fields found; none are presently recognized + crate::eat_json_fields(&mut map)?; + Ok(SharedContentChangeLinkPasswordDetails {}) } } -impl<'de> ::serde::de::Deserialize<'de> for SfTeamInviteDetails { +impl<'de> ::serde::de::Deserialize<'de> for SharedContentChangeLinkPasswordDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SfTeamInviteDetails; + type Value = SharedContentChangeLinkPasswordDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SfTeamInviteDetails struct") + f.write_str("a SharedContentChangeLinkPasswordDetails struct") } fn visit_map>(self, map: V) -> Result { - SfTeamInviteDetails::internal_deserialize(map) + SharedContentChangeLinkPasswordDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("SfTeamInviteDetails", SF_TEAM_INVITE_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("SharedContentChangeLinkPasswordDetails", SHARED_CONTENT_CHANGE_LINK_PASSWORD_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SfTeamInviteDetails { +impl ::serde::ser::Serialize for SharedContentChangeLinkPasswordDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SfTeamInviteDetails", 3)?; - self.internal_serialize::(&mut s)?; - s.end() + serializer.serialize_struct("SharedContentChangeLinkPasswordDetails", 0)?.end() } } #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SfTeamInviteType { +pub struct SharedContentChangeLinkPasswordType { pub description: String, } -impl SfTeamInviteType { +impl SharedContentChangeLinkPasswordType { pub fn new(description: String) -> Self { - SfTeamInviteType { + SharedContentChangeLinkPasswordType { description, } } } -const SF_TEAM_INVITE_TYPE_FIELDS: &[&str] = &["description"]; -impl SfTeamInviteType { +const SHARED_CONTENT_CHANGE_LINK_PASSWORD_TYPE_FIELDS: &[&str] = &["description"]; +impl SharedContentChangeLinkPasswordType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -87489,7 +109346,7 @@ impl SfTeamInviteType { if optional && nothing { return Ok(None); } - let result = SfTeamInviteType { + let result = SharedContentChangeLinkPasswordType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -87505,83 +109362,91 @@ impl SfTeamInviteType { } } -impl<'de> ::serde::de::Deserialize<'de> for SfTeamInviteType { +impl<'de> ::serde::de::Deserialize<'de> for SharedContentChangeLinkPasswordType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SfTeamInviteType; + type Value = SharedContentChangeLinkPasswordType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SfTeamInviteType struct") + f.write_str("a SharedContentChangeLinkPasswordType struct") } fn visit_map>(self, map: V) -> Result { - SfTeamInviteType::internal_deserialize(map) + SharedContentChangeLinkPasswordType::internal_deserialize(map) } } - deserializer.deserialize_struct("SfTeamInviteType", SF_TEAM_INVITE_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("SharedContentChangeLinkPasswordType", SHARED_CONTENT_CHANGE_LINK_PASSWORD_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SfTeamInviteType { +impl ::serde::ser::Serialize for SharedContentChangeLinkPasswordType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SfTeamInviteType", 1)?; + let mut s = serializer.serialize_struct("SharedContentChangeLinkPasswordType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Joined team member's shared folder. +/// Changed access type of shared file/folder member. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SfTeamJoinDetails { - /// Target asset position in the Assets list. - pub target_asset_index: u64, - /// Original shared folder name. - pub original_folder_name: String, +pub struct SharedContentChangeMemberRoleDetails { + /// New access level. + pub new_access_level: crate::types::sharing::AccessLevel, + /// Previous access level. Might be missing due to historical data gap. + pub previous_access_level: Option, } -impl SfTeamJoinDetails { - pub fn new(target_asset_index: u64, original_folder_name: String) -> Self { - SfTeamJoinDetails { - target_asset_index, - original_folder_name, +impl SharedContentChangeMemberRoleDetails { + pub fn new(new_access_level: crate::types::sharing::AccessLevel) -> Self { + SharedContentChangeMemberRoleDetails { + new_access_level, + previous_access_level: None, } } + + pub fn with_previous_access_level( + mut self, + value: crate::types::sharing::AccessLevel, + ) -> Self { + self.previous_access_level = Some(value); + self + } } -const SF_TEAM_JOIN_DETAILS_FIELDS: &[&str] = &["target_asset_index", - "original_folder_name"]; -impl SfTeamJoinDetails { +const SHARED_CONTENT_CHANGE_MEMBER_ROLE_DETAILS_FIELDS: &[&str] = &["new_access_level", + "previous_access_level"]; +impl SharedContentChangeMemberRoleDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_target_asset_index = None; - let mut field_original_folder_name = None; + ) -> Result, V::Error> { + let mut field_new_access_level = None; + let mut field_previous_access_level = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "target_asset_index" => { - if field_target_asset_index.is_some() { - return Err(::serde::de::Error::duplicate_field("target_asset_index")); + "new_access_level" => { + if field_new_access_level.is_some() { + return Err(::serde::de::Error::duplicate_field("new_access_level")); } - field_target_asset_index = Some(map.next_value()?); + field_new_access_level = Some(map.next_value()?); } - "original_folder_name" => { - if field_original_folder_name.is_some() { - return Err(::serde::de::Error::duplicate_field("original_folder_name")); + "previous_access_level" => { + if field_previous_access_level.is_some() { + return Err(::serde::de::Error::duplicate_field("previous_access_level")); } - field_original_folder_name = Some(map.next_value()?); + field_previous_access_level = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -87592,9 +109457,9 @@ impl SfTeamJoinDetails { if optional && nothing { return Ok(None); } - let result = SfTeamJoinDetails { - target_asset_index: field_target_asset_index.ok_or_else(|| ::serde::de::Error::missing_field("target_asset_index"))?, - original_folder_name: field_original_folder_name.ok_or_else(|| ::serde::de::Error::missing_field("original_folder_name"))?, + let result = SharedContentChangeMemberRoleDetails { + new_access_level: field_new_access_level.ok_or_else(|| ::serde::de::Error::missing_field("new_access_level"))?, + previous_access_level: field_previous_access_level.and_then(Option::flatten), }; Ok(Some(result)) } @@ -87604,121 +109469,78 @@ impl SfTeamJoinDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("target_asset_index", &self.target_asset_index)?; - s.serialize_field("original_folder_name", &self.original_folder_name)?; + s.serialize_field("new_access_level", &self.new_access_level)?; + if let Some(val) = &self.previous_access_level { + s.serialize_field("previous_access_level", val)?; + } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for SfTeamJoinDetails { +impl<'de> ::serde::de::Deserialize<'de> for SharedContentChangeMemberRoleDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SfTeamJoinDetails; + type Value = SharedContentChangeMemberRoleDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SfTeamJoinDetails struct") + f.write_str("a SharedContentChangeMemberRoleDetails struct") } fn visit_map>(self, map: V) -> Result { - SfTeamJoinDetails::internal_deserialize(map) + SharedContentChangeMemberRoleDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("SfTeamJoinDetails", SF_TEAM_JOIN_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("SharedContentChangeMemberRoleDetails", SHARED_CONTENT_CHANGE_MEMBER_ROLE_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SfTeamJoinDetails { +impl ::serde::ser::Serialize for SharedContentChangeMemberRoleDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SfTeamJoinDetails", 2)?; + let mut s = serializer.serialize_struct("SharedContentChangeMemberRoleDetails", 2)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Joined team member's shared folder from link. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SfTeamJoinFromOobLinkDetails { - /// Target asset position in the Assets list. - pub target_asset_index: u64, - /// Original shared folder name. - pub original_folder_name: String, - /// Shared link token key. - pub token_key: Option, - /// Sharing permission. - pub sharing_permission: Option, +pub struct SharedContentChangeMemberRoleType { + pub description: String, } -impl SfTeamJoinFromOobLinkDetails { - pub fn new(target_asset_index: u64, original_folder_name: String) -> Self { - SfTeamJoinFromOobLinkDetails { - target_asset_index, - original_folder_name, - token_key: None, - sharing_permission: None, +impl SharedContentChangeMemberRoleType { + pub fn new(description: String) -> Self { + SharedContentChangeMemberRoleType { + description, } } - - pub fn with_token_key(mut self, value: String) -> Self { - self.token_key = Some(value); - self - } - - pub fn with_sharing_permission(mut self, value: String) -> Self { - self.sharing_permission = Some(value); - self - } } -const SF_TEAM_JOIN_FROM_OOB_LINK_DETAILS_FIELDS: &[&str] = &["target_asset_index", - "original_folder_name", - "token_key", - "sharing_permission"]; -impl SfTeamJoinFromOobLinkDetails { +const SHARED_CONTENT_CHANGE_MEMBER_ROLE_TYPE_FIELDS: &[&str] = &["description"]; +impl SharedContentChangeMemberRoleType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_target_asset_index = None; - let mut field_original_folder_name = None; - let mut field_token_key = None; - let mut field_sharing_permission = None; + ) -> Result, V::Error> { + let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "target_asset_index" => { - if field_target_asset_index.is_some() { - return Err(::serde::de::Error::duplicate_field("target_asset_index")); - } - field_target_asset_index = Some(map.next_value()?); - } - "original_folder_name" => { - if field_original_folder_name.is_some() { - return Err(::serde::de::Error::duplicate_field("original_folder_name")); - } - field_original_folder_name = Some(map.next_value()?); - } - "token_key" => { - if field_token_key.is_some() { - return Err(::serde::de::Error::duplicate_field("token_key")); - } - field_token_key = Some(map.next_value()?); - } - "sharing_permission" => { - if field_sharing_permission.is_some() { - return Err(::serde::de::Error::duplicate_field("sharing_permission")); + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); } - field_sharing_permission = Some(map.next_value()?); + field_description = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -87729,11 +109551,8 @@ impl SfTeamJoinFromOobLinkDetails { if optional && nothing { return Ok(None); } - let result = SfTeamJoinFromOobLinkDetails { - target_asset_index: field_target_asset_index.ok_or_else(|| ::serde::de::Error::missing_field("target_asset_index"))?, - original_folder_name: field_original_folder_name.ok_or_else(|| ::serde::de::Error::missing_field("original_folder_name"))?, - token_key: field_token_key.and_then(Option::flatten), - sharing_permission: field_sharing_permission.and_then(Option::flatten), + let result = SharedContentChangeMemberRoleType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) } @@ -87743,82 +109562,93 @@ impl SfTeamJoinFromOobLinkDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("target_asset_index", &self.target_asset_index)?; - s.serialize_field("original_folder_name", &self.original_folder_name)?; - if let Some(val) = &self.token_key { - s.serialize_field("token_key", val)?; - } - if let Some(val) = &self.sharing_permission { - s.serialize_field("sharing_permission", val)?; - } + s.serialize_field("description", &self.description)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for SfTeamJoinFromOobLinkDetails { +impl<'de> ::serde::de::Deserialize<'de> for SharedContentChangeMemberRoleType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SfTeamJoinFromOobLinkDetails; + type Value = SharedContentChangeMemberRoleType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SfTeamJoinFromOobLinkDetails struct") + f.write_str("a SharedContentChangeMemberRoleType struct") } fn visit_map>(self, map: V) -> Result { - SfTeamJoinFromOobLinkDetails::internal_deserialize(map) + SharedContentChangeMemberRoleType::internal_deserialize(map) } } - deserializer.deserialize_struct("SfTeamJoinFromOobLinkDetails", SF_TEAM_JOIN_FROM_OOB_LINK_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("SharedContentChangeMemberRoleType", SHARED_CONTENT_CHANGE_MEMBER_ROLE_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SfTeamJoinFromOobLinkDetails { +impl ::serde::ser::Serialize for SharedContentChangeMemberRoleType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SfTeamJoinFromOobLinkDetails", 4)?; + let mut s = serializer.serialize_struct("SharedContentChangeMemberRoleType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } +/// Changed whether members can see who viewed shared file/folder. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SfTeamJoinFromOobLinkType { - pub description: String, +pub struct SharedContentChangeViewerInfoPolicyDetails { + /// New viewer info policy. + pub new_value: crate::types::sharing::ViewerInfoPolicy, + /// Previous view info policy. + pub previous_value: Option, } -impl SfTeamJoinFromOobLinkType { - pub fn new(description: String) -> Self { - SfTeamJoinFromOobLinkType { - description, +impl SharedContentChangeViewerInfoPolicyDetails { + pub fn new(new_value: crate::types::sharing::ViewerInfoPolicy) -> Self { + SharedContentChangeViewerInfoPolicyDetails { + new_value, + previous_value: None, } } + + pub fn with_previous_value(mut self, value: crate::types::sharing::ViewerInfoPolicy) -> Self { + self.previous_value = Some(value); + self + } } -const SF_TEAM_JOIN_FROM_OOB_LINK_TYPE_FIELDS: &[&str] = &["description"]; -impl SfTeamJoinFromOobLinkType { +const SHARED_CONTENT_CHANGE_VIEWER_INFO_POLICY_DETAILS_FIELDS: &[&str] = &["new_value", + "previous_value"]; +impl SharedContentChangeViewerInfoPolicyDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_description = None; + ) -> Result, V::Error> { + let mut field_new_value = None; + let mut field_previous_value = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "description" => { - if field_description.is_some() { - return Err(::serde::de::Error::duplicate_field("description")); + "new_value" => { + if field_new_value.is_some() { + return Err(::serde::de::Error::duplicate_field("new_value")); } - field_description = Some(map.next_value()?); + field_new_value = Some(map.next_value()?); + } + "previous_value" => { + if field_previous_value.is_some() { + return Err(::serde::de::Error::duplicate_field("previous_value")); + } + field_previous_value = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -87829,8 +109659,9 @@ impl SfTeamJoinFromOobLinkType { if optional && nothing { return Ok(None); } - let result = SfTeamJoinFromOobLinkType { - description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + let result = SharedContentChangeViewerInfoPolicyDetails { + new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, + previous_value: field_previous_value.and_then(Option::flatten), }; Ok(Some(result)) } @@ -87840,34 +109671,37 @@ impl SfTeamJoinFromOobLinkType { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("description", &self.description)?; + s.serialize_field("new_value", &self.new_value)?; + if let Some(val) = &self.previous_value { + s.serialize_field("previous_value", val)?; + } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for SfTeamJoinFromOobLinkType { +impl<'de> ::serde::de::Deserialize<'de> for SharedContentChangeViewerInfoPolicyDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SfTeamJoinFromOobLinkType; + type Value = SharedContentChangeViewerInfoPolicyDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SfTeamJoinFromOobLinkType struct") + f.write_str("a SharedContentChangeViewerInfoPolicyDetails struct") } fn visit_map>(self, map: V) -> Result { - SfTeamJoinFromOobLinkType::internal_deserialize(map) + SharedContentChangeViewerInfoPolicyDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("SfTeamJoinFromOobLinkType", SF_TEAM_JOIN_FROM_OOB_LINK_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("SharedContentChangeViewerInfoPolicyDetails", SHARED_CONTENT_CHANGE_VIEWER_INFO_POLICY_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SfTeamJoinFromOobLinkType { +impl ::serde::ser::Serialize for SharedContentChangeViewerInfoPolicyDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SfTeamJoinFromOobLinkType", 1)?; + let mut s = serializer.serialize_struct("SharedContentChangeViewerInfoPolicyDetails", 2)?; self.internal_serialize::(&mut s)?; s.end() } @@ -87875,30 +109709,30 @@ impl ::serde::ser::Serialize for SfTeamJoinFromOobLinkType { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SfTeamJoinType { +pub struct SharedContentChangeViewerInfoPolicyType { pub description: String, } -impl SfTeamJoinType { +impl SharedContentChangeViewerInfoPolicyType { pub fn new(description: String) -> Self { - SfTeamJoinType { + SharedContentChangeViewerInfoPolicyType { description, } } } -const SF_TEAM_JOIN_TYPE_FIELDS: &[&str] = &["description"]; -impl SfTeamJoinType { +const SHARED_CONTENT_CHANGE_VIEWER_INFO_POLICY_TYPE_FIELDS: &[&str] = &["description"]; +impl SharedContentChangeViewerInfoPolicyType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -87919,7 +109753,7 @@ impl SfTeamJoinType { if optional && nothing { return Ok(None); } - let result = SfTeamJoinType { + let result = SharedContentChangeViewerInfoPolicyType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -87935,83 +109769,63 @@ impl SfTeamJoinType { } } -impl<'de> ::serde::de::Deserialize<'de> for SfTeamJoinType { +impl<'de> ::serde::de::Deserialize<'de> for SharedContentChangeViewerInfoPolicyType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SfTeamJoinType; + type Value = SharedContentChangeViewerInfoPolicyType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SfTeamJoinType struct") + f.write_str("a SharedContentChangeViewerInfoPolicyType struct") } fn visit_map>(self, map: V) -> Result { - SfTeamJoinType::internal_deserialize(map) + SharedContentChangeViewerInfoPolicyType::internal_deserialize(map) } } - deserializer.deserialize_struct("SfTeamJoinType", SF_TEAM_JOIN_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("SharedContentChangeViewerInfoPolicyType", SHARED_CONTENT_CHANGE_VIEWER_INFO_POLICY_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SfTeamJoinType { +impl ::serde::ser::Serialize for SharedContentChangeViewerInfoPolicyType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SfTeamJoinType", 1)?; + let mut s = serializer.serialize_struct("SharedContentChangeViewerInfoPolicyType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Unshared folder with team member. -#[derive(Debug, Clone, PartialEq, Eq)] +/// Acquired membership of shared file/folder by accepting invite. +#[derive(Debug, Clone, PartialEq, Eq, Default)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SfTeamUninviteDetails { - /// Target asset position in the Assets list. - pub target_asset_index: u64, - /// Original shared folder name. - pub original_folder_name: String, +pub struct SharedContentClaimInvitationDetails { + /// Shared content link. + pub shared_content_link: Option, } -impl SfTeamUninviteDetails { - pub fn new(target_asset_index: u64, original_folder_name: String) -> Self { - SfTeamUninviteDetails { - target_asset_index, - original_folder_name, - } +impl SharedContentClaimInvitationDetails { + pub fn with_shared_content_link(mut self, value: String) -> Self { + self.shared_content_link = Some(value); + self } } -const SF_TEAM_UNINVITE_DETAILS_FIELDS: &[&str] = &["target_asset_index", - "original_folder_name"]; -impl SfTeamUninviteDetails { +const SHARED_CONTENT_CLAIM_INVITATION_DETAILS_FIELDS: &[&str] = &["shared_content_link"]; +impl SharedContentClaimInvitationDetails { + // no _opt deserializer pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( - map: V, - ) -> Result { - Self::internal_deserialize_opt(map, false).map(Option::unwrap) - } - - pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - optional: bool, - ) -> Result, V::Error> { - let mut field_target_asset_index = None; - let mut field_original_folder_name = None; - let mut nothing = true; + ) -> Result { + let mut field_shared_content_link = None; while let Some(key) = map.next_key::<&str>()? { - nothing = false; match key { - "target_asset_index" => { - if field_target_asset_index.is_some() { - return Err(::serde::de::Error::duplicate_field("target_asset_index")); - } - field_target_asset_index = Some(map.next_value()?); - } - "original_folder_name" => { - if field_original_folder_name.is_some() { - return Err(::serde::de::Error::duplicate_field("original_folder_name")); + "shared_content_link" => { + if field_shared_content_link.is_some() { + return Err(::serde::de::Error::duplicate_field("shared_content_link")); } - field_original_folder_name = Some(map.next_value()?); + field_shared_content_link = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -88019,14 +109833,10 @@ impl SfTeamUninviteDetails { } } } - if optional && nothing { - return Ok(None); - } - let result = SfTeamUninviteDetails { - target_asset_index: field_target_asset_index.ok_or_else(|| ::serde::de::Error::missing_field("target_asset_index"))?, - original_folder_name: field_original_folder_name.ok_or_else(|| ::serde::de::Error::missing_field("original_folder_name"))?, + let result = SharedContentClaimInvitationDetails { + shared_content_link: field_shared_content_link.and_then(Option::flatten), }; - Ok(Some(result)) + Ok(result) } pub(crate) fn internal_serialize( @@ -88034,35 +109844,36 @@ impl SfTeamUninviteDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("target_asset_index", &self.target_asset_index)?; - s.serialize_field("original_folder_name", &self.original_folder_name)?; + if let Some(val) = &self.shared_content_link { + s.serialize_field("shared_content_link", val)?; + } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for SfTeamUninviteDetails { +impl<'de> ::serde::de::Deserialize<'de> for SharedContentClaimInvitationDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SfTeamUninviteDetails; + type Value = SharedContentClaimInvitationDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SfTeamUninviteDetails struct") + f.write_str("a SharedContentClaimInvitationDetails struct") } fn visit_map>(self, map: V) -> Result { - SfTeamUninviteDetails::internal_deserialize(map) + SharedContentClaimInvitationDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("SfTeamUninviteDetails", SF_TEAM_UNINVITE_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("SharedContentClaimInvitationDetails", SHARED_CONTENT_CLAIM_INVITATION_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SfTeamUninviteDetails { +impl ::serde::ser::Serialize for SharedContentClaimInvitationDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SfTeamUninviteDetails", 2)?; + let mut s = serializer.serialize_struct("SharedContentClaimInvitationDetails", 1)?; self.internal_serialize::(&mut s)?; s.end() } @@ -88070,30 +109881,30 @@ impl ::serde::ser::Serialize for SfTeamUninviteDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SfTeamUninviteType { +pub struct SharedContentClaimInvitationType { pub description: String, } -impl SfTeamUninviteType { +impl SharedContentClaimInvitationType { pub fn new(description: String) -> Self { - SfTeamUninviteType { + SharedContentClaimInvitationType { description, } } } -const SF_TEAM_UNINVITE_TYPE_FIELDS: &[&str] = &["description"]; -impl SfTeamUninviteType { +const SHARED_CONTENT_CLAIM_INVITATION_TYPE_FIELDS: &[&str] = &["description"]; +impl SharedContentClaimInvitationType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -88114,7 +109925,7 @@ impl SfTeamUninviteType { if optional && nothing { return Ok(None); } - let result = SfTeamUninviteType { + let result = SharedContentClaimInvitationType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -88130,86 +109941,114 @@ impl SfTeamUninviteType { } } -impl<'de> ::serde::de::Deserialize<'de> for SfTeamUninviteType { +impl<'de> ::serde::de::Deserialize<'de> for SharedContentClaimInvitationType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SfTeamUninviteType; + type Value = SharedContentClaimInvitationType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SfTeamUninviteType struct") + f.write_str("a SharedContentClaimInvitationType struct") } fn visit_map>(self, map: V) -> Result { - SfTeamUninviteType::internal_deserialize(map) + SharedContentClaimInvitationType::internal_deserialize(map) } } - deserializer.deserialize_struct("SfTeamUninviteType", SF_TEAM_UNINVITE_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("SharedContentClaimInvitationType", SHARED_CONTENT_CLAIM_INVITATION_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SfTeamUninviteType { +impl ::serde::ser::Serialize for SharedContentClaimInvitationType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SfTeamUninviteType", 1)?; + let mut s = serializer.serialize_struct("SharedContentClaimInvitationType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Invited user to Dropbox and added them to shared file/folder. +/// Copied shared file/folder to own Dropbox. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SharedContentAddInviteesDetails { +pub struct SharedContentCopyDetails { + /// Shared content link. + pub shared_content_link: String, /// Shared content access level. pub shared_content_access_level: crate::types::sharing::AccessLevel, - /// A list of invitees. - pub invitees: Vec, + /// The path where the member saved the content. + pub destination_path: FilePath, + /// The shared content owner. + pub shared_content_owner: Option, } -impl SharedContentAddInviteesDetails { +impl SharedContentCopyDetails { pub fn new( + shared_content_link: String, shared_content_access_level: crate::types::sharing::AccessLevel, - invitees: Vec, + destination_path: FilePath, ) -> Self { - SharedContentAddInviteesDetails { + SharedContentCopyDetails { + shared_content_link, shared_content_access_level, - invitees, + destination_path, + shared_content_owner: None, } } + + pub fn with_shared_content_owner(mut self, value: UserLogInfo) -> Self { + self.shared_content_owner = Some(value); + self + } } -const SHARED_CONTENT_ADD_INVITEES_DETAILS_FIELDS: &[&str] = &["shared_content_access_level", - "invitees"]; -impl SharedContentAddInviteesDetails { +const SHARED_CONTENT_COPY_DETAILS_FIELDS: &[&str] = &["shared_content_link", + "shared_content_access_level", + "destination_path", + "shared_content_owner"]; +impl SharedContentCopyDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { + let mut field_shared_content_link = None; let mut field_shared_content_access_level = None; - let mut field_invitees = None; + let mut field_destination_path = None; + let mut field_shared_content_owner = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { + "shared_content_link" => { + if field_shared_content_link.is_some() { + return Err(::serde::de::Error::duplicate_field("shared_content_link")); + } + field_shared_content_link = Some(map.next_value()?); + } "shared_content_access_level" => { if field_shared_content_access_level.is_some() { return Err(::serde::de::Error::duplicate_field("shared_content_access_level")); } field_shared_content_access_level = Some(map.next_value()?); } - "invitees" => { - if field_invitees.is_some() { - return Err(::serde::de::Error::duplicate_field("invitees")); + "destination_path" => { + if field_destination_path.is_some() { + return Err(::serde::de::Error::duplicate_field("destination_path")); } - field_invitees = Some(map.next_value()?); + field_destination_path = Some(map.next_value()?); + } + "shared_content_owner" => { + if field_shared_content_owner.is_some() { + return Err(::serde::de::Error::duplicate_field("shared_content_owner")); + } + field_shared_content_owner = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -88220,9 +110059,11 @@ impl SharedContentAddInviteesDetails { if optional && nothing { return Ok(None); } - let result = SharedContentAddInviteesDetails { + let result = SharedContentCopyDetails { + shared_content_link: field_shared_content_link.ok_or_else(|| ::serde::de::Error::missing_field("shared_content_link"))?, shared_content_access_level: field_shared_content_access_level.ok_or_else(|| ::serde::de::Error::missing_field("shared_content_access_level"))?, - invitees: field_invitees.ok_or_else(|| ::serde::de::Error::missing_field("invitees"))?, + destination_path: field_destination_path.ok_or_else(|| ::serde::de::Error::missing_field("destination_path"))?, + shared_content_owner: field_shared_content_owner.and_then(Option::flatten), }; Ok(Some(result)) } @@ -88232,35 +110073,39 @@ impl SharedContentAddInviteesDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; + s.serialize_field("shared_content_link", &self.shared_content_link)?; s.serialize_field("shared_content_access_level", &self.shared_content_access_level)?; - s.serialize_field("invitees", &self.invitees)?; + s.serialize_field("destination_path", &self.destination_path)?; + if let Some(val) = &self.shared_content_owner { + s.serialize_field("shared_content_owner", val)?; + } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for SharedContentAddInviteesDetails { +impl<'de> ::serde::de::Deserialize<'de> for SharedContentCopyDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SharedContentAddInviteesDetails; + type Value = SharedContentCopyDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SharedContentAddInviteesDetails struct") + f.write_str("a SharedContentCopyDetails struct") } fn visit_map>(self, map: V) -> Result { - SharedContentAddInviteesDetails::internal_deserialize(map) + SharedContentCopyDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("SharedContentAddInviteesDetails", SHARED_CONTENT_ADD_INVITEES_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("SharedContentCopyDetails", SHARED_CONTENT_COPY_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SharedContentAddInviteesDetails { +impl ::serde::ser::Serialize for SharedContentCopyDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SharedContentAddInviteesDetails", 2)?; + let mut s = serializer.serialize_struct("SharedContentCopyDetails", 4)?; self.internal_serialize::(&mut s)?; s.end() } @@ -88268,30 +110113,30 @@ impl ::serde::ser::Serialize for SharedContentAddInviteesDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SharedContentAddInviteesType { +pub struct SharedContentCopyType { pub description: String, } -impl SharedContentAddInviteesType { +impl SharedContentCopyType { pub fn new(description: String) -> Self { - SharedContentAddInviteesType { + SharedContentCopyType { description, } } } -const SHARED_CONTENT_ADD_INVITEES_TYPE_FIELDS: &[&str] = &["description"]; -impl SharedContentAddInviteesType { +const SHARED_CONTENT_COPY_TYPE_FIELDS: &[&str] = &["description"]; +impl SharedContentCopyType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -88312,7 +110157,7 @@ impl SharedContentAddInviteesType { if optional && nothing { return Ok(None); } - let result = SharedContentAddInviteesType { + let result = SharedContentCopyType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -88328,63 +110173,102 @@ impl SharedContentAddInviteesType { } } -impl<'de> ::serde::de::Deserialize<'de> for SharedContentAddInviteesType { +impl<'de> ::serde::de::Deserialize<'de> for SharedContentCopyType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SharedContentAddInviteesType; + type Value = SharedContentCopyType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SharedContentAddInviteesType struct") + f.write_str("a SharedContentCopyType struct") } fn visit_map>(self, map: V) -> Result { - SharedContentAddInviteesType::internal_deserialize(map) + SharedContentCopyType::internal_deserialize(map) } } - deserializer.deserialize_struct("SharedContentAddInviteesType", SHARED_CONTENT_ADD_INVITEES_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("SharedContentCopyType", SHARED_CONTENT_COPY_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SharedContentAddInviteesType { +impl ::serde::ser::Serialize for SharedContentCopyType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SharedContentAddInviteesType", 1)?; + let mut s = serializer.serialize_struct("SharedContentCopyType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Added expiration date to link for shared file/folder. -#[derive(Debug, Clone, PartialEq, Eq, Default)] +/// Downloaded shared file/folder. +#[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SharedContentAddLinkExpiryDetails { - /// New shared content link expiration date. Might be missing due to historical data gap. - pub new_value: Option, +pub struct SharedContentDownloadDetails { + /// Shared content link. + pub shared_content_link: String, + /// Shared content access level. + pub shared_content_access_level: crate::types::sharing::AccessLevel, + /// The shared content owner. + pub shared_content_owner: Option, } -impl SharedContentAddLinkExpiryDetails { - pub fn with_new_value(mut self, value: crate::types::common::DropboxTimestamp) -> Self { - self.new_value = Some(value); +impl SharedContentDownloadDetails { + pub fn new( + shared_content_link: String, + shared_content_access_level: crate::types::sharing::AccessLevel, + ) -> Self { + SharedContentDownloadDetails { + shared_content_link, + shared_content_access_level, + shared_content_owner: None, + } + } + + pub fn with_shared_content_owner(mut self, value: UserLogInfo) -> Self { + self.shared_content_owner = Some(value); self } } -const SHARED_CONTENT_ADD_LINK_EXPIRY_DETAILS_FIELDS: &[&str] = &["new_value"]; -impl SharedContentAddLinkExpiryDetails { - // no _opt deserializer +const SHARED_CONTENT_DOWNLOAD_DETAILS_FIELDS: &[&str] = &["shared_content_link", + "shared_content_access_level", + "shared_content_owner"]; +impl SharedContentDownloadDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - ) -> Result { - let mut field_new_value = None; + optional: bool, + ) -> Result, V::Error> { + let mut field_shared_content_link = None; + let mut field_shared_content_access_level = None; + let mut field_shared_content_owner = None; + let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { + nothing = false; match key { - "new_value" => { - if field_new_value.is_some() { - return Err(::serde::de::Error::duplicate_field("new_value")); + "shared_content_link" => { + if field_shared_content_link.is_some() { + return Err(::serde::de::Error::duplicate_field("shared_content_link")); } - field_new_value = Some(map.next_value()?); + field_shared_content_link = Some(map.next_value()?); + } + "shared_content_access_level" => { + if field_shared_content_access_level.is_some() { + return Err(::serde::de::Error::duplicate_field("shared_content_access_level")); + } + field_shared_content_access_level = Some(map.next_value()?); + } + "shared_content_owner" => { + if field_shared_content_owner.is_some() { + return Err(::serde::de::Error::duplicate_field("shared_content_owner")); + } + field_shared_content_owner = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -88392,10 +110276,15 @@ impl SharedContentAddLinkExpiryDetails { } } } - let result = SharedContentAddLinkExpiryDetails { - new_value: field_new_value.and_then(Option::flatten), + if optional && nothing { + return Ok(None); + } + let result = SharedContentDownloadDetails { + shared_content_link: field_shared_content_link.ok_or_else(|| ::serde::de::Error::missing_field("shared_content_link"))?, + shared_content_access_level: field_shared_content_access_level.ok_or_else(|| ::serde::de::Error::missing_field("shared_content_access_level"))?, + shared_content_owner: field_shared_content_owner.and_then(Option::flatten), }; - Ok(result) + Ok(Some(result)) } pub(crate) fn internal_serialize( @@ -88403,36 +110292,38 @@ impl SharedContentAddLinkExpiryDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - if let Some(val) = &self.new_value { - s.serialize_field("new_value", val)?; + s.serialize_field("shared_content_link", &self.shared_content_link)?; + s.serialize_field("shared_content_access_level", &self.shared_content_access_level)?; + if let Some(val) = &self.shared_content_owner { + s.serialize_field("shared_content_owner", val)?; } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for SharedContentAddLinkExpiryDetails { +impl<'de> ::serde::de::Deserialize<'de> for SharedContentDownloadDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SharedContentAddLinkExpiryDetails; + type Value = SharedContentDownloadDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SharedContentAddLinkExpiryDetails struct") + f.write_str("a SharedContentDownloadDetails struct") } fn visit_map>(self, map: V) -> Result { - SharedContentAddLinkExpiryDetails::internal_deserialize(map) + SharedContentDownloadDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("SharedContentAddLinkExpiryDetails", SHARED_CONTENT_ADD_LINK_EXPIRY_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("SharedContentDownloadDetails", SHARED_CONTENT_DOWNLOAD_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SharedContentAddLinkExpiryDetails { +impl ::serde::ser::Serialize for SharedContentDownloadDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SharedContentAddLinkExpiryDetails", 1)?; + let mut s = serializer.serialize_struct("SharedContentDownloadDetails", 3)?; self.internal_serialize::(&mut s)?; s.end() } @@ -88440,30 +110331,30 @@ impl ::serde::ser::Serialize for SharedContentAddLinkExpiryDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SharedContentAddLinkExpiryType { +pub struct SharedContentDownloadType { pub description: String, } -impl SharedContentAddLinkExpiryType { +impl SharedContentDownloadType { pub fn new(description: String) -> Self { - SharedContentAddLinkExpiryType { + SharedContentDownloadType { description, } } } -const SHARED_CONTENT_ADD_LINK_EXPIRY_TYPE_FIELDS: &[&str] = &["description"]; -impl SharedContentAddLinkExpiryType { +const SHARED_CONTENT_DOWNLOAD_TYPE_FIELDS: &[&str] = &["description"]; +impl SharedContentDownloadType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -88484,7 +110375,7 @@ impl SharedContentAddLinkExpiryType { if optional && nothing { return Ok(None); } - let result = SharedContentAddLinkExpiryType { + let result = SharedContentDownloadType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -88500,104 +110391,104 @@ impl SharedContentAddLinkExpiryType { } } -impl<'de> ::serde::de::Deserialize<'de> for SharedContentAddLinkExpiryType { +impl<'de> ::serde::de::Deserialize<'de> for SharedContentDownloadType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SharedContentAddLinkExpiryType; + type Value = SharedContentDownloadType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SharedContentAddLinkExpiryType struct") + f.write_str("a SharedContentDownloadType struct") } fn visit_map>(self, map: V) -> Result { - SharedContentAddLinkExpiryType::internal_deserialize(map) + SharedContentDownloadType::internal_deserialize(map) } } - deserializer.deserialize_struct("SharedContentAddLinkExpiryType", SHARED_CONTENT_ADD_LINK_EXPIRY_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("SharedContentDownloadType", SHARED_CONTENT_DOWNLOAD_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SharedContentAddLinkExpiryType { +impl ::serde::ser::Serialize for SharedContentDownloadType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SharedContentAddLinkExpiryType", 1)?; + let mut s = serializer.serialize_struct("SharedContentDownloadType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Added password to link for shared file/folder. +/// Left shared file/folder. #[derive(Debug, Clone, PartialEq, Eq, Default)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SharedContentAddLinkPasswordDetails { +pub struct SharedContentRelinquishMembershipDetails { } -const SHARED_CONTENT_ADD_LINK_PASSWORD_DETAILS_FIELDS: &[&str] = &[]; -impl SharedContentAddLinkPasswordDetails { +const SHARED_CONTENT_RELINQUISH_MEMBERSHIP_DETAILS_FIELDS: &[&str] = &[]; +impl SharedContentRelinquishMembershipDetails { // no _opt deserializer pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - ) -> Result { + ) -> Result { // ignore any fields found; none are presently recognized crate::eat_json_fields(&mut map)?; - Ok(SharedContentAddLinkPasswordDetails {}) + Ok(SharedContentRelinquishMembershipDetails {}) } } -impl<'de> ::serde::de::Deserialize<'de> for SharedContentAddLinkPasswordDetails { +impl<'de> ::serde::de::Deserialize<'de> for SharedContentRelinquishMembershipDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SharedContentAddLinkPasswordDetails; + type Value = SharedContentRelinquishMembershipDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SharedContentAddLinkPasswordDetails struct") + f.write_str("a SharedContentRelinquishMembershipDetails struct") } fn visit_map>(self, map: V) -> Result { - SharedContentAddLinkPasswordDetails::internal_deserialize(map) + SharedContentRelinquishMembershipDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("SharedContentAddLinkPasswordDetails", SHARED_CONTENT_ADD_LINK_PASSWORD_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("SharedContentRelinquishMembershipDetails", SHARED_CONTENT_RELINQUISH_MEMBERSHIP_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SharedContentAddLinkPasswordDetails { +impl ::serde::ser::Serialize for SharedContentRelinquishMembershipDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - serializer.serialize_struct("SharedContentAddLinkPasswordDetails", 0)?.end() + serializer.serialize_struct("SharedContentRelinquishMembershipDetails", 0)?.end() } } #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SharedContentAddLinkPasswordType { +pub struct SharedContentRelinquishMembershipType { pub description: String, } -impl SharedContentAddLinkPasswordType { +impl SharedContentRelinquishMembershipType { pub fn new(description: String) -> Self { - SharedContentAddLinkPasswordType { + SharedContentRelinquishMembershipType { description, } } } -const SHARED_CONTENT_ADD_LINK_PASSWORD_TYPE_FIELDS: &[&str] = &["description"]; -impl SharedContentAddLinkPasswordType { +const SHARED_CONTENT_RELINQUISH_MEMBERSHIP_TYPE_FIELDS: &[&str] = &["description"]; +impl SharedContentRelinquishMembershipType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -88618,7 +110509,7 @@ impl SharedContentAddLinkPasswordType { if optional && nothing { return Ok(None); } - let result = SharedContentAddLinkPasswordType { + let result = SharedContentRelinquishMembershipType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -88634,72 +110525,72 @@ impl SharedContentAddLinkPasswordType { } } -impl<'de> ::serde::de::Deserialize<'de> for SharedContentAddLinkPasswordType { +impl<'de> ::serde::de::Deserialize<'de> for SharedContentRelinquishMembershipType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SharedContentAddLinkPasswordType; + type Value = SharedContentRelinquishMembershipType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SharedContentAddLinkPasswordType struct") + f.write_str("a SharedContentRelinquishMembershipType struct") } fn visit_map>(self, map: V) -> Result { - SharedContentAddLinkPasswordType::internal_deserialize(map) + SharedContentRelinquishMembershipType::internal_deserialize(map) } } - deserializer.deserialize_struct("SharedContentAddLinkPasswordType", SHARED_CONTENT_ADD_LINK_PASSWORD_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("SharedContentRelinquishMembershipType", SHARED_CONTENT_RELINQUISH_MEMBERSHIP_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SharedContentAddLinkPasswordType { +impl ::serde::ser::Serialize for SharedContentRelinquishMembershipType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SharedContentAddLinkPasswordType", 1)?; + let mut s = serializer.serialize_struct("SharedContentRelinquishMembershipType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Added users and/or groups to shared file/folder. +/// Removed invitee from shared file/folder before invite was accepted. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SharedContentAddMemberDetails { - /// Shared content access level. - pub shared_content_access_level: crate::types::sharing::AccessLevel, +pub struct SharedContentRemoveInviteesDetails { + /// A list of invitees. + pub invitees: Vec, } -impl SharedContentAddMemberDetails { - pub fn new(shared_content_access_level: crate::types::sharing::AccessLevel) -> Self { - SharedContentAddMemberDetails { - shared_content_access_level, +impl SharedContentRemoveInviteesDetails { + pub fn new(invitees: Vec) -> Self { + SharedContentRemoveInviteesDetails { + invitees, } } } -const SHARED_CONTENT_ADD_MEMBER_DETAILS_FIELDS: &[&str] = &["shared_content_access_level"]; -impl SharedContentAddMemberDetails { +const SHARED_CONTENT_REMOVE_INVITEES_DETAILS_FIELDS: &[&str] = &["invitees"]; +impl SharedContentRemoveInviteesDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_shared_content_access_level = None; + ) -> Result, V::Error> { + let mut field_invitees = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "shared_content_access_level" => { - if field_shared_content_access_level.is_some() { - return Err(::serde::de::Error::duplicate_field("shared_content_access_level")); + "invitees" => { + if field_invitees.is_some() { + return Err(::serde::de::Error::duplicate_field("invitees")); } - field_shared_content_access_level = Some(map.next_value()?); + field_invitees = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -88710,8 +110601,8 @@ impl SharedContentAddMemberDetails { if optional && nothing { return Ok(None); } - let result = SharedContentAddMemberDetails { - shared_content_access_level: field_shared_content_access_level.ok_or_else(|| ::serde::de::Error::missing_field("shared_content_access_level"))?, + let result = SharedContentRemoveInviteesDetails { + invitees: field_invitees.ok_or_else(|| ::serde::de::Error::missing_field("invitees"))?, }; Ok(Some(result)) } @@ -88721,34 +110612,34 @@ impl SharedContentAddMemberDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("shared_content_access_level", &self.shared_content_access_level)?; + s.serialize_field("invitees", &self.invitees)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for SharedContentAddMemberDetails { +impl<'de> ::serde::de::Deserialize<'de> for SharedContentRemoveInviteesDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SharedContentAddMemberDetails; + type Value = SharedContentRemoveInviteesDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SharedContentAddMemberDetails struct") + f.write_str("a SharedContentRemoveInviteesDetails struct") } fn visit_map>(self, map: V) -> Result { - SharedContentAddMemberDetails::internal_deserialize(map) + SharedContentRemoveInviteesDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("SharedContentAddMemberDetails", SHARED_CONTENT_ADD_MEMBER_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("SharedContentRemoveInviteesDetails", SHARED_CONTENT_REMOVE_INVITEES_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SharedContentAddMemberDetails { +impl ::serde::ser::Serialize for SharedContentRemoveInviteesDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SharedContentAddMemberDetails", 1)?; + let mut s = serializer.serialize_struct("SharedContentRemoveInviteesDetails", 1)?; self.internal_serialize::(&mut s)?; s.end() } @@ -88756,30 +110647,30 @@ impl ::serde::ser::Serialize for SharedContentAddMemberDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SharedContentAddMemberType { +pub struct SharedContentRemoveInviteesType { pub description: String, } -impl SharedContentAddMemberType { +impl SharedContentRemoveInviteesType { pub fn new(description: String) -> Self { - SharedContentAddMemberType { + SharedContentRemoveInviteesType { description, } } } -const SHARED_CONTENT_ADD_MEMBER_TYPE_FIELDS: &[&str] = &["description"]; -impl SharedContentAddMemberType { +const SHARED_CONTENT_REMOVE_INVITEES_TYPE_FIELDS: &[&str] = &["description"]; +impl SharedContentRemoveInviteesType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -88800,7 +110691,7 @@ impl SharedContentAddMemberType { if optional && nothing { return Ok(None); } - let result = SharedContentAddMemberType { + let result = SharedContentRemoveInviteesType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -88816,83 +110707,58 @@ impl SharedContentAddMemberType { } } -impl<'de> ::serde::de::Deserialize<'de> for SharedContentAddMemberType { +impl<'de> ::serde::de::Deserialize<'de> for SharedContentRemoveInviteesType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SharedContentAddMemberType; + type Value = SharedContentRemoveInviteesType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SharedContentAddMemberType struct") + f.write_str("a SharedContentRemoveInviteesType struct") } fn visit_map>(self, map: V) -> Result { - SharedContentAddMemberType::internal_deserialize(map) + SharedContentRemoveInviteesType::internal_deserialize(map) } } - deserializer.deserialize_struct("SharedContentAddMemberType", SHARED_CONTENT_ADD_MEMBER_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("SharedContentRemoveInviteesType", SHARED_CONTENT_REMOVE_INVITEES_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SharedContentAddMemberType { +impl ::serde::ser::Serialize for SharedContentRemoveInviteesType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SharedContentAddMemberType", 1)?; + let mut s = serializer.serialize_struct("SharedContentRemoveInviteesType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Changed whether members can download shared file/folder. -#[derive(Debug, Clone, PartialEq, Eq)] +/// Removed link expiration date of shared file/folder. +#[derive(Debug, Clone, PartialEq, Eq, Default)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SharedContentChangeDownloadsPolicyDetails { - /// New downloads policy. - pub new_value: DownloadPolicyType, - /// Previous downloads policy. Might be missing due to historical data gap. - pub previous_value: Option, +pub struct SharedContentRemoveLinkExpiryDetails { + /// Previous shared content link expiration date. Might be missing due to historical data gap. + pub previous_value: Option, } -impl SharedContentChangeDownloadsPolicyDetails { - pub fn new(new_value: DownloadPolicyType) -> Self { - SharedContentChangeDownloadsPolicyDetails { - new_value, - previous_value: None, - } - } - - pub fn with_previous_value(mut self, value: DownloadPolicyType) -> Self { +impl SharedContentRemoveLinkExpiryDetails { + pub fn with_previous_value(mut self, value: crate::types::common::DropboxTimestamp) -> Self { self.previous_value = Some(value); self } } -const SHARED_CONTENT_CHANGE_DOWNLOADS_POLICY_DETAILS_FIELDS: &[&str] = &["new_value", - "previous_value"]; -impl SharedContentChangeDownloadsPolicyDetails { +const SHARED_CONTENT_REMOVE_LINK_EXPIRY_DETAILS_FIELDS: &[&str] = &["previous_value"]; +impl SharedContentRemoveLinkExpiryDetails { + // no _opt deserializer pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( - map: V, - ) -> Result { - Self::internal_deserialize_opt(map, false).map(Option::unwrap) - } - - pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - optional: bool, - ) -> Result, V::Error> { - let mut field_new_value = None; + ) -> Result { let mut field_previous_value = None; - let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { - nothing = false; match key { - "new_value" => { - if field_new_value.is_some() { - return Err(::serde::de::Error::duplicate_field("new_value")); - } - field_new_value = Some(map.next_value()?); - } "previous_value" => { if field_previous_value.is_some() { return Err(::serde::de::Error::duplicate_field("previous_value")); @@ -88905,14 +110771,10 @@ impl SharedContentChangeDownloadsPolicyDetails { } } } - if optional && nothing { - return Ok(None); - } - let result = SharedContentChangeDownloadsPolicyDetails { - new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, + let result = SharedContentRemoveLinkExpiryDetails { previous_value: field_previous_value.and_then(Option::flatten), }; - Ok(Some(result)) + Ok(result) } pub(crate) fn internal_serialize( @@ -88920,7 +110782,6 @@ impl SharedContentChangeDownloadsPolicyDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("new_value", &self.new_value)?; if let Some(val) = &self.previous_value { s.serialize_field("previous_value", val)?; } @@ -88928,29 +110789,29 @@ impl SharedContentChangeDownloadsPolicyDetails { } } -impl<'de> ::serde::de::Deserialize<'de> for SharedContentChangeDownloadsPolicyDetails { +impl<'de> ::serde::de::Deserialize<'de> for SharedContentRemoveLinkExpiryDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SharedContentChangeDownloadsPolicyDetails; + type Value = SharedContentRemoveLinkExpiryDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SharedContentChangeDownloadsPolicyDetails struct") + f.write_str("a SharedContentRemoveLinkExpiryDetails struct") } fn visit_map>(self, map: V) -> Result { - SharedContentChangeDownloadsPolicyDetails::internal_deserialize(map) + SharedContentRemoveLinkExpiryDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("SharedContentChangeDownloadsPolicyDetails", SHARED_CONTENT_CHANGE_DOWNLOADS_POLICY_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("SharedContentRemoveLinkExpiryDetails", SHARED_CONTENT_REMOVE_LINK_EXPIRY_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SharedContentChangeDownloadsPolicyDetails { +impl ::serde::ser::Serialize for SharedContentRemoveLinkExpiryDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SharedContentChangeDownloadsPolicyDetails", 2)?; + let mut s = serializer.serialize_struct("SharedContentRemoveLinkExpiryDetails", 1)?; self.internal_serialize::(&mut s)?; s.end() } @@ -88958,30 +110819,30 @@ impl ::serde::ser::Serialize for SharedContentChangeDownloadsPolicyDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SharedContentChangeDownloadsPolicyType { +pub struct SharedContentRemoveLinkExpiryType { pub description: String, } -impl SharedContentChangeDownloadsPolicyType { +impl SharedContentRemoveLinkExpiryType { pub fn new(description: String) -> Self { - SharedContentChangeDownloadsPolicyType { + SharedContentRemoveLinkExpiryType { description, } } } -const SHARED_CONTENT_CHANGE_DOWNLOADS_POLICY_TYPE_FIELDS: &[&str] = &["description"]; -impl SharedContentChangeDownloadsPolicyType { +const SHARED_CONTENT_REMOVE_LINK_EXPIRY_TYPE_FIELDS: &[&str] = &["description"]; +impl SharedContentRemoveLinkExpiryType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -89002,7 +110863,7 @@ impl SharedContentChangeDownloadsPolicyType { if optional && nothing { return Ok(None); } - let result = SharedContentChangeDownloadsPolicyType { + let result = SharedContentRemoveLinkExpiryType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -89018,105 +110879,200 @@ impl SharedContentChangeDownloadsPolicyType { } } -impl<'de> ::serde::de::Deserialize<'de> for SharedContentChangeDownloadsPolicyType { +impl<'de> ::serde::de::Deserialize<'de> for SharedContentRemoveLinkExpiryType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SharedContentChangeDownloadsPolicyType; + type Value = SharedContentRemoveLinkExpiryType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SharedContentChangeDownloadsPolicyType struct") + f.write_str("a SharedContentRemoveLinkExpiryType struct") } fn visit_map>(self, map: V) -> Result { - SharedContentChangeDownloadsPolicyType::internal_deserialize(map) + SharedContentRemoveLinkExpiryType::internal_deserialize(map) } } - deserializer.deserialize_struct("SharedContentChangeDownloadsPolicyType", SHARED_CONTENT_CHANGE_DOWNLOADS_POLICY_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("SharedContentRemoveLinkExpiryType", SHARED_CONTENT_REMOVE_LINK_EXPIRY_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SharedContentChangeDownloadsPolicyType { +impl ::serde::ser::Serialize for SharedContentRemoveLinkExpiryType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SharedContentChangeDownloadsPolicyType", 1)?; + let mut s = serializer.serialize_struct("SharedContentRemoveLinkExpiryType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Changed access type of invitee to shared file/folder before invite was accepted. +/// Removed link password of shared file/folder. +#[derive(Debug, Clone, PartialEq, Eq, Default)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct SharedContentRemoveLinkPasswordDetails { +} + +const SHARED_CONTENT_REMOVE_LINK_PASSWORD_DETAILS_FIELDS: &[&str] = &[]; +impl SharedContentRemoveLinkPasswordDetails { + // no _opt deserializer + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + ) -> Result { + // ignore any fields found; none are presently recognized + crate::eat_json_fields(&mut map)?; + Ok(SharedContentRemoveLinkPasswordDetails {}) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for SharedContentRemoveLinkPasswordDetails { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = SharedContentRemoveLinkPasswordDetails; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a SharedContentRemoveLinkPasswordDetails struct") + } + fn visit_map>(self, map: V) -> Result { + SharedContentRemoveLinkPasswordDetails::internal_deserialize(map) + } + } + deserializer.deserialize_struct("SharedContentRemoveLinkPasswordDetails", SHARED_CONTENT_REMOVE_LINK_PASSWORD_DETAILS_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for SharedContentRemoveLinkPasswordDetails { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + serializer.serialize_struct("SharedContentRemoveLinkPasswordDetails", 0)?.end() + } +} + #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SharedContentChangeInviteeRoleDetails { - /// New access level. - pub new_access_level: crate::types::sharing::AccessLevel, - /// The invitee whose role was changed. - pub invitee: EmailAddress, - /// Previous access level. Might be missing due to historical data gap. - pub previous_access_level: Option, +pub struct SharedContentRemoveLinkPasswordType { + pub description: String, } -impl SharedContentChangeInviteeRoleDetails { - pub fn new( - new_access_level: crate::types::sharing::AccessLevel, - invitee: EmailAddress, - ) -> Self { - SharedContentChangeInviteeRoleDetails { - new_access_level, - invitee, - previous_access_level: None, +impl SharedContentRemoveLinkPasswordType { + pub fn new(description: String) -> Self { + SharedContentRemoveLinkPasswordType { + description, + } + } +} + +const SHARED_CONTENT_REMOVE_LINK_PASSWORD_TYPE_FIELDS: &[&str] = &["description"]; +impl SharedContentRemoveLinkPasswordType { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_description = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); + } + field_description = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } + } + } + if optional && nothing { + return Ok(None); + } + let result = SharedContentRemoveLinkPasswordType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("description", &self.description)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for SharedContentRemoveLinkPasswordType { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = SharedContentRemoveLinkPasswordType; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a SharedContentRemoveLinkPasswordType struct") + } + fn visit_map>(self, map: V) -> Result { + SharedContentRemoveLinkPasswordType::internal_deserialize(map) + } } + deserializer.deserialize_struct("SharedContentRemoveLinkPasswordType", SHARED_CONTENT_REMOVE_LINK_PASSWORD_TYPE_FIELDS, StructVisitor) } +} - pub fn with_previous_access_level( +impl ::serde::ser::Serialize for SharedContentRemoveLinkPasswordType { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("SharedContentRemoveLinkPasswordType", 1)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +/// Removed user/group from shared file/folder. +#[derive(Debug, Clone, PartialEq, Eq, Default)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct SharedContentRemoveMemberDetails { + /// Shared content access level. + pub shared_content_access_level: Option, +} + +impl SharedContentRemoveMemberDetails { + pub fn with_shared_content_access_level( mut self, value: crate::types::sharing::AccessLevel, ) -> Self { - self.previous_access_level = Some(value); + self.shared_content_access_level = Some(value); self } } -const SHARED_CONTENT_CHANGE_INVITEE_ROLE_DETAILS_FIELDS: &[&str] = &["new_access_level", - "invitee", - "previous_access_level"]; -impl SharedContentChangeInviteeRoleDetails { +const SHARED_CONTENT_REMOVE_MEMBER_DETAILS_FIELDS: &[&str] = &["shared_content_access_level"]; +impl SharedContentRemoveMemberDetails { + // no _opt deserializer pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( - map: V, - ) -> Result { - Self::internal_deserialize_opt(map, false).map(Option::unwrap) - } - - pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - optional: bool, - ) -> Result, V::Error> { - let mut field_new_access_level = None; - let mut field_invitee = None; - let mut field_previous_access_level = None; - let mut nothing = true; + ) -> Result { + let mut field_shared_content_access_level = None; while let Some(key) = map.next_key::<&str>()? { - nothing = false; match key { - "new_access_level" => { - if field_new_access_level.is_some() { - return Err(::serde::de::Error::duplicate_field("new_access_level")); - } - field_new_access_level = Some(map.next_value()?); - } - "invitee" => { - if field_invitee.is_some() { - return Err(::serde::de::Error::duplicate_field("invitee")); - } - field_invitee = Some(map.next_value()?); - } - "previous_access_level" => { - if field_previous_access_level.is_some() { - return Err(::serde::de::Error::duplicate_field("previous_access_level")); + "shared_content_access_level" => { + if field_shared_content_access_level.is_some() { + return Err(::serde::de::Error::duplicate_field("shared_content_access_level")); } - field_previous_access_level = Some(map.next_value()?); + field_shared_content_access_level = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -89124,15 +111080,10 @@ impl SharedContentChangeInviteeRoleDetails { } } } - if optional && nothing { - return Ok(None); - } - let result = SharedContentChangeInviteeRoleDetails { - new_access_level: field_new_access_level.ok_or_else(|| ::serde::de::Error::missing_field("new_access_level"))?, - invitee: field_invitee.ok_or_else(|| ::serde::de::Error::missing_field("invitee"))?, - previous_access_level: field_previous_access_level.and_then(Option::flatten), + let result = SharedContentRemoveMemberDetails { + shared_content_access_level: field_shared_content_access_level.and_then(Option::flatten), }; - Ok(Some(result)) + Ok(result) } pub(crate) fn internal_serialize( @@ -89140,38 +111091,36 @@ impl SharedContentChangeInviteeRoleDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("new_access_level", &self.new_access_level)?; - s.serialize_field("invitee", &self.invitee)?; - if let Some(val) = &self.previous_access_level { - s.serialize_field("previous_access_level", val)?; + if let Some(val) = &self.shared_content_access_level { + s.serialize_field("shared_content_access_level", val)?; } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for SharedContentChangeInviteeRoleDetails { +impl<'de> ::serde::de::Deserialize<'de> for SharedContentRemoveMemberDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SharedContentChangeInviteeRoleDetails; + type Value = SharedContentRemoveMemberDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SharedContentChangeInviteeRoleDetails struct") + f.write_str("a SharedContentRemoveMemberDetails struct") } fn visit_map>(self, map: V) -> Result { - SharedContentChangeInviteeRoleDetails::internal_deserialize(map) + SharedContentRemoveMemberDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("SharedContentChangeInviteeRoleDetails", SHARED_CONTENT_CHANGE_INVITEE_ROLE_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("SharedContentRemoveMemberDetails", SHARED_CONTENT_REMOVE_MEMBER_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SharedContentChangeInviteeRoleDetails { +impl ::serde::ser::Serialize for SharedContentRemoveMemberDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SharedContentChangeInviteeRoleDetails", 3)?; + let mut s = serializer.serialize_struct("SharedContentRemoveMemberDetails", 1)?; self.internal_serialize::(&mut s)?; s.end() } @@ -89179,30 +111128,30 @@ impl ::serde::ser::Serialize for SharedContentChangeInviteeRoleDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SharedContentChangeInviteeRoleType { +pub struct SharedContentRemoveMemberType { pub description: String, } -impl SharedContentChangeInviteeRoleType { +impl SharedContentRemoveMemberType { pub fn new(description: String) -> Self { - SharedContentChangeInviteeRoleType { + SharedContentRemoveMemberType { description, } } } -const SHARED_CONTENT_CHANGE_INVITEE_ROLE_TYPE_FIELDS: &[&str] = &["description"]; -impl SharedContentChangeInviteeRoleType { +const SHARED_CONTENT_REMOVE_MEMBER_TYPE_FIELDS: &[&str] = &["description"]; +impl SharedContentRemoveMemberType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -89223,7 +111172,7 @@ impl SharedContentChangeInviteeRoleType { if optional && nothing { return Ok(None); } - let result = SharedContentChangeInviteeRoleType { + let result = SharedContentRemoveMemberType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -89239,88 +111188,63 @@ impl SharedContentChangeInviteeRoleType { } } -impl<'de> ::serde::de::Deserialize<'de> for SharedContentChangeInviteeRoleType { +impl<'de> ::serde::de::Deserialize<'de> for SharedContentRemoveMemberType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SharedContentChangeInviteeRoleType; + type Value = SharedContentRemoveMemberType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SharedContentChangeInviteeRoleType struct") + f.write_str("a SharedContentRemoveMemberType struct") } fn visit_map>(self, map: V) -> Result { - SharedContentChangeInviteeRoleType::internal_deserialize(map) + SharedContentRemoveMemberType::internal_deserialize(map) } } - deserializer.deserialize_struct("SharedContentChangeInviteeRoleType", SHARED_CONTENT_CHANGE_INVITEE_ROLE_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("SharedContentRemoveMemberType", SHARED_CONTENT_REMOVE_MEMBER_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SharedContentChangeInviteeRoleType { +impl ::serde::ser::Serialize for SharedContentRemoveMemberType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SharedContentChangeInviteeRoleType", 1)?; + let mut s = serializer.serialize_struct("SharedContentRemoveMemberType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Changed link audience of shared file/folder. -#[derive(Debug, Clone, PartialEq, Eq)] +/// Requested access to shared file/folder. +#[derive(Debug, Clone, PartialEq, Eq, Default)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SharedContentChangeLinkAudienceDetails { - /// New link audience value. - pub new_value: crate::types::sharing::LinkAudience, - /// Previous link audience value. - pub previous_value: Option, +pub struct SharedContentRequestAccessDetails { + /// Shared content link. + pub shared_content_link: Option, } -impl SharedContentChangeLinkAudienceDetails { - pub fn new(new_value: crate::types::sharing::LinkAudience) -> Self { - SharedContentChangeLinkAudienceDetails { - new_value, - previous_value: None, - } - } - - pub fn with_previous_value(mut self, value: crate::types::sharing::LinkAudience) -> Self { - self.previous_value = Some(value); +impl SharedContentRequestAccessDetails { + pub fn with_shared_content_link(mut self, value: String) -> Self { + self.shared_content_link = Some(value); self } } -const SHARED_CONTENT_CHANGE_LINK_AUDIENCE_DETAILS_FIELDS: &[&str] = &["new_value", - "previous_value"]; -impl SharedContentChangeLinkAudienceDetails { +const SHARED_CONTENT_REQUEST_ACCESS_DETAILS_FIELDS: &[&str] = &["shared_content_link"]; +impl SharedContentRequestAccessDetails { + // no _opt deserializer pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( - map: V, - ) -> Result { - Self::internal_deserialize_opt(map, false).map(Option::unwrap) - } - - pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - optional: bool, - ) -> Result, V::Error> { - let mut field_new_value = None; - let mut field_previous_value = None; - let mut nothing = true; + ) -> Result { + let mut field_shared_content_link = None; while let Some(key) = map.next_key::<&str>()? { - nothing = false; match key { - "new_value" => { - if field_new_value.is_some() { - return Err(::serde::de::Error::duplicate_field("new_value")); - } - field_new_value = Some(map.next_value()?); - } - "previous_value" => { - if field_previous_value.is_some() { - return Err(::serde::de::Error::duplicate_field("previous_value")); + "shared_content_link" => { + if field_shared_content_link.is_some() { + return Err(::serde::de::Error::duplicate_field("shared_content_link")); } - field_previous_value = Some(map.next_value()?); + field_shared_content_link = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -89328,14 +111252,10 @@ impl SharedContentChangeLinkAudienceDetails { } } } - if optional && nothing { - return Ok(None); - } - let result = SharedContentChangeLinkAudienceDetails { - new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, - previous_value: field_previous_value.and_then(Option::flatten), + let result = SharedContentRequestAccessDetails { + shared_content_link: field_shared_content_link.and_then(Option::flatten), }; - Ok(Some(result)) + Ok(result) } pub(crate) fn internal_serialize( @@ -89343,37 +111263,36 @@ impl SharedContentChangeLinkAudienceDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("new_value", &self.new_value)?; - if let Some(val) = &self.previous_value { - s.serialize_field("previous_value", val)?; + if let Some(val) = &self.shared_content_link { + s.serialize_field("shared_content_link", val)?; } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for SharedContentChangeLinkAudienceDetails { +impl<'de> ::serde::de::Deserialize<'de> for SharedContentRequestAccessDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SharedContentChangeLinkAudienceDetails; + type Value = SharedContentRequestAccessDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SharedContentChangeLinkAudienceDetails struct") + f.write_str("a SharedContentRequestAccessDetails struct") } fn visit_map>(self, map: V) -> Result { - SharedContentChangeLinkAudienceDetails::internal_deserialize(map) + SharedContentRequestAccessDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("SharedContentChangeLinkAudienceDetails", SHARED_CONTENT_CHANGE_LINK_AUDIENCE_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("SharedContentRequestAccessDetails", SHARED_CONTENT_REQUEST_ACCESS_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SharedContentChangeLinkAudienceDetails { +impl ::serde::ser::Serialize for SharedContentRequestAccessDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SharedContentChangeLinkAudienceDetails", 2)?; + let mut s = serializer.serialize_struct("SharedContentRequestAccessDetails", 1)?; self.internal_serialize::(&mut s)?; s.end() } @@ -89381,30 +111300,30 @@ impl ::serde::ser::Serialize for SharedContentChangeLinkAudienceDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SharedContentChangeLinkAudienceType { +pub struct SharedContentRequestAccessType { pub description: String, } -impl SharedContentChangeLinkAudienceType { +impl SharedContentRequestAccessType { pub fn new(description: String) -> Self { - SharedContentChangeLinkAudienceType { + SharedContentRequestAccessType { description, } } } -const SHARED_CONTENT_CHANGE_LINK_AUDIENCE_TYPE_FIELDS: &[&str] = &["description"]; -impl SharedContentChangeLinkAudienceType { +const SHARED_CONTENT_REQUEST_ACCESS_TYPE_FIELDS: &[&str] = &["description"]; +impl SharedContentRequestAccessType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -89425,7 +111344,7 @@ impl SharedContentChangeLinkAudienceType { if optional && nothing { return Ok(None); } - let result = SharedContentChangeLinkAudienceType { + let result = SharedContentRequestAccessType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -89441,78 +111360,86 @@ impl SharedContentChangeLinkAudienceType { } } -impl<'de> ::serde::de::Deserialize<'de> for SharedContentChangeLinkAudienceType { +impl<'de> ::serde::de::Deserialize<'de> for SharedContentRequestAccessType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SharedContentChangeLinkAudienceType; + type Value = SharedContentRequestAccessType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SharedContentChangeLinkAudienceType struct") + f.write_str("a SharedContentRequestAccessType struct") } fn visit_map>(self, map: V) -> Result { - SharedContentChangeLinkAudienceType::internal_deserialize(map) + SharedContentRequestAccessType::internal_deserialize(map) } } - deserializer.deserialize_struct("SharedContentChangeLinkAudienceType", SHARED_CONTENT_CHANGE_LINK_AUDIENCE_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("SharedContentRequestAccessType", SHARED_CONTENT_REQUEST_ACCESS_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SharedContentChangeLinkAudienceType { +impl ::serde::ser::Serialize for SharedContentRequestAccessType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SharedContentChangeLinkAudienceType", 1)?; + let mut s = serializer.serialize_struct("SharedContentRequestAccessType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Changed link expiration of shared file/folder. -#[derive(Debug, Clone, PartialEq, Eq, Default)] +/// Restored shared file/folder invitees. +#[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SharedContentChangeLinkExpiryDetails { - /// New shared content link expiration date. Might be missing due to historical data gap. - pub new_value: Option, - /// Previous shared content link expiration date. Might be missing due to historical data gap. - pub previous_value: Option, +pub struct SharedContentRestoreInviteesDetails { + /// Shared content access level. + pub shared_content_access_level: crate::types::sharing::AccessLevel, + /// A list of invitees. + pub invitees: Vec, } -impl SharedContentChangeLinkExpiryDetails { - pub fn with_new_value(mut self, value: crate::types::common::DropboxTimestamp) -> Self { - self.new_value = Some(value); - self - } - - pub fn with_previous_value(mut self, value: crate::types::common::DropboxTimestamp) -> Self { - self.previous_value = Some(value); - self +impl SharedContentRestoreInviteesDetails { + pub fn new( + shared_content_access_level: crate::types::sharing::AccessLevel, + invitees: Vec, + ) -> Self { + SharedContentRestoreInviteesDetails { + shared_content_access_level, + invitees, + } } } -const SHARED_CONTENT_CHANGE_LINK_EXPIRY_DETAILS_FIELDS: &[&str] = &["new_value", - "previous_value"]; -impl SharedContentChangeLinkExpiryDetails { - // no _opt deserializer +const SHARED_CONTENT_RESTORE_INVITEES_DETAILS_FIELDS: &[&str] = &["shared_content_access_level", + "invitees"]; +impl SharedContentRestoreInviteesDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - ) -> Result { - let mut field_new_value = None; - let mut field_previous_value = None; + optional: bool, + ) -> Result, V::Error> { + let mut field_shared_content_access_level = None; + let mut field_invitees = None; + let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { + nothing = false; match key { - "new_value" => { - if field_new_value.is_some() { - return Err(::serde::de::Error::duplicate_field("new_value")); + "shared_content_access_level" => { + if field_shared_content_access_level.is_some() { + return Err(::serde::de::Error::duplicate_field("shared_content_access_level")); } - field_new_value = Some(map.next_value()?); + field_shared_content_access_level = Some(map.next_value()?); } - "previous_value" => { - if field_previous_value.is_some() { - return Err(::serde::de::Error::duplicate_field("previous_value")); + "invitees" => { + if field_invitees.is_some() { + return Err(::serde::de::Error::duplicate_field("invitees")); } - field_previous_value = Some(map.next_value()?); + field_invitees = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -89520,11 +111447,14 @@ impl SharedContentChangeLinkExpiryDetails { } } } - let result = SharedContentChangeLinkExpiryDetails { - new_value: field_new_value.and_then(Option::flatten), - previous_value: field_previous_value.and_then(Option::flatten), + if optional && nothing { + return Ok(None); + } + let result = SharedContentRestoreInviteesDetails { + shared_content_access_level: field_shared_content_access_level.ok_or_else(|| ::serde::de::Error::missing_field("shared_content_access_level"))?, + invitees: field_invitees.ok_or_else(|| ::serde::de::Error::missing_field("invitees"))?, }; - Ok(result) + Ok(Some(result)) } pub(crate) fn internal_serialize( @@ -89532,39 +111462,35 @@ impl SharedContentChangeLinkExpiryDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - if let Some(val) = &self.new_value { - s.serialize_field("new_value", val)?; - } - if let Some(val) = &self.previous_value { - s.serialize_field("previous_value", val)?; - } + s.serialize_field("shared_content_access_level", &self.shared_content_access_level)?; + s.serialize_field("invitees", &self.invitees)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for SharedContentChangeLinkExpiryDetails { +impl<'de> ::serde::de::Deserialize<'de> for SharedContentRestoreInviteesDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SharedContentChangeLinkExpiryDetails; + type Value = SharedContentRestoreInviteesDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SharedContentChangeLinkExpiryDetails struct") + f.write_str("a SharedContentRestoreInviteesDetails struct") } fn visit_map>(self, map: V) -> Result { - SharedContentChangeLinkExpiryDetails::internal_deserialize(map) + SharedContentRestoreInviteesDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("SharedContentChangeLinkExpiryDetails", SHARED_CONTENT_CHANGE_LINK_EXPIRY_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("SharedContentRestoreInviteesDetails", SHARED_CONTENT_RESTORE_INVITEES_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SharedContentChangeLinkExpiryDetails { +impl ::serde::ser::Serialize for SharedContentRestoreInviteesDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SharedContentChangeLinkExpiryDetails", 2)?; + let mut s = serializer.serialize_struct("SharedContentRestoreInviteesDetails", 2)?; self.internal_serialize::(&mut s)?; s.end() } @@ -89572,30 +111498,30 @@ impl ::serde::ser::Serialize for SharedContentChangeLinkExpiryDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SharedContentChangeLinkExpiryType { +pub struct SharedContentRestoreInviteesType { pub description: String, } -impl SharedContentChangeLinkExpiryType { +impl SharedContentRestoreInviteesType { pub fn new(description: String) -> Self { - SharedContentChangeLinkExpiryType { + SharedContentRestoreInviteesType { description, } } } -const SHARED_CONTENT_CHANGE_LINK_EXPIRY_TYPE_FIELDS: &[&str] = &["description"]; -impl SharedContentChangeLinkExpiryType { +const SHARED_CONTENT_RESTORE_INVITEES_TYPE_FIELDS: &[&str] = &["description"]; +impl SharedContentRestoreInviteesType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -89616,7 +111542,7 @@ impl SharedContentChangeLinkExpiryType { if optional && nothing { return Ok(None); } - let result = SharedContentChangeLinkExpiryType { + let result = SharedContentRestoreInviteesType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -89632,114 +111558,72 @@ impl SharedContentChangeLinkExpiryType { } } -impl<'de> ::serde::de::Deserialize<'de> for SharedContentChangeLinkExpiryType { +impl<'de> ::serde::de::Deserialize<'de> for SharedContentRestoreInviteesType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SharedContentChangeLinkExpiryType; + type Value = SharedContentRestoreInviteesType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SharedContentChangeLinkExpiryType struct") + f.write_str("a SharedContentRestoreInviteesType struct") } fn visit_map>(self, map: V) -> Result { - SharedContentChangeLinkExpiryType::internal_deserialize(map) + SharedContentRestoreInviteesType::internal_deserialize(map) } } - deserializer.deserialize_struct("SharedContentChangeLinkExpiryType", SHARED_CONTENT_CHANGE_LINK_EXPIRY_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("SharedContentRestoreInviteesType", SHARED_CONTENT_RESTORE_INVITEES_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SharedContentChangeLinkExpiryType { +impl ::serde::ser::Serialize for SharedContentRestoreInviteesType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SharedContentChangeLinkExpiryType", 1)?; + let mut s = serializer.serialize_struct("SharedContentRestoreInviteesType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Changed link password of shared file/folder. -#[derive(Debug, Clone, PartialEq, Eq, Default)] -#[non_exhaustive] // structs may have more fields added in the future. -pub struct SharedContentChangeLinkPasswordDetails { -} - -const SHARED_CONTENT_CHANGE_LINK_PASSWORD_DETAILS_FIELDS: &[&str] = &[]; -impl SharedContentChangeLinkPasswordDetails { - // no _opt deserializer - pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( - mut map: V, - ) -> Result { - // ignore any fields found; none are presently recognized - crate::eat_json_fields(&mut map)?; - Ok(SharedContentChangeLinkPasswordDetails {}) - } -} - -impl<'de> ::serde::de::Deserialize<'de> for SharedContentChangeLinkPasswordDetails { - fn deserialize>(deserializer: D) -> Result { - // struct deserializer - use serde::de::{MapAccess, Visitor}; - struct StructVisitor; - impl<'de> Visitor<'de> for StructVisitor { - type Value = SharedContentChangeLinkPasswordDetails; - fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SharedContentChangeLinkPasswordDetails struct") - } - fn visit_map>(self, map: V) -> Result { - SharedContentChangeLinkPasswordDetails::internal_deserialize(map) - } - } - deserializer.deserialize_struct("SharedContentChangeLinkPasswordDetails", SHARED_CONTENT_CHANGE_LINK_PASSWORD_DETAILS_FIELDS, StructVisitor) - } -} - -impl ::serde::ser::Serialize for SharedContentChangeLinkPasswordDetails { - fn serialize(&self, serializer: S) -> Result { - // struct serializer - use serde::ser::SerializeStruct; - serializer.serialize_struct("SharedContentChangeLinkPasswordDetails", 0)?.end() - } -} - +/// Restored users and/or groups to membership of shared file/folder. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SharedContentChangeLinkPasswordType { - pub description: String, +pub struct SharedContentRestoreMemberDetails { + /// Shared content access level. + pub shared_content_access_level: crate::types::sharing::AccessLevel, } -impl SharedContentChangeLinkPasswordType { - pub fn new(description: String) -> Self { - SharedContentChangeLinkPasswordType { - description, +impl SharedContentRestoreMemberDetails { + pub fn new(shared_content_access_level: crate::types::sharing::AccessLevel) -> Self { + SharedContentRestoreMemberDetails { + shared_content_access_level, } } } -const SHARED_CONTENT_CHANGE_LINK_PASSWORD_TYPE_FIELDS: &[&str] = &["description"]; -impl SharedContentChangeLinkPasswordType { +const SHARED_CONTENT_RESTORE_MEMBER_DETAILS_FIELDS: &[&str] = &["shared_content_access_level"]; +impl SharedContentRestoreMemberDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_description = None; + ) -> Result, V::Error> { + let mut field_shared_content_access_level = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "description" => { - if field_description.is_some() { - return Err(::serde::de::Error::duplicate_field("description")); + "shared_content_access_level" => { + if field_shared_content_access_level.is_some() { + return Err(::serde::de::Error::duplicate_field("shared_content_access_level")); } - field_description = Some(map.next_value()?); + field_shared_content_access_level = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -89750,8 +111634,8 @@ impl SharedContentChangeLinkPasswordType { if optional && nothing { return Ok(None); } - let result = SharedContentChangeLinkPasswordType { - description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + let result = SharedContentRestoreMemberDetails { + shared_content_access_level: field_shared_content_access_level.ok_or_else(|| ::serde::de::Error::missing_field("shared_content_access_level"))?, }; Ok(Some(result)) } @@ -89761,96 +111645,75 @@ impl SharedContentChangeLinkPasswordType { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("description", &self.description)?; + s.serialize_field("shared_content_access_level", &self.shared_content_access_level)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for SharedContentChangeLinkPasswordType { +impl<'de> ::serde::de::Deserialize<'de> for SharedContentRestoreMemberDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SharedContentChangeLinkPasswordType; + type Value = SharedContentRestoreMemberDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SharedContentChangeLinkPasswordType struct") + f.write_str("a SharedContentRestoreMemberDetails struct") } fn visit_map>(self, map: V) -> Result { - SharedContentChangeLinkPasswordType::internal_deserialize(map) + SharedContentRestoreMemberDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("SharedContentChangeLinkPasswordType", SHARED_CONTENT_CHANGE_LINK_PASSWORD_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("SharedContentRestoreMemberDetails", SHARED_CONTENT_RESTORE_MEMBER_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SharedContentChangeLinkPasswordType { +impl ::serde::ser::Serialize for SharedContentRestoreMemberDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SharedContentChangeLinkPasswordType", 1)?; + let mut s = serializer.serialize_struct("SharedContentRestoreMemberDetails", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Changed access type of shared file/folder member. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SharedContentChangeMemberRoleDetails { - /// New access level. - pub new_access_level: crate::types::sharing::AccessLevel, - /// Previous access level. Might be missing due to historical data gap. - pub previous_access_level: Option, +pub struct SharedContentRestoreMemberType { + pub description: String, } -impl SharedContentChangeMemberRoleDetails { - pub fn new(new_access_level: crate::types::sharing::AccessLevel) -> Self { - SharedContentChangeMemberRoleDetails { - new_access_level, - previous_access_level: None, +impl SharedContentRestoreMemberType { + pub fn new(description: String) -> Self { + SharedContentRestoreMemberType { + description, } } - - pub fn with_previous_access_level( - mut self, - value: crate::types::sharing::AccessLevel, - ) -> Self { - self.previous_access_level = Some(value); - self - } } -const SHARED_CONTENT_CHANGE_MEMBER_ROLE_DETAILS_FIELDS: &[&str] = &["new_access_level", - "previous_access_level"]; -impl SharedContentChangeMemberRoleDetails { +const SHARED_CONTENT_RESTORE_MEMBER_TYPE_FIELDS: &[&str] = &["description"]; +impl SharedContentRestoreMemberType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_new_access_level = None; - let mut field_previous_access_level = None; + ) -> Result, V::Error> { + let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "new_access_level" => { - if field_new_access_level.is_some() { - return Err(::serde::de::Error::duplicate_field("new_access_level")); - } - field_new_access_level = Some(map.next_value()?); - } - "previous_access_level" => { - if field_previous_access_level.is_some() { - return Err(::serde::de::Error::duplicate_field("previous_access_level")); + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); } - field_previous_access_level = Some(map.next_value()?); + field_description = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -89861,9 +111724,8 @@ impl SharedContentChangeMemberRoleDetails { if optional && nothing { return Ok(None); } - let result = SharedContentChangeMemberRoleDetails { - new_access_level: field_new_access_level.ok_or_else(|| ::serde::de::Error::missing_field("new_access_level"))?, - previous_access_level: field_previous_access_level.and_then(Option::flatten), + let result = SharedContentRestoreMemberType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) } @@ -89873,68 +111735,109 @@ impl SharedContentChangeMemberRoleDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("new_access_level", &self.new_access_level)?; - if let Some(val) = &self.previous_access_level { - s.serialize_field("previous_access_level", val)?; - } + s.serialize_field("description", &self.description)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for SharedContentChangeMemberRoleDetails { +impl<'de> ::serde::de::Deserialize<'de> for SharedContentRestoreMemberType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SharedContentChangeMemberRoleDetails; + type Value = SharedContentRestoreMemberType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SharedContentChangeMemberRoleDetails struct") + f.write_str("a SharedContentRestoreMemberType struct") } fn visit_map>(self, map: V) -> Result { - SharedContentChangeMemberRoleDetails::internal_deserialize(map) + SharedContentRestoreMemberType::internal_deserialize(map) } } - deserializer.deserialize_struct("SharedContentChangeMemberRoleDetails", SHARED_CONTENT_CHANGE_MEMBER_ROLE_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("SharedContentRestoreMemberType", SHARED_CONTENT_RESTORE_MEMBER_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SharedContentChangeMemberRoleDetails { +impl ::serde::ser::Serialize for SharedContentRestoreMemberType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SharedContentChangeMemberRoleDetails", 2)?; + let mut s = serializer.serialize_struct("SharedContentRestoreMemberType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } +/// Unshared file/folder by clearing membership. +#[derive(Debug, Clone, PartialEq, Eq, Default)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct SharedContentUnshareDetails { +} + +const SHARED_CONTENT_UNSHARE_DETAILS_FIELDS: &[&str] = &[]; +impl SharedContentUnshareDetails { + // no _opt deserializer + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + ) -> Result { + // ignore any fields found; none are presently recognized + crate::eat_json_fields(&mut map)?; + Ok(SharedContentUnshareDetails {}) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for SharedContentUnshareDetails { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = SharedContentUnshareDetails; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a SharedContentUnshareDetails struct") + } + fn visit_map>(self, map: V) -> Result { + SharedContentUnshareDetails::internal_deserialize(map) + } + } + deserializer.deserialize_struct("SharedContentUnshareDetails", SHARED_CONTENT_UNSHARE_DETAILS_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for SharedContentUnshareDetails { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + serializer.serialize_struct("SharedContentUnshareDetails", 0)?.end() + } +} + #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SharedContentChangeMemberRoleType { +pub struct SharedContentUnshareType { pub description: String, } -impl SharedContentChangeMemberRoleType { +impl SharedContentUnshareType { pub fn new(description: String) -> Self { - SharedContentChangeMemberRoleType { + SharedContentUnshareType { description, } } } -const SHARED_CONTENT_CHANGE_MEMBER_ROLE_TYPE_FIELDS: &[&str] = &["description"]; -impl SharedContentChangeMemberRoleType { +const SHARED_CONTENT_UNSHARE_TYPE_FIELDS: &[&str] = &["description"]; +impl SharedContentUnshareType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -89955,7 +111858,7 @@ impl SharedContentChangeMemberRoleType { if optional && nothing { return Ok(None); } - let result = SharedContentChangeMemberRoleType { + let result = SharedContentUnshareType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -89971,88 +111874,102 @@ impl SharedContentChangeMemberRoleType { } } -impl<'de> ::serde::de::Deserialize<'de> for SharedContentChangeMemberRoleType { +impl<'de> ::serde::de::Deserialize<'de> for SharedContentUnshareType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SharedContentChangeMemberRoleType; + type Value = SharedContentUnshareType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SharedContentChangeMemberRoleType struct") + f.write_str("a SharedContentUnshareType struct") } fn visit_map>(self, map: V) -> Result { - SharedContentChangeMemberRoleType::internal_deserialize(map) + SharedContentUnshareType::internal_deserialize(map) } } - deserializer.deserialize_struct("SharedContentChangeMemberRoleType", SHARED_CONTENT_CHANGE_MEMBER_ROLE_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("SharedContentUnshareType", SHARED_CONTENT_UNSHARE_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SharedContentChangeMemberRoleType { +impl ::serde::ser::Serialize for SharedContentUnshareType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SharedContentChangeMemberRoleType", 1)?; + let mut s = serializer.serialize_struct("SharedContentUnshareType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Changed whether members can see who viewed shared file/folder. +/// Previewed shared file/folder. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SharedContentChangeViewerInfoPolicyDetails { - /// New viewer info policy. - pub new_value: crate::types::sharing::ViewerInfoPolicy, - /// Previous view info policy. - pub previous_value: Option, +pub struct SharedContentViewDetails { + /// Shared content link. + pub shared_content_link: String, + /// Shared content access level. + pub shared_content_access_level: crate::types::sharing::AccessLevel, + /// The shared content owner. + pub shared_content_owner: Option, } -impl SharedContentChangeViewerInfoPolicyDetails { - pub fn new(new_value: crate::types::sharing::ViewerInfoPolicy) -> Self { - SharedContentChangeViewerInfoPolicyDetails { - new_value, - previous_value: None, +impl SharedContentViewDetails { + pub fn new( + shared_content_link: String, + shared_content_access_level: crate::types::sharing::AccessLevel, + ) -> Self { + SharedContentViewDetails { + shared_content_link, + shared_content_access_level, + shared_content_owner: None, } } - pub fn with_previous_value(mut self, value: crate::types::sharing::ViewerInfoPolicy) -> Self { - self.previous_value = Some(value); + pub fn with_shared_content_owner(mut self, value: UserLogInfo) -> Self { + self.shared_content_owner = Some(value); self } } -const SHARED_CONTENT_CHANGE_VIEWER_INFO_POLICY_DETAILS_FIELDS: &[&str] = &["new_value", - "previous_value"]; -impl SharedContentChangeViewerInfoPolicyDetails { +const SHARED_CONTENT_VIEW_DETAILS_FIELDS: &[&str] = &["shared_content_link", + "shared_content_access_level", + "shared_content_owner"]; +impl SharedContentViewDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_new_value = None; - let mut field_previous_value = None; + ) -> Result, V::Error> { + let mut field_shared_content_link = None; + let mut field_shared_content_access_level = None; + let mut field_shared_content_owner = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "new_value" => { - if field_new_value.is_some() { - return Err(::serde::de::Error::duplicate_field("new_value")); + "shared_content_link" => { + if field_shared_content_link.is_some() { + return Err(::serde::de::Error::duplicate_field("shared_content_link")); } - field_new_value = Some(map.next_value()?); + field_shared_content_link = Some(map.next_value()?); } - "previous_value" => { - if field_previous_value.is_some() { - return Err(::serde::de::Error::duplicate_field("previous_value")); + "shared_content_access_level" => { + if field_shared_content_access_level.is_some() { + return Err(::serde::de::Error::duplicate_field("shared_content_access_level")); } - field_previous_value = Some(map.next_value()?); + field_shared_content_access_level = Some(map.next_value()?); + } + "shared_content_owner" => { + if field_shared_content_owner.is_some() { + return Err(::serde::de::Error::duplicate_field("shared_content_owner")); + } + field_shared_content_owner = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -90063,9 +111980,10 @@ impl SharedContentChangeViewerInfoPolicyDetails { if optional && nothing { return Ok(None); } - let result = SharedContentChangeViewerInfoPolicyDetails { - new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, - previous_value: field_previous_value.and_then(Option::flatten), + let result = SharedContentViewDetails { + shared_content_link: field_shared_content_link.ok_or_else(|| ::serde::de::Error::missing_field("shared_content_link"))?, + shared_content_access_level: field_shared_content_access_level.ok_or_else(|| ::serde::de::Error::missing_field("shared_content_access_level"))?, + shared_content_owner: field_shared_content_owner.and_then(Option::flatten), }; Ok(Some(result)) } @@ -90075,37 +111993,38 @@ impl SharedContentChangeViewerInfoPolicyDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("new_value", &self.new_value)?; - if let Some(val) = &self.previous_value { - s.serialize_field("previous_value", val)?; + s.serialize_field("shared_content_link", &self.shared_content_link)?; + s.serialize_field("shared_content_access_level", &self.shared_content_access_level)?; + if let Some(val) = &self.shared_content_owner { + s.serialize_field("shared_content_owner", val)?; } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for SharedContentChangeViewerInfoPolicyDetails { +impl<'de> ::serde::de::Deserialize<'de> for SharedContentViewDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SharedContentChangeViewerInfoPolicyDetails; + type Value = SharedContentViewDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SharedContentChangeViewerInfoPolicyDetails struct") + f.write_str("a SharedContentViewDetails struct") } fn visit_map>(self, map: V) -> Result { - SharedContentChangeViewerInfoPolicyDetails::internal_deserialize(map) + SharedContentViewDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("SharedContentChangeViewerInfoPolicyDetails", SHARED_CONTENT_CHANGE_VIEWER_INFO_POLICY_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("SharedContentViewDetails", SHARED_CONTENT_VIEW_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SharedContentChangeViewerInfoPolicyDetails { +impl ::serde::ser::Serialize for SharedContentViewDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SharedContentChangeViewerInfoPolicyDetails", 2)?; + let mut s = serializer.serialize_struct("SharedContentViewDetails", 3)?; self.internal_serialize::(&mut s)?; s.end() } @@ -90113,30 +112032,30 @@ impl ::serde::ser::Serialize for SharedContentChangeViewerInfoPolicyDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SharedContentChangeViewerInfoPolicyType { +pub struct SharedContentViewType { pub description: String, } -impl SharedContentChangeViewerInfoPolicyType { +impl SharedContentViewType { pub fn new(description: String) -> Self { - SharedContentChangeViewerInfoPolicyType { + SharedContentViewType { description, } } } -const SHARED_CONTENT_CHANGE_VIEWER_INFO_POLICY_TYPE_FIELDS: &[&str] = &["description"]; -impl SharedContentChangeViewerInfoPolicyType { +const SHARED_CONTENT_VIEW_TYPE_FIELDS: &[&str] = &["description"]; +impl SharedContentViewType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -90157,7 +112076,7 @@ impl SharedContentChangeViewerInfoPolicyType { if optional && nothing { return Ok(None); } - let result = SharedContentChangeViewerInfoPolicyType { + let result = SharedContentViewType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -90173,63 +112092,88 @@ impl SharedContentChangeViewerInfoPolicyType { } } -impl<'de> ::serde::de::Deserialize<'de> for SharedContentChangeViewerInfoPolicyType { +impl<'de> ::serde::de::Deserialize<'de> for SharedContentViewType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SharedContentChangeViewerInfoPolicyType; + type Value = SharedContentViewType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SharedContentChangeViewerInfoPolicyType struct") + f.write_str("a SharedContentViewType struct") } fn visit_map>(self, map: V) -> Result { - SharedContentChangeViewerInfoPolicyType::internal_deserialize(map) + SharedContentViewType::internal_deserialize(map) } } - deserializer.deserialize_struct("SharedContentChangeViewerInfoPolicyType", SHARED_CONTENT_CHANGE_VIEWER_INFO_POLICY_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("SharedContentViewType", SHARED_CONTENT_VIEW_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SharedContentChangeViewerInfoPolicyType { +impl ::serde::ser::Serialize for SharedContentViewType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SharedContentChangeViewerInfoPolicyType", 1)?; + let mut s = serializer.serialize_struct("SharedContentViewType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Acquired membership of shared file/folder by accepting invite. -#[derive(Debug, Clone, PartialEq, Eq, Default)] +/// Changed who can access shared folder via link. +#[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SharedContentClaimInvitationDetails { - /// Shared content link. - pub shared_content_link: Option, +pub struct SharedFolderChangeLinkPolicyDetails { + /// New shared folder link policy. + pub new_value: crate::types::sharing::SharedLinkPolicy, + /// Previous shared folder link policy. Might be missing due to historical data gap. + pub previous_value: Option, } -impl SharedContentClaimInvitationDetails { - pub fn with_shared_content_link(mut self, value: String) -> Self { - self.shared_content_link = Some(value); +impl SharedFolderChangeLinkPolicyDetails { + pub fn new(new_value: crate::types::sharing::SharedLinkPolicy) -> Self { + SharedFolderChangeLinkPolicyDetails { + new_value, + previous_value: None, + } + } + + pub fn with_previous_value(mut self, value: crate::types::sharing::SharedLinkPolicy) -> Self { + self.previous_value = Some(value); self } } -const SHARED_CONTENT_CLAIM_INVITATION_DETAILS_FIELDS: &[&str] = &["shared_content_link"]; -impl SharedContentClaimInvitationDetails { - // no _opt deserializer +const SHARED_FOLDER_CHANGE_LINK_POLICY_DETAILS_FIELDS: &[&str] = &["new_value", + "previous_value"]; +impl SharedFolderChangeLinkPolicyDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - ) -> Result { - let mut field_shared_content_link = None; + optional: bool, + ) -> Result, V::Error> { + let mut field_new_value = None; + let mut field_previous_value = None; + let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { + nothing = false; match key { - "shared_content_link" => { - if field_shared_content_link.is_some() { - return Err(::serde::de::Error::duplicate_field("shared_content_link")); + "new_value" => { + if field_new_value.is_some() { + return Err(::serde::de::Error::duplicate_field("new_value")); } - field_shared_content_link = Some(map.next_value()?); + field_new_value = Some(map.next_value()?); + } + "previous_value" => { + if field_previous_value.is_some() { + return Err(::serde::de::Error::duplicate_field("previous_value")); + } + field_previous_value = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -90237,10 +112181,14 @@ impl SharedContentClaimInvitationDetails { } } } - let result = SharedContentClaimInvitationDetails { - shared_content_link: field_shared_content_link.and_then(Option::flatten), + if optional && nothing { + return Ok(None); + } + let result = SharedFolderChangeLinkPolicyDetails { + new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, + previous_value: field_previous_value.and_then(Option::flatten), }; - Ok(result) + Ok(Some(result)) } pub(crate) fn internal_serialize( @@ -90248,36 +112196,37 @@ impl SharedContentClaimInvitationDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - if let Some(val) = &self.shared_content_link { - s.serialize_field("shared_content_link", val)?; + s.serialize_field("new_value", &self.new_value)?; + if let Some(val) = &self.previous_value { + s.serialize_field("previous_value", val)?; } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for SharedContentClaimInvitationDetails { +impl<'de> ::serde::de::Deserialize<'de> for SharedFolderChangeLinkPolicyDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SharedContentClaimInvitationDetails; + type Value = SharedFolderChangeLinkPolicyDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SharedContentClaimInvitationDetails struct") + f.write_str("a SharedFolderChangeLinkPolicyDetails struct") } fn visit_map>(self, map: V) -> Result { - SharedContentClaimInvitationDetails::internal_deserialize(map) + SharedFolderChangeLinkPolicyDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("SharedContentClaimInvitationDetails", SHARED_CONTENT_CLAIM_INVITATION_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("SharedFolderChangeLinkPolicyDetails", SHARED_FOLDER_CHANGE_LINK_POLICY_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SharedContentClaimInvitationDetails { +impl ::serde::ser::Serialize for SharedFolderChangeLinkPolicyDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SharedContentClaimInvitationDetails", 1)?; + let mut s = serializer.serialize_struct("SharedFolderChangeLinkPolicyDetails", 2)?; self.internal_serialize::(&mut s)?; s.end() } @@ -90285,30 +112234,30 @@ impl ::serde::ser::Serialize for SharedContentClaimInvitationDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SharedContentClaimInvitationType { +pub struct SharedFolderChangeLinkPolicyType { pub description: String, } -impl SharedContentClaimInvitationType { +impl SharedFolderChangeLinkPolicyType { pub fn new(description: String) -> Self { - SharedContentClaimInvitationType { + SharedFolderChangeLinkPolicyType { description, } } } -const SHARED_CONTENT_CLAIM_INVITATION_TYPE_FIELDS: &[&str] = &["description"]; -impl SharedContentClaimInvitationType { +const SHARED_FOLDER_CHANGE_LINK_POLICY_TYPE_FIELDS: &[&str] = &["description"]; +impl SharedFolderChangeLinkPolicyType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -90329,7 +112278,7 @@ impl SharedContentClaimInvitationType { if optional && nothing { return Ok(None); } - let result = SharedContentClaimInvitationType { + let result = SharedFolderChangeLinkPolicyType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -90345,114 +112294,88 @@ impl SharedContentClaimInvitationType { } } -impl<'de> ::serde::de::Deserialize<'de> for SharedContentClaimInvitationType { +impl<'de> ::serde::de::Deserialize<'de> for SharedFolderChangeLinkPolicyType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SharedContentClaimInvitationType; + type Value = SharedFolderChangeLinkPolicyType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SharedContentClaimInvitationType struct") + f.write_str("a SharedFolderChangeLinkPolicyType struct") } fn visit_map>(self, map: V) -> Result { - SharedContentClaimInvitationType::internal_deserialize(map) + SharedFolderChangeLinkPolicyType::internal_deserialize(map) } } - deserializer.deserialize_struct("SharedContentClaimInvitationType", SHARED_CONTENT_CLAIM_INVITATION_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("SharedFolderChangeLinkPolicyType", SHARED_FOLDER_CHANGE_LINK_POLICY_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SharedContentClaimInvitationType { +impl ::serde::ser::Serialize for SharedFolderChangeLinkPolicyType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SharedContentClaimInvitationType", 1)?; + let mut s = serializer.serialize_struct("SharedFolderChangeLinkPolicyType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Copied shared file/folder to own Dropbox. +/// Changed whether shared folder inherits members from parent folder. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SharedContentCopyDetails { - /// Shared content link. - pub shared_content_link: String, - /// Shared content access level. - pub shared_content_access_level: crate::types::sharing::AccessLevel, - /// The path where the member saved the content. - pub destination_path: FilePath, - /// The shared content owner. - pub shared_content_owner: Option, +pub struct SharedFolderChangeMembersInheritancePolicyDetails { + /// New member inheritance policy. + pub new_value: SharedFolderMembersInheritancePolicy, + /// Previous member inheritance policy. Might be missing due to historical data gap. + pub previous_value: Option, } -impl SharedContentCopyDetails { - pub fn new( - shared_content_link: String, - shared_content_access_level: crate::types::sharing::AccessLevel, - destination_path: FilePath, - ) -> Self { - SharedContentCopyDetails { - shared_content_link, - shared_content_access_level, - destination_path, - shared_content_owner: None, +impl SharedFolderChangeMembersInheritancePolicyDetails { + pub fn new(new_value: SharedFolderMembersInheritancePolicy) -> Self { + SharedFolderChangeMembersInheritancePolicyDetails { + new_value, + previous_value: None, } } - pub fn with_shared_content_owner(mut self, value: UserLogInfo) -> Self { - self.shared_content_owner = Some(value); + pub fn with_previous_value(mut self, value: SharedFolderMembersInheritancePolicy) -> Self { + self.previous_value = Some(value); self } } -const SHARED_CONTENT_COPY_DETAILS_FIELDS: &[&str] = &["shared_content_link", - "shared_content_access_level", - "destination_path", - "shared_content_owner"]; -impl SharedContentCopyDetails { +const SHARED_FOLDER_CHANGE_MEMBERS_INHERITANCE_POLICY_DETAILS_FIELDS: &[&str] = &["new_value", + "previous_value"]; +impl SharedFolderChangeMembersInheritancePolicyDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_shared_content_link = None; - let mut field_shared_content_access_level = None; - let mut field_destination_path = None; - let mut field_shared_content_owner = None; + ) -> Result, V::Error> { + let mut field_new_value = None; + let mut field_previous_value = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "shared_content_link" => { - if field_shared_content_link.is_some() { - return Err(::serde::de::Error::duplicate_field("shared_content_link")); - } - field_shared_content_link = Some(map.next_value()?); - } - "shared_content_access_level" => { - if field_shared_content_access_level.is_some() { - return Err(::serde::de::Error::duplicate_field("shared_content_access_level")); - } - field_shared_content_access_level = Some(map.next_value()?); - } - "destination_path" => { - if field_destination_path.is_some() { - return Err(::serde::de::Error::duplicate_field("destination_path")); + "new_value" => { + if field_new_value.is_some() { + return Err(::serde::de::Error::duplicate_field("new_value")); } - field_destination_path = Some(map.next_value()?); + field_new_value = Some(map.next_value()?); } - "shared_content_owner" => { - if field_shared_content_owner.is_some() { - return Err(::serde::de::Error::duplicate_field("shared_content_owner")); + "previous_value" => { + if field_previous_value.is_some() { + return Err(::serde::de::Error::duplicate_field("previous_value")); } - field_shared_content_owner = Some(map.next_value()?); + field_previous_value = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -90463,11 +112386,9 @@ impl SharedContentCopyDetails { if optional && nothing { return Ok(None); } - let result = SharedContentCopyDetails { - shared_content_link: field_shared_content_link.ok_or_else(|| ::serde::de::Error::missing_field("shared_content_link"))?, - shared_content_access_level: field_shared_content_access_level.ok_or_else(|| ::serde::de::Error::missing_field("shared_content_access_level"))?, - destination_path: field_destination_path.ok_or_else(|| ::serde::de::Error::missing_field("destination_path"))?, - shared_content_owner: field_shared_content_owner.and_then(Option::flatten), + let result = SharedFolderChangeMembersInheritancePolicyDetails { + new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, + previous_value: field_previous_value.and_then(Option::flatten), }; Ok(Some(result)) } @@ -90477,39 +112398,37 @@ impl SharedContentCopyDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("shared_content_link", &self.shared_content_link)?; - s.serialize_field("shared_content_access_level", &self.shared_content_access_level)?; - s.serialize_field("destination_path", &self.destination_path)?; - if let Some(val) = &self.shared_content_owner { - s.serialize_field("shared_content_owner", val)?; + s.serialize_field("new_value", &self.new_value)?; + if let Some(val) = &self.previous_value { + s.serialize_field("previous_value", val)?; } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for SharedContentCopyDetails { +impl<'de> ::serde::de::Deserialize<'de> for SharedFolderChangeMembersInheritancePolicyDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SharedContentCopyDetails; + type Value = SharedFolderChangeMembersInheritancePolicyDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SharedContentCopyDetails struct") + f.write_str("a SharedFolderChangeMembersInheritancePolicyDetails struct") } fn visit_map>(self, map: V) -> Result { - SharedContentCopyDetails::internal_deserialize(map) + SharedFolderChangeMembersInheritancePolicyDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("SharedContentCopyDetails", SHARED_CONTENT_COPY_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("SharedFolderChangeMembersInheritancePolicyDetails", SHARED_FOLDER_CHANGE_MEMBERS_INHERITANCE_POLICY_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SharedContentCopyDetails { +impl ::serde::ser::Serialize for SharedFolderChangeMembersInheritancePolicyDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SharedContentCopyDetails", 4)?; + let mut s = serializer.serialize_struct("SharedFolderChangeMembersInheritancePolicyDetails", 2)?; self.internal_serialize::(&mut s)?; s.end() } @@ -90517,30 +112436,30 @@ impl ::serde::ser::Serialize for SharedContentCopyDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SharedContentCopyType { +pub struct SharedFolderChangeMembersInheritancePolicyType { pub description: String, } -impl SharedContentCopyType { +impl SharedFolderChangeMembersInheritancePolicyType { pub fn new(description: String) -> Self { - SharedContentCopyType { + SharedFolderChangeMembersInheritancePolicyType { description, } } } -const SHARED_CONTENT_COPY_TYPE_FIELDS: &[&str] = &["description"]; -impl SharedContentCopyType { +const SHARED_FOLDER_CHANGE_MEMBERS_INHERITANCE_POLICY_TYPE_FIELDS: &[&str] = &["description"]; +impl SharedFolderChangeMembersInheritancePolicyType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -90561,7 +112480,7 @@ impl SharedContentCopyType { if optional && nothing { return Ok(None); } - let result = SharedContentCopyType { + let result = SharedFolderChangeMembersInheritancePolicyType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -90577,102 +112496,88 @@ impl SharedContentCopyType { } } -impl<'de> ::serde::de::Deserialize<'de> for SharedContentCopyType { +impl<'de> ::serde::de::Deserialize<'de> for SharedFolderChangeMembersInheritancePolicyType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SharedContentCopyType; + type Value = SharedFolderChangeMembersInheritancePolicyType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SharedContentCopyType struct") + f.write_str("a SharedFolderChangeMembersInheritancePolicyType struct") } fn visit_map>(self, map: V) -> Result { - SharedContentCopyType::internal_deserialize(map) + SharedFolderChangeMembersInheritancePolicyType::internal_deserialize(map) } } - deserializer.deserialize_struct("SharedContentCopyType", SHARED_CONTENT_COPY_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("SharedFolderChangeMembersInheritancePolicyType", SHARED_FOLDER_CHANGE_MEMBERS_INHERITANCE_POLICY_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SharedContentCopyType { +impl ::serde::ser::Serialize for SharedFolderChangeMembersInheritancePolicyType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SharedContentCopyType", 1)?; + let mut s = serializer.serialize_struct("SharedFolderChangeMembersInheritancePolicyType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } - -/// Downloaded shared file/folder. -#[derive(Debug, Clone, PartialEq, Eq)] -#[non_exhaustive] // structs may have more fields added in the future. -pub struct SharedContentDownloadDetails { - /// Shared content link. - pub shared_content_link: String, - /// Shared content access level. - pub shared_content_access_level: crate::types::sharing::AccessLevel, - /// The shared content owner. - pub shared_content_owner: Option, + +/// Changed who can add/remove members of shared folder. +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct SharedFolderChangeMembersManagementPolicyDetails { + /// New members management policy. + pub new_value: crate::types::sharing::AclUpdatePolicy, + /// Previous members management policy. Might be missing due to historical data gap. + pub previous_value: Option, } -impl SharedContentDownloadDetails { - pub fn new( - shared_content_link: String, - shared_content_access_level: crate::types::sharing::AccessLevel, - ) -> Self { - SharedContentDownloadDetails { - shared_content_link, - shared_content_access_level, - shared_content_owner: None, +impl SharedFolderChangeMembersManagementPolicyDetails { + pub fn new(new_value: crate::types::sharing::AclUpdatePolicy) -> Self { + SharedFolderChangeMembersManagementPolicyDetails { + new_value, + previous_value: None, } } - pub fn with_shared_content_owner(mut self, value: UserLogInfo) -> Self { - self.shared_content_owner = Some(value); + pub fn with_previous_value(mut self, value: crate::types::sharing::AclUpdatePolicy) -> Self { + self.previous_value = Some(value); self } } -const SHARED_CONTENT_DOWNLOAD_DETAILS_FIELDS: &[&str] = &["shared_content_link", - "shared_content_access_level", - "shared_content_owner"]; -impl SharedContentDownloadDetails { +const SHARED_FOLDER_CHANGE_MEMBERS_MANAGEMENT_POLICY_DETAILS_FIELDS: &[&str] = &["new_value", + "previous_value"]; +impl SharedFolderChangeMembersManagementPolicyDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_shared_content_link = None; - let mut field_shared_content_access_level = None; - let mut field_shared_content_owner = None; + ) -> Result, V::Error> { + let mut field_new_value = None; + let mut field_previous_value = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "shared_content_link" => { - if field_shared_content_link.is_some() { - return Err(::serde::de::Error::duplicate_field("shared_content_link")); - } - field_shared_content_link = Some(map.next_value()?); - } - "shared_content_access_level" => { - if field_shared_content_access_level.is_some() { - return Err(::serde::de::Error::duplicate_field("shared_content_access_level")); + "new_value" => { + if field_new_value.is_some() { + return Err(::serde::de::Error::duplicate_field("new_value")); } - field_shared_content_access_level = Some(map.next_value()?); + field_new_value = Some(map.next_value()?); } - "shared_content_owner" => { - if field_shared_content_owner.is_some() { - return Err(::serde::de::Error::duplicate_field("shared_content_owner")); + "previous_value" => { + if field_previous_value.is_some() { + return Err(::serde::de::Error::duplicate_field("previous_value")); } - field_shared_content_owner = Some(map.next_value()?); + field_previous_value = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -90683,10 +112588,9 @@ impl SharedContentDownloadDetails { if optional && nothing { return Ok(None); } - let result = SharedContentDownloadDetails { - shared_content_link: field_shared_content_link.ok_or_else(|| ::serde::de::Error::missing_field("shared_content_link"))?, - shared_content_access_level: field_shared_content_access_level.ok_or_else(|| ::serde::de::Error::missing_field("shared_content_access_level"))?, - shared_content_owner: field_shared_content_owner.and_then(Option::flatten), + let result = SharedFolderChangeMembersManagementPolicyDetails { + new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, + previous_value: field_previous_value.and_then(Option::flatten), }; Ok(Some(result)) } @@ -90696,38 +112600,37 @@ impl SharedContentDownloadDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("shared_content_link", &self.shared_content_link)?; - s.serialize_field("shared_content_access_level", &self.shared_content_access_level)?; - if let Some(val) = &self.shared_content_owner { - s.serialize_field("shared_content_owner", val)?; + s.serialize_field("new_value", &self.new_value)?; + if let Some(val) = &self.previous_value { + s.serialize_field("previous_value", val)?; } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for SharedContentDownloadDetails { +impl<'de> ::serde::de::Deserialize<'de> for SharedFolderChangeMembersManagementPolicyDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SharedContentDownloadDetails; + type Value = SharedFolderChangeMembersManagementPolicyDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SharedContentDownloadDetails struct") + f.write_str("a SharedFolderChangeMembersManagementPolicyDetails struct") } fn visit_map>(self, map: V) -> Result { - SharedContentDownloadDetails::internal_deserialize(map) + SharedFolderChangeMembersManagementPolicyDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("SharedContentDownloadDetails", SHARED_CONTENT_DOWNLOAD_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("SharedFolderChangeMembersManagementPolicyDetails", SHARED_FOLDER_CHANGE_MEMBERS_MANAGEMENT_POLICY_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SharedContentDownloadDetails { +impl ::serde::ser::Serialize for SharedFolderChangeMembersManagementPolicyDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SharedContentDownloadDetails", 3)?; + let mut s = serializer.serialize_struct("SharedFolderChangeMembersManagementPolicyDetails", 2)?; self.internal_serialize::(&mut s)?; s.end() } @@ -90735,30 +112638,30 @@ impl ::serde::ser::Serialize for SharedContentDownloadDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SharedContentDownloadType { +pub struct SharedFolderChangeMembersManagementPolicyType { pub description: String, } -impl SharedContentDownloadType { +impl SharedFolderChangeMembersManagementPolicyType { pub fn new(description: String) -> Self { - SharedContentDownloadType { + SharedFolderChangeMembersManagementPolicyType { description, } } } -const SHARED_CONTENT_DOWNLOAD_TYPE_FIELDS: &[&str] = &["description"]; -impl SharedContentDownloadType { +const SHARED_FOLDER_CHANGE_MEMBERS_MANAGEMENT_POLICY_TYPE_FIELDS: &[&str] = &["description"]; +impl SharedFolderChangeMembersManagementPolicyType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -90779,7 +112682,7 @@ impl SharedContentDownloadType { if optional && nothing { return Ok(None); } - let result = SharedContentDownloadType { + let result = SharedFolderChangeMembersManagementPolicyType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -90795,104 +112698,172 @@ impl SharedContentDownloadType { } } -impl<'de> ::serde::de::Deserialize<'de> for SharedContentDownloadType { +impl<'de> ::serde::de::Deserialize<'de> for SharedFolderChangeMembersManagementPolicyType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SharedContentDownloadType; + type Value = SharedFolderChangeMembersManagementPolicyType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SharedContentDownloadType struct") + f.write_str("a SharedFolderChangeMembersManagementPolicyType struct") } fn visit_map>(self, map: V) -> Result { - SharedContentDownloadType::internal_deserialize(map) + SharedFolderChangeMembersManagementPolicyType::internal_deserialize(map) } } - deserializer.deserialize_struct("SharedContentDownloadType", SHARED_CONTENT_DOWNLOAD_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("SharedFolderChangeMembersManagementPolicyType", SHARED_FOLDER_CHANGE_MEMBERS_MANAGEMENT_POLICY_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SharedContentDownloadType { +impl ::serde::ser::Serialize for SharedFolderChangeMembersManagementPolicyType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SharedContentDownloadType", 1)?; + let mut s = serializer.serialize_struct("SharedFolderChangeMembersManagementPolicyType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Left shared file/folder. -#[derive(Debug, Clone, PartialEq, Eq, Default)] +/// Changed who can become member of shared folder. +#[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SharedContentRelinquishMembershipDetails { +pub struct SharedFolderChangeMembersPolicyDetails { + /// New external invite policy. + pub new_value: crate::types::sharing::MemberPolicy, + /// Previous external invite policy. Might be missing due to historical data gap. + pub previous_value: Option, } -const SHARED_CONTENT_RELINQUISH_MEMBERSHIP_DETAILS_FIELDS: &[&str] = &[]; -impl SharedContentRelinquishMembershipDetails { - // no _opt deserializer +impl SharedFolderChangeMembersPolicyDetails { + pub fn new(new_value: crate::types::sharing::MemberPolicy) -> Self { + SharedFolderChangeMembersPolicyDetails { + new_value, + previous_value: None, + } + } + + pub fn with_previous_value(mut self, value: crate::types::sharing::MemberPolicy) -> Self { + self.previous_value = Some(value); + self + } +} + +const SHARED_FOLDER_CHANGE_MEMBERS_POLICY_DETAILS_FIELDS: &[&str] = &["new_value", + "previous_value"]; +impl SharedFolderChangeMembersPolicyDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - ) -> Result { - // ignore any fields found; none are presently recognized - crate::eat_json_fields(&mut map)?; - Ok(SharedContentRelinquishMembershipDetails {}) + optional: bool, + ) -> Result, V::Error> { + let mut field_new_value = None; + let mut field_previous_value = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "new_value" => { + if field_new_value.is_some() { + return Err(::serde::de::Error::duplicate_field("new_value")); + } + field_new_value = Some(map.next_value()?); + } + "previous_value" => { + if field_previous_value.is_some() { + return Err(::serde::de::Error::duplicate_field("previous_value")); + } + field_previous_value = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } + } + } + if optional && nothing { + return Ok(None); + } + let result = SharedFolderChangeMembersPolicyDetails { + new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, + previous_value: field_previous_value.and_then(Option::flatten), + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("new_value", &self.new_value)?; + if let Some(val) = &self.previous_value { + s.serialize_field("previous_value", val)?; + } + Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for SharedContentRelinquishMembershipDetails { +impl<'de> ::serde::de::Deserialize<'de> for SharedFolderChangeMembersPolicyDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SharedContentRelinquishMembershipDetails; + type Value = SharedFolderChangeMembersPolicyDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SharedContentRelinquishMembershipDetails struct") + f.write_str("a SharedFolderChangeMembersPolicyDetails struct") } fn visit_map>(self, map: V) -> Result { - SharedContentRelinquishMembershipDetails::internal_deserialize(map) + SharedFolderChangeMembersPolicyDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("SharedContentRelinquishMembershipDetails", SHARED_CONTENT_RELINQUISH_MEMBERSHIP_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("SharedFolderChangeMembersPolicyDetails", SHARED_FOLDER_CHANGE_MEMBERS_POLICY_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SharedContentRelinquishMembershipDetails { +impl ::serde::ser::Serialize for SharedFolderChangeMembersPolicyDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - serializer.serialize_struct("SharedContentRelinquishMembershipDetails", 0)?.end() + let mut s = serializer.serialize_struct("SharedFolderChangeMembersPolicyDetails", 2)?; + self.internal_serialize::(&mut s)?; + s.end() } } #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SharedContentRelinquishMembershipType { +pub struct SharedFolderChangeMembersPolicyType { pub description: String, } -impl SharedContentRelinquishMembershipType { +impl SharedFolderChangeMembersPolicyType { pub fn new(description: String) -> Self { - SharedContentRelinquishMembershipType { + SharedFolderChangeMembersPolicyType { description, } } } -const SHARED_CONTENT_RELINQUISH_MEMBERSHIP_TYPE_FIELDS: &[&str] = &["description"]; -impl SharedContentRelinquishMembershipType { +const SHARED_FOLDER_CHANGE_MEMBERS_POLICY_TYPE_FIELDS: &[&str] = &["description"]; +impl SharedFolderChangeMembersPolicyType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -90913,7 +112884,7 @@ impl SharedContentRelinquishMembershipType { if optional && nothing { return Ok(None); } - let result = SharedContentRelinquishMembershipType { + let result = SharedFolderChangeMembersPolicyType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -90929,72 +112900,63 @@ impl SharedContentRelinquishMembershipType { } } -impl<'de> ::serde::de::Deserialize<'de> for SharedContentRelinquishMembershipType { +impl<'de> ::serde::de::Deserialize<'de> for SharedFolderChangeMembersPolicyType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SharedContentRelinquishMembershipType; + type Value = SharedFolderChangeMembersPolicyType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SharedContentRelinquishMembershipType struct") + f.write_str("a SharedFolderChangeMembersPolicyType struct") } fn visit_map>(self, map: V) -> Result { - SharedContentRelinquishMembershipType::internal_deserialize(map) + SharedFolderChangeMembersPolicyType::internal_deserialize(map) } } - deserializer.deserialize_struct("SharedContentRelinquishMembershipType", SHARED_CONTENT_RELINQUISH_MEMBERSHIP_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("SharedFolderChangeMembersPolicyType", SHARED_FOLDER_CHANGE_MEMBERS_POLICY_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SharedContentRelinquishMembershipType { +impl ::serde::ser::Serialize for SharedFolderChangeMembersPolicyType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SharedContentRelinquishMembershipType", 1)?; + let mut s = serializer.serialize_struct("SharedFolderChangeMembersPolicyType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Removed invitee from shared file/folder before invite was accepted. -#[derive(Debug, Clone, PartialEq, Eq)] +/// Created shared folder. +#[derive(Debug, Clone, PartialEq, Eq, Default)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SharedContentRemoveInviteesDetails { - /// A list of invitees. - pub invitees: Vec, +pub struct SharedFolderCreateDetails { + /// Target namespace ID. + pub target_ns_id: Option, } -impl SharedContentRemoveInviteesDetails { - pub fn new(invitees: Vec) -> Self { - SharedContentRemoveInviteesDetails { - invitees, - } +impl SharedFolderCreateDetails { + pub fn with_target_ns_id(mut self, value: NamespaceId) -> Self { + self.target_ns_id = Some(value); + self } } -const SHARED_CONTENT_REMOVE_INVITEES_DETAILS_FIELDS: &[&str] = &["invitees"]; -impl SharedContentRemoveInviteesDetails { +const SHARED_FOLDER_CREATE_DETAILS_FIELDS: &[&str] = &["target_ns_id"]; +impl SharedFolderCreateDetails { + // no _opt deserializer pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( - map: V, - ) -> Result { - Self::internal_deserialize_opt(map, false).map(Option::unwrap) - } - - pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - optional: bool, - ) -> Result, V::Error> { - let mut field_invitees = None; - let mut nothing = true; + ) -> Result { + let mut field_target_ns_id = None; while let Some(key) = map.next_key::<&str>()? { - nothing = false; match key { - "invitees" => { - if field_invitees.is_some() { - return Err(::serde::de::Error::duplicate_field("invitees")); + "target_ns_id" => { + if field_target_ns_id.is_some() { + return Err(::serde::de::Error::duplicate_field("target_ns_id")); } - field_invitees = Some(map.next_value()?); + field_target_ns_id = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -91002,13 +112964,10 @@ impl SharedContentRemoveInviteesDetails { } } } - if optional && nothing { - return Ok(None); - } - let result = SharedContentRemoveInviteesDetails { - invitees: field_invitees.ok_or_else(|| ::serde::de::Error::missing_field("invitees"))?, + let result = SharedFolderCreateDetails { + target_ns_id: field_target_ns_id.and_then(Option::flatten), }; - Ok(Some(result)) + Ok(result) } pub(crate) fn internal_serialize( @@ -91016,34 +112975,36 @@ impl SharedContentRemoveInviteesDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("invitees", &self.invitees)?; + if let Some(val) = &self.target_ns_id { + s.serialize_field("target_ns_id", val)?; + } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for SharedContentRemoveInviteesDetails { +impl<'de> ::serde::de::Deserialize<'de> for SharedFolderCreateDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SharedContentRemoveInviteesDetails; + type Value = SharedFolderCreateDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SharedContentRemoveInviteesDetails struct") + f.write_str("a SharedFolderCreateDetails struct") } fn visit_map>(self, map: V) -> Result { - SharedContentRemoveInviteesDetails::internal_deserialize(map) + SharedFolderCreateDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("SharedContentRemoveInviteesDetails", SHARED_CONTENT_REMOVE_INVITEES_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("SharedFolderCreateDetails", SHARED_FOLDER_CREATE_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SharedContentRemoveInviteesDetails { +impl ::serde::ser::Serialize for SharedFolderCreateDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SharedContentRemoveInviteesDetails", 1)?; + let mut s = serializer.serialize_struct("SharedFolderCreateDetails", 1)?; self.internal_serialize::(&mut s)?; s.end() } @@ -91051,30 +113012,30 @@ impl ::serde::ser::Serialize for SharedContentRemoveInviteesDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SharedContentRemoveInviteesType { +pub struct SharedFolderCreateType { pub description: String, } -impl SharedContentRemoveInviteesType { +impl SharedFolderCreateType { pub fn new(description: String) -> Self { - SharedContentRemoveInviteesType { + SharedFolderCreateType { description, } } } -const SHARED_CONTENT_REMOVE_INVITEES_TYPE_FIELDS: &[&str] = &["description"]; -impl SharedContentRemoveInviteesType { +const SHARED_FOLDER_CREATE_TYPE_FIELDS: &[&str] = &["description"]; +impl SharedFolderCreateType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -91095,7 +113056,7 @@ impl SharedContentRemoveInviteesType { if optional && nothing { return Ok(None); } - let result = SharedContentRemoveInviteesType { + let result = SharedFolderCreateType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -91111,142 +113072,104 @@ impl SharedContentRemoveInviteesType { } } -impl<'de> ::serde::de::Deserialize<'de> for SharedContentRemoveInviteesType { +impl<'de> ::serde::de::Deserialize<'de> for SharedFolderCreateType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SharedContentRemoveInviteesType; + type Value = SharedFolderCreateType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SharedContentRemoveInviteesType struct") + f.write_str("a SharedFolderCreateType struct") } fn visit_map>(self, map: V) -> Result { - SharedContentRemoveInviteesType::internal_deserialize(map) + SharedFolderCreateType::internal_deserialize(map) } } - deserializer.deserialize_struct("SharedContentRemoveInviteesType", SHARED_CONTENT_REMOVE_INVITEES_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("SharedFolderCreateType", SHARED_FOLDER_CREATE_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SharedContentRemoveInviteesType { +impl ::serde::ser::Serialize for SharedFolderCreateType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SharedContentRemoveInviteesType", 1)?; + let mut s = serializer.serialize_struct("SharedFolderCreateType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Removed link expiration date of shared file/folder. +/// Declined team member's invite to shared folder. #[derive(Debug, Clone, PartialEq, Eq, Default)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SharedContentRemoveLinkExpiryDetails { - /// Previous shared content link expiration date. Might be missing due to historical data gap. - pub previous_value: Option, -} - -impl SharedContentRemoveLinkExpiryDetails { - pub fn with_previous_value(mut self, value: crate::types::common::DropboxTimestamp) -> Self { - self.previous_value = Some(value); - self - } +pub struct SharedFolderDeclineInvitationDetails { } -const SHARED_CONTENT_REMOVE_LINK_EXPIRY_DETAILS_FIELDS: &[&str] = &["previous_value"]; -impl SharedContentRemoveLinkExpiryDetails { +const SHARED_FOLDER_DECLINE_INVITATION_DETAILS_FIELDS: &[&str] = &[]; +impl SharedFolderDeclineInvitationDetails { // no _opt deserializer pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - ) -> Result { - let mut field_previous_value = None; - while let Some(key) = map.next_key::<&str>()? { - match key { - "previous_value" => { - if field_previous_value.is_some() { - return Err(::serde::de::Error::duplicate_field("previous_value")); - } - field_previous_value = Some(map.next_value()?); - } - _ => { - // unknown field allowed and ignored - map.next_value::<::serde_json::Value>()?; - } - } - } - let result = SharedContentRemoveLinkExpiryDetails { - previous_value: field_previous_value.and_then(Option::flatten), - }; - Ok(result) - } - - pub(crate) fn internal_serialize( - &self, - s: &mut S::SerializeStruct, - ) -> Result<(), S::Error> { - use serde::ser::SerializeStruct; - if let Some(val) = &self.previous_value { - s.serialize_field("previous_value", val)?; - } - Ok(()) + ) -> Result { + // ignore any fields found; none are presently recognized + crate::eat_json_fields(&mut map)?; + Ok(SharedFolderDeclineInvitationDetails {}) } } -impl<'de> ::serde::de::Deserialize<'de> for SharedContentRemoveLinkExpiryDetails { +impl<'de> ::serde::de::Deserialize<'de> for SharedFolderDeclineInvitationDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SharedContentRemoveLinkExpiryDetails; + type Value = SharedFolderDeclineInvitationDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SharedContentRemoveLinkExpiryDetails struct") + f.write_str("a SharedFolderDeclineInvitationDetails struct") } fn visit_map>(self, map: V) -> Result { - SharedContentRemoveLinkExpiryDetails::internal_deserialize(map) + SharedFolderDeclineInvitationDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("SharedContentRemoveLinkExpiryDetails", SHARED_CONTENT_REMOVE_LINK_EXPIRY_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("SharedFolderDeclineInvitationDetails", SHARED_FOLDER_DECLINE_INVITATION_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SharedContentRemoveLinkExpiryDetails { +impl ::serde::ser::Serialize for SharedFolderDeclineInvitationDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SharedContentRemoveLinkExpiryDetails", 1)?; - self.internal_serialize::(&mut s)?; - s.end() + serializer.serialize_struct("SharedFolderDeclineInvitationDetails", 0)?.end() } } #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SharedContentRemoveLinkExpiryType { +pub struct SharedFolderDeclineInvitationType { pub description: String, } -impl SharedContentRemoveLinkExpiryType { +impl SharedFolderDeclineInvitationType { pub fn new(description: String) -> Self { - SharedContentRemoveLinkExpiryType { + SharedFolderDeclineInvitationType { description, } } } -const SHARED_CONTENT_REMOVE_LINK_EXPIRY_TYPE_FIELDS: &[&str] = &["description"]; -impl SharedContentRemoveLinkExpiryType { +const SHARED_FOLDER_DECLINE_INVITATION_TYPE_FIELDS: &[&str] = &["description"]; +impl SharedFolderDeclineInvitationType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -91267,7 +113190,7 @@ impl SharedContentRemoveLinkExpiryType { if optional && nothing { return Ok(None); } - let result = SharedContentRemoveLinkExpiryType { + let result = SharedFolderDeclineInvitationType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -91283,104 +113206,168 @@ impl SharedContentRemoveLinkExpiryType { } } -impl<'de> ::serde::de::Deserialize<'de> for SharedContentRemoveLinkExpiryType { +impl<'de> ::serde::de::Deserialize<'de> for SharedFolderDeclineInvitationType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SharedContentRemoveLinkExpiryType; + type Value = SharedFolderDeclineInvitationType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SharedContentRemoveLinkExpiryType struct") + f.write_str("a SharedFolderDeclineInvitationType struct") } fn visit_map>(self, map: V) -> Result { - SharedContentRemoveLinkExpiryType::internal_deserialize(map) + SharedFolderDeclineInvitationType::internal_deserialize(map) } } - deserializer.deserialize_struct("SharedContentRemoveLinkExpiryType", SHARED_CONTENT_REMOVE_LINK_EXPIRY_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("SharedFolderDeclineInvitationType", SHARED_FOLDER_DECLINE_INVITATION_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SharedContentRemoveLinkExpiryType { +impl ::serde::ser::Serialize for SharedFolderDeclineInvitationType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SharedContentRemoveLinkExpiryType", 1)?; + let mut s = serializer.serialize_struct("SharedFolderDeclineInvitationType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Removed link password of shared file/folder. +/// Specifies if a shared folder inherits its members from the parent folder. +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // variants may be added in the future +pub enum SharedFolderMembersInheritancePolicy { + DontInheritMembers, + InheritMembers, + /// Catch-all used for unrecognized values returned from the server. Encountering this value + /// typically indicates that this SDK version is out of date. + Other, +} + +impl<'de> ::serde::de::Deserialize<'de> for SharedFolderMembersInheritancePolicy { + fn deserialize>(deserializer: D) -> Result { + // union deserializer + use serde::de::{self, MapAccess, Visitor}; + struct EnumVisitor; + impl<'de> Visitor<'de> for EnumVisitor { + type Value = SharedFolderMembersInheritancePolicy; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a SharedFolderMembersInheritancePolicy structure") + } + fn visit_map>(self, mut map: V) -> Result { + let tag: &str = match map.next_key()? { + Some(".tag") => map.next_value()?, + _ => return Err(de::Error::missing_field(".tag")) + }; + let value = match tag { + "dont_inherit_members" => SharedFolderMembersInheritancePolicy::DontInheritMembers, + "inherit_members" => SharedFolderMembersInheritancePolicy::InheritMembers, + _ => SharedFolderMembersInheritancePolicy::Other, + }; + crate::eat_json_fields(&mut map)?; + Ok(value) + } + } + const VARIANTS: &[&str] = &["dont_inherit_members", + "inherit_members", + "other"]; + deserializer.deserialize_struct("SharedFolderMembersInheritancePolicy", VARIANTS, EnumVisitor) + } +} + +impl ::serde::ser::Serialize for SharedFolderMembersInheritancePolicy { + fn serialize(&self, serializer: S) -> Result { + // union serializer + use serde::ser::SerializeStruct; + match self { + SharedFolderMembersInheritancePolicy::DontInheritMembers => { + // unit + let mut s = serializer.serialize_struct("SharedFolderMembersInheritancePolicy", 1)?; + s.serialize_field(".tag", "dont_inherit_members")?; + s.end() + } + SharedFolderMembersInheritancePolicy::InheritMembers => { + // unit + let mut s = serializer.serialize_struct("SharedFolderMembersInheritancePolicy", 1)?; + s.serialize_field(".tag", "inherit_members")?; + s.end() + } + SharedFolderMembersInheritancePolicy::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) + } + } +} + +/// Added shared folder to own Dropbox. #[derive(Debug, Clone, PartialEq, Eq, Default)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SharedContentRemoveLinkPasswordDetails { +pub struct SharedFolderMountDetails { } -const SHARED_CONTENT_REMOVE_LINK_PASSWORD_DETAILS_FIELDS: &[&str] = &[]; -impl SharedContentRemoveLinkPasswordDetails { +const SHARED_FOLDER_MOUNT_DETAILS_FIELDS: &[&str] = &[]; +impl SharedFolderMountDetails { // no _opt deserializer pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - ) -> Result { + ) -> Result { // ignore any fields found; none are presently recognized crate::eat_json_fields(&mut map)?; - Ok(SharedContentRemoveLinkPasswordDetails {}) + Ok(SharedFolderMountDetails {}) } } -impl<'de> ::serde::de::Deserialize<'de> for SharedContentRemoveLinkPasswordDetails { +impl<'de> ::serde::de::Deserialize<'de> for SharedFolderMountDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SharedContentRemoveLinkPasswordDetails; + type Value = SharedFolderMountDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SharedContentRemoveLinkPasswordDetails struct") + f.write_str("a SharedFolderMountDetails struct") } fn visit_map>(self, map: V) -> Result { - SharedContentRemoveLinkPasswordDetails::internal_deserialize(map) + SharedFolderMountDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("SharedContentRemoveLinkPasswordDetails", SHARED_CONTENT_REMOVE_LINK_PASSWORD_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("SharedFolderMountDetails", SHARED_FOLDER_MOUNT_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SharedContentRemoveLinkPasswordDetails { +impl ::serde::ser::Serialize for SharedFolderMountDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - serializer.serialize_struct("SharedContentRemoveLinkPasswordDetails", 0)?.end() + serializer.serialize_struct("SharedFolderMountDetails", 0)?.end() } } #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SharedContentRemoveLinkPasswordType { +pub struct SharedFolderMountType { pub description: String, } -impl SharedContentRemoveLinkPasswordType { +impl SharedFolderMountType { pub fn new(description: String) -> Self { - SharedContentRemoveLinkPasswordType { + SharedFolderMountType { description, } } } -const SHARED_CONTENT_REMOVE_LINK_PASSWORD_TYPE_FIELDS: &[&str] = &["description"]; -impl SharedContentRemoveLinkPasswordType { +const SHARED_FOLDER_MOUNT_TYPE_FIELDS: &[&str] = &["description"]; +impl SharedFolderMountType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -91401,7 +113388,7 @@ impl SharedContentRemoveLinkPasswordType { if optional && nothing { return Ok(None); } - let result = SharedContentRemoveLinkPasswordType { + let result = SharedFolderMountType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -91417,66 +113404,108 @@ impl SharedContentRemoveLinkPasswordType { } } -impl<'de> ::serde::de::Deserialize<'de> for SharedContentRemoveLinkPasswordType { +impl<'de> ::serde::de::Deserialize<'de> for SharedFolderMountType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SharedContentRemoveLinkPasswordType; + type Value = SharedFolderMountType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SharedContentRemoveLinkPasswordType struct") + f.write_str("a SharedFolderMountType struct") } fn visit_map>(self, map: V) -> Result { - SharedContentRemoveLinkPasswordType::internal_deserialize(map) + SharedFolderMountType::internal_deserialize(map) } } - deserializer.deserialize_struct("SharedContentRemoveLinkPasswordType", SHARED_CONTENT_REMOVE_LINK_PASSWORD_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("SharedFolderMountType", SHARED_FOLDER_MOUNT_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SharedContentRemoveLinkPasswordType { +impl ::serde::ser::Serialize for SharedFolderMountType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SharedContentRemoveLinkPasswordType", 1)?; + let mut s = serializer.serialize_struct("SharedFolderMountType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Removed user/group from shared file/folder. +/// Changed parent of shared folder. #[derive(Debug, Clone, PartialEq, Eq, Default)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SharedContentRemoveMemberDetails { - /// Shared content access level. - pub shared_content_access_level: Option, +pub struct SharedFolderNestDetails { + /// Previous parent namespace ID. + pub previous_parent_ns_id: Option, + /// New parent namespace ID. + pub new_parent_ns_id: Option, + /// Previous namespace path. + pub previous_ns_path: Option, + /// New namespace path. + pub new_ns_path: Option, } -impl SharedContentRemoveMemberDetails { - pub fn with_shared_content_access_level( - mut self, - value: crate::types::sharing::AccessLevel, - ) -> Self { - self.shared_content_access_level = Some(value); +impl SharedFolderNestDetails { + pub fn with_previous_parent_ns_id(mut self, value: NamespaceId) -> Self { + self.previous_parent_ns_id = Some(value); + self + } + + pub fn with_new_parent_ns_id(mut self, value: NamespaceId) -> Self { + self.new_parent_ns_id = Some(value); + self + } + + pub fn with_previous_ns_path(mut self, value: FilePath) -> Self { + self.previous_ns_path = Some(value); + self + } + + pub fn with_new_ns_path(mut self, value: FilePath) -> Self { + self.new_ns_path = Some(value); self } } -const SHARED_CONTENT_REMOVE_MEMBER_DETAILS_FIELDS: &[&str] = &["shared_content_access_level"]; -impl SharedContentRemoveMemberDetails { +const SHARED_FOLDER_NEST_DETAILS_FIELDS: &[&str] = &["previous_parent_ns_id", + "new_parent_ns_id", + "previous_ns_path", + "new_ns_path"]; +impl SharedFolderNestDetails { // no _opt deserializer pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - ) -> Result { - let mut field_shared_content_access_level = None; + ) -> Result { + let mut field_previous_parent_ns_id = None; + let mut field_new_parent_ns_id = None; + let mut field_previous_ns_path = None; + let mut field_new_ns_path = None; while let Some(key) = map.next_key::<&str>()? { match key { - "shared_content_access_level" => { - if field_shared_content_access_level.is_some() { - return Err(::serde::de::Error::duplicate_field("shared_content_access_level")); + "previous_parent_ns_id" => { + if field_previous_parent_ns_id.is_some() { + return Err(::serde::de::Error::duplicate_field("previous_parent_ns_id")); } - field_shared_content_access_level = Some(map.next_value()?); + field_previous_parent_ns_id = Some(map.next_value()?); + } + "new_parent_ns_id" => { + if field_new_parent_ns_id.is_some() { + return Err(::serde::de::Error::duplicate_field("new_parent_ns_id")); + } + field_new_parent_ns_id = Some(map.next_value()?); + } + "previous_ns_path" => { + if field_previous_ns_path.is_some() { + return Err(::serde::de::Error::duplicate_field("previous_ns_path")); + } + field_previous_ns_path = Some(map.next_value()?); + } + "new_ns_path" => { + if field_new_ns_path.is_some() { + return Err(::serde::de::Error::duplicate_field("new_ns_path")); + } + field_new_ns_path = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -91484,8 +113513,11 @@ impl SharedContentRemoveMemberDetails { } } } - let result = SharedContentRemoveMemberDetails { - shared_content_access_level: field_shared_content_access_level.and_then(Option::flatten), + let result = SharedFolderNestDetails { + previous_parent_ns_id: field_previous_parent_ns_id.and_then(Option::flatten), + new_parent_ns_id: field_new_parent_ns_id.and_then(Option::flatten), + previous_ns_path: field_previous_ns_path.and_then(Option::flatten), + new_ns_path: field_new_ns_path.and_then(Option::flatten), }; Ok(result) } @@ -91495,36 +113527,45 @@ impl SharedContentRemoveMemberDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - if let Some(val) = &self.shared_content_access_level { - s.serialize_field("shared_content_access_level", val)?; + if let Some(val) = &self.previous_parent_ns_id { + s.serialize_field("previous_parent_ns_id", val)?; + } + if let Some(val) = &self.new_parent_ns_id { + s.serialize_field("new_parent_ns_id", val)?; + } + if let Some(val) = &self.previous_ns_path { + s.serialize_field("previous_ns_path", val)?; + } + if let Some(val) = &self.new_ns_path { + s.serialize_field("new_ns_path", val)?; } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for SharedContentRemoveMemberDetails { +impl<'de> ::serde::de::Deserialize<'de> for SharedFolderNestDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SharedContentRemoveMemberDetails; + type Value = SharedFolderNestDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SharedContentRemoveMemberDetails struct") + f.write_str("a SharedFolderNestDetails struct") } fn visit_map>(self, map: V) -> Result { - SharedContentRemoveMemberDetails::internal_deserialize(map) + SharedFolderNestDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("SharedContentRemoveMemberDetails", SHARED_CONTENT_REMOVE_MEMBER_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("SharedFolderNestDetails", SHARED_FOLDER_NEST_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SharedContentRemoveMemberDetails { +impl ::serde::ser::Serialize for SharedFolderNestDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SharedContentRemoveMemberDetails", 1)?; + let mut s = serializer.serialize_struct("SharedFolderNestDetails", 4)?; self.internal_serialize::(&mut s)?; s.end() } @@ -91532,30 +113573,30 @@ impl ::serde::ser::Serialize for SharedContentRemoveMemberDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SharedContentRemoveMemberType { +pub struct SharedFolderNestType { pub description: String, } -impl SharedContentRemoveMemberType { +impl SharedFolderNestType { pub fn new(description: String) -> Self { - SharedContentRemoveMemberType { + SharedFolderNestType { description, } } } -const SHARED_CONTENT_REMOVE_MEMBER_TYPE_FIELDS: &[&str] = &["description"]; -impl SharedContentRemoveMemberType { +const SHARED_FOLDER_NEST_TYPE_FIELDS: &[&str] = &["description"]; +impl SharedFolderNestType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -91576,7 +113617,7 @@ impl SharedContentRemoveMemberType { if optional && nothing { return Ok(None); } - let result = SharedContentRemoveMemberType { + let result = SharedFolderNestType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -91592,63 +113633,88 @@ impl SharedContentRemoveMemberType { } } -impl<'de> ::serde::de::Deserialize<'de> for SharedContentRemoveMemberType { +impl<'de> ::serde::de::Deserialize<'de> for SharedFolderNestType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SharedContentRemoveMemberType; + type Value = SharedFolderNestType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SharedContentRemoveMemberType struct") + f.write_str("a SharedFolderNestType struct") } fn visit_map>(self, map: V) -> Result { - SharedContentRemoveMemberType::internal_deserialize(map) + SharedFolderNestType::internal_deserialize(map) } } - deserializer.deserialize_struct("SharedContentRemoveMemberType", SHARED_CONTENT_REMOVE_MEMBER_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("SharedFolderNestType", SHARED_FOLDER_NEST_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SharedContentRemoveMemberType { +impl ::serde::ser::Serialize for SharedFolderNestType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SharedContentRemoveMemberType", 1)?; + let mut s = serializer.serialize_struct("SharedFolderNestType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Requested access to shared file/folder. -#[derive(Debug, Clone, PartialEq, Eq, Default)] +/// Transferred ownership of shared folder to another member. +#[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SharedContentRequestAccessDetails { - /// Shared content link. - pub shared_content_link: Option, +pub struct SharedFolderTransferOwnershipDetails { + /// The email address of the new shared folder owner. + pub new_owner_email: EmailAddress, + /// The email address of the previous shared folder owner. + pub previous_owner_email: Option, } -impl SharedContentRequestAccessDetails { - pub fn with_shared_content_link(mut self, value: String) -> Self { - self.shared_content_link = Some(value); +impl SharedFolderTransferOwnershipDetails { + pub fn new(new_owner_email: EmailAddress) -> Self { + SharedFolderTransferOwnershipDetails { + new_owner_email, + previous_owner_email: None, + } + } + + pub fn with_previous_owner_email(mut self, value: EmailAddress) -> Self { + self.previous_owner_email = Some(value); self } } -const SHARED_CONTENT_REQUEST_ACCESS_DETAILS_FIELDS: &[&str] = &["shared_content_link"]; -impl SharedContentRequestAccessDetails { - // no _opt deserializer +const SHARED_FOLDER_TRANSFER_OWNERSHIP_DETAILS_FIELDS: &[&str] = &["new_owner_email", + "previous_owner_email"]; +impl SharedFolderTransferOwnershipDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - ) -> Result { - let mut field_shared_content_link = None; + optional: bool, + ) -> Result, V::Error> { + let mut field_new_owner_email = None; + let mut field_previous_owner_email = None; + let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { + nothing = false; match key { - "shared_content_link" => { - if field_shared_content_link.is_some() { - return Err(::serde::de::Error::duplicate_field("shared_content_link")); + "new_owner_email" => { + if field_new_owner_email.is_some() { + return Err(::serde::de::Error::duplicate_field("new_owner_email")); } - field_shared_content_link = Some(map.next_value()?); + field_new_owner_email = Some(map.next_value()?); + } + "previous_owner_email" => { + if field_previous_owner_email.is_some() { + return Err(::serde::de::Error::duplicate_field("previous_owner_email")); + } + field_previous_owner_email = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -91656,10 +113722,14 @@ impl SharedContentRequestAccessDetails { } } } - let result = SharedContentRequestAccessDetails { - shared_content_link: field_shared_content_link.and_then(Option::flatten), + if optional && nothing { + return Ok(None); + } + let result = SharedFolderTransferOwnershipDetails { + new_owner_email: field_new_owner_email.ok_or_else(|| ::serde::de::Error::missing_field("new_owner_email"))?, + previous_owner_email: field_previous_owner_email.and_then(Option::flatten), }; - Ok(result) + Ok(Some(result)) } pub(crate) fn internal_serialize( @@ -91667,36 +113737,37 @@ impl SharedContentRequestAccessDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - if let Some(val) = &self.shared_content_link { - s.serialize_field("shared_content_link", val)?; + s.serialize_field("new_owner_email", &self.new_owner_email)?; + if let Some(val) = &self.previous_owner_email { + s.serialize_field("previous_owner_email", val)?; } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for SharedContentRequestAccessDetails { +impl<'de> ::serde::de::Deserialize<'de> for SharedFolderTransferOwnershipDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SharedContentRequestAccessDetails; + type Value = SharedFolderTransferOwnershipDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SharedContentRequestAccessDetails struct") + f.write_str("a SharedFolderTransferOwnershipDetails struct") } fn visit_map>(self, map: V) -> Result { - SharedContentRequestAccessDetails::internal_deserialize(map) + SharedFolderTransferOwnershipDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("SharedContentRequestAccessDetails", SHARED_CONTENT_REQUEST_ACCESS_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("SharedFolderTransferOwnershipDetails", SHARED_FOLDER_TRANSFER_OWNERSHIP_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SharedContentRequestAccessDetails { +impl ::serde::ser::Serialize for SharedFolderTransferOwnershipDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SharedContentRequestAccessDetails", 1)?; + let mut s = serializer.serialize_struct("SharedFolderTransferOwnershipDetails", 2)?; self.internal_serialize::(&mut s)?; s.end() } @@ -91704,30 +113775,30 @@ impl ::serde::ser::Serialize for SharedContentRequestAccessDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SharedContentRequestAccessType { +pub struct SharedFolderTransferOwnershipType { pub description: String, } -impl SharedContentRequestAccessType { +impl SharedFolderTransferOwnershipType { pub fn new(description: String) -> Self { - SharedContentRequestAccessType { + SharedFolderTransferOwnershipType { description, } } } -const SHARED_CONTENT_REQUEST_ACCESS_TYPE_FIELDS: &[&str] = &["description"]; -impl SharedContentRequestAccessType { +const SHARED_FOLDER_TRANSFER_OWNERSHIP_TYPE_FIELDS: &[&str] = &["description"]; +impl SharedFolderTransferOwnershipType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -91748,7 +113819,7 @@ impl SharedContentRequestAccessType { if optional && nothing { return Ok(None); } - let result = SharedContentRequestAccessType { + let result = SharedFolderTransferOwnershipType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -91764,86 +113835,114 @@ impl SharedContentRequestAccessType { } } -impl<'de> ::serde::de::Deserialize<'de> for SharedContentRequestAccessType { +impl<'de> ::serde::de::Deserialize<'de> for SharedFolderTransferOwnershipType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SharedContentRequestAccessType; + type Value = SharedFolderTransferOwnershipType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SharedContentRequestAccessType struct") + f.write_str("a SharedFolderTransferOwnershipType struct") } fn visit_map>(self, map: V) -> Result { - SharedContentRequestAccessType::internal_deserialize(map) + SharedFolderTransferOwnershipType::internal_deserialize(map) } } - deserializer.deserialize_struct("SharedContentRequestAccessType", SHARED_CONTENT_REQUEST_ACCESS_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("SharedFolderTransferOwnershipType", SHARED_FOLDER_TRANSFER_OWNERSHIP_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SharedContentRequestAccessType { +impl ::serde::ser::Serialize for SharedFolderTransferOwnershipType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SharedContentRequestAccessType", 1)?; + let mut s = serializer.serialize_struct("SharedFolderTransferOwnershipType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Restored shared file/folder invitees. +/// Deleted shared folder from Dropbox. +#[derive(Debug, Clone, PartialEq, Eq, Default)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct SharedFolderUnmountDetails { +} + +const SHARED_FOLDER_UNMOUNT_DETAILS_FIELDS: &[&str] = &[]; +impl SharedFolderUnmountDetails { + // no _opt deserializer + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + ) -> Result { + // ignore any fields found; none are presently recognized + crate::eat_json_fields(&mut map)?; + Ok(SharedFolderUnmountDetails {}) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for SharedFolderUnmountDetails { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = SharedFolderUnmountDetails; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a SharedFolderUnmountDetails struct") + } + fn visit_map>(self, map: V) -> Result { + SharedFolderUnmountDetails::internal_deserialize(map) + } + } + deserializer.deserialize_struct("SharedFolderUnmountDetails", SHARED_FOLDER_UNMOUNT_DETAILS_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for SharedFolderUnmountDetails { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + serializer.serialize_struct("SharedFolderUnmountDetails", 0)?.end() + } +} + #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SharedContentRestoreInviteesDetails { - /// Shared content access level. - pub shared_content_access_level: crate::types::sharing::AccessLevel, - /// A list of invitees. - pub invitees: Vec, +pub struct SharedFolderUnmountType { + pub description: String, } -impl SharedContentRestoreInviteesDetails { - pub fn new( - shared_content_access_level: crate::types::sharing::AccessLevel, - invitees: Vec, - ) -> Self { - SharedContentRestoreInviteesDetails { - shared_content_access_level, - invitees, +impl SharedFolderUnmountType { + pub fn new(description: String) -> Self { + SharedFolderUnmountType { + description, } } } -const SHARED_CONTENT_RESTORE_INVITEES_DETAILS_FIELDS: &[&str] = &["shared_content_access_level", - "invitees"]; -impl SharedContentRestoreInviteesDetails { +const SHARED_FOLDER_UNMOUNT_TYPE_FIELDS: &[&str] = &["description"]; +impl SharedFolderUnmountType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_shared_content_access_level = None; - let mut field_invitees = None; + ) -> Result, V::Error> { + let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "shared_content_access_level" => { - if field_shared_content_access_level.is_some() { - return Err(::serde::de::Error::duplicate_field("shared_content_access_level")); - } - field_shared_content_access_level = Some(map.next_value()?); - } - "invitees" => { - if field_invitees.is_some() { - return Err(::serde::de::Error::duplicate_field("invitees")); + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); } - field_invitees = Some(map.next_value()?); + field_description = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -91854,9 +113953,8 @@ impl SharedContentRestoreInviteesDetails { if optional && nothing { return Ok(None); } - let result = SharedContentRestoreInviteesDetails { - shared_content_access_level: field_shared_content_access_level.ok_or_else(|| ::serde::de::Error::missing_field("shared_content_access_level"))?, - invitees: field_invitees.ok_or_else(|| ::serde::de::Error::missing_field("invitees"))?, + let result = SharedFolderUnmountType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) } @@ -91866,76 +113964,121 @@ impl SharedContentRestoreInviteesDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("shared_content_access_level", &self.shared_content_access_level)?; - s.serialize_field("invitees", &self.invitees)?; + s.serialize_field("description", &self.description)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for SharedContentRestoreInviteesDetails { +impl<'de> ::serde::de::Deserialize<'de> for SharedFolderUnmountType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SharedContentRestoreInviteesDetails; + type Value = SharedFolderUnmountType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SharedContentRestoreInviteesDetails struct") + f.write_str("a SharedFolderUnmountType struct") } fn visit_map>(self, map: V) -> Result { - SharedContentRestoreInviteesDetails::internal_deserialize(map) + SharedFolderUnmountType::internal_deserialize(map) } } - deserializer.deserialize_struct("SharedContentRestoreInviteesDetails", SHARED_CONTENT_RESTORE_INVITEES_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("SharedFolderUnmountType", SHARED_FOLDER_UNMOUNT_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SharedContentRestoreInviteesDetails { +impl ::serde::ser::Serialize for SharedFolderUnmountType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SharedContentRestoreInviteesDetails", 2)?; + let mut s = serializer.serialize_struct("SharedFolderUnmountType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } +/// Created shared folders report. +#[derive(Debug, Clone, PartialEq, Eq, Default)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct SharedFoldersCreateReportDetails { +} + +const SHARED_FOLDERS_CREATE_REPORT_DETAILS_FIELDS: &[&str] = &[]; +impl SharedFoldersCreateReportDetails { + // no _opt deserializer + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + ) -> Result { + // ignore any fields found; none are presently recognized + crate::eat_json_fields(&mut map)?; + Ok(SharedFoldersCreateReportDetails {}) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for SharedFoldersCreateReportDetails { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = SharedFoldersCreateReportDetails; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a SharedFoldersCreateReportDetails struct") + } + fn visit_map>(self, map: V) -> Result { + SharedFoldersCreateReportDetails::internal_deserialize(map) + } + } + deserializer.deserialize_struct("SharedFoldersCreateReportDetails", SHARED_FOLDERS_CREATE_REPORT_DETAILS_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for SharedFoldersCreateReportDetails { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + serializer.serialize_struct("SharedFoldersCreateReportDetails", 0)?.end() + } +} + +/// Couldn't generate shared folders report. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SharedContentRestoreInviteesType { - pub description: String, +pub struct SharedFoldersCreateReportFailedDetails { + /// Failure reason. + pub failure_reason: crate::types::team::TeamReportFailureReason, } -impl SharedContentRestoreInviteesType { - pub fn new(description: String) -> Self { - SharedContentRestoreInviteesType { - description, +impl SharedFoldersCreateReportFailedDetails { + pub fn new(failure_reason: crate::types::team::TeamReportFailureReason) -> Self { + SharedFoldersCreateReportFailedDetails { + failure_reason, } } } -const SHARED_CONTENT_RESTORE_INVITEES_TYPE_FIELDS: &[&str] = &["description"]; -impl SharedContentRestoreInviteesType { +const SHARED_FOLDERS_CREATE_REPORT_FAILED_DETAILS_FIELDS: &[&str] = &["failure_reason"]; +impl SharedFoldersCreateReportFailedDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_description = None; + ) -> Result, V::Error> { + let mut field_failure_reason = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "description" => { - if field_description.is_some() { - return Err(::serde::de::Error::duplicate_field("description")); + "failure_reason" => { + if field_failure_reason.is_some() { + return Err(::serde::de::Error::duplicate_field("failure_reason")); } - field_description = Some(map.next_value()?); + field_failure_reason = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -91946,8 +114089,8 @@ impl SharedContentRestoreInviteesType { if optional && nothing { return Ok(None); } - let result = SharedContentRestoreInviteesType { - description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + let result = SharedFoldersCreateReportFailedDetails { + failure_reason: field_failure_reason.ok_or_else(|| ::serde::de::Error::missing_field("failure_reason"))?, }; Ok(Some(result)) } @@ -91957,77 +114100,75 @@ impl SharedContentRestoreInviteesType { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("description", &self.description)?; + s.serialize_field("failure_reason", &self.failure_reason)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for SharedContentRestoreInviteesType { +impl<'de> ::serde::de::Deserialize<'de> for SharedFoldersCreateReportFailedDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SharedContentRestoreInviteesType; + type Value = SharedFoldersCreateReportFailedDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SharedContentRestoreInviteesType struct") + f.write_str("a SharedFoldersCreateReportFailedDetails struct") } fn visit_map>(self, map: V) -> Result { - SharedContentRestoreInviteesType::internal_deserialize(map) + SharedFoldersCreateReportFailedDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("SharedContentRestoreInviteesType", SHARED_CONTENT_RESTORE_INVITEES_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("SharedFoldersCreateReportFailedDetails", SHARED_FOLDERS_CREATE_REPORT_FAILED_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SharedContentRestoreInviteesType { +impl ::serde::ser::Serialize for SharedFoldersCreateReportFailedDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SharedContentRestoreInviteesType", 1)?; + let mut s = serializer.serialize_struct("SharedFoldersCreateReportFailedDetails", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Restored users and/or groups to membership of shared file/folder. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SharedContentRestoreMemberDetails { - /// Shared content access level. - pub shared_content_access_level: crate::types::sharing::AccessLevel, +pub struct SharedFoldersCreateReportFailedType { + pub description: String, } -impl SharedContentRestoreMemberDetails { - pub fn new(shared_content_access_level: crate::types::sharing::AccessLevel) -> Self { - SharedContentRestoreMemberDetails { - shared_content_access_level, +impl SharedFoldersCreateReportFailedType { + pub fn new(description: String) -> Self { + SharedFoldersCreateReportFailedType { + description, } } } -const SHARED_CONTENT_RESTORE_MEMBER_DETAILS_FIELDS: &[&str] = &["shared_content_access_level"]; -impl SharedContentRestoreMemberDetails { +const SHARED_FOLDERS_CREATE_REPORT_FAILED_TYPE_FIELDS: &[&str] = &["description"]; +impl SharedFoldersCreateReportFailedType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_shared_content_access_level = None; + ) -> Result, V::Error> { + let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "shared_content_access_level" => { - if field_shared_content_access_level.is_some() { - return Err(::serde::de::Error::duplicate_field("shared_content_access_level")); + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); } - field_shared_content_access_level = Some(map.next_value()?); + field_description = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -92038,8 +114179,8 @@ impl SharedContentRestoreMemberDetails { if optional && nothing { return Ok(None); } - let result = SharedContentRestoreMemberDetails { - shared_content_access_level: field_shared_content_access_level.ok_or_else(|| ::serde::de::Error::missing_field("shared_content_access_level"))?, + let result = SharedFoldersCreateReportFailedType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) } @@ -92049,34 +114190,34 @@ impl SharedContentRestoreMemberDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("shared_content_access_level", &self.shared_content_access_level)?; + s.serialize_field("description", &self.description)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for SharedContentRestoreMemberDetails { +impl<'de> ::serde::de::Deserialize<'de> for SharedFoldersCreateReportFailedType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SharedContentRestoreMemberDetails; + type Value = SharedFoldersCreateReportFailedType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SharedContentRestoreMemberDetails struct") + f.write_str("a SharedFoldersCreateReportFailedType struct") } fn visit_map>(self, map: V) -> Result { - SharedContentRestoreMemberDetails::internal_deserialize(map) + SharedFoldersCreateReportFailedType::internal_deserialize(map) } } - deserializer.deserialize_struct("SharedContentRestoreMemberDetails", SHARED_CONTENT_RESTORE_MEMBER_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("SharedFoldersCreateReportFailedType", SHARED_FOLDERS_CREATE_REPORT_FAILED_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SharedContentRestoreMemberDetails { +impl ::serde::ser::Serialize for SharedFoldersCreateReportFailedType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SharedContentRestoreMemberDetails", 1)?; + let mut s = serializer.serialize_struct("SharedFoldersCreateReportFailedType", 1)?; self.internal_serialize::(&mut s)?; s.end() } @@ -92084,30 +114225,30 @@ impl ::serde::ser::Serialize for SharedContentRestoreMemberDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SharedContentRestoreMemberType { +pub struct SharedFoldersCreateReportType { pub description: String, } -impl SharedContentRestoreMemberType { +impl SharedFoldersCreateReportType { pub fn new(description: String) -> Self { - SharedContentRestoreMemberType { + SharedFoldersCreateReportType { description, } } } -const SHARED_CONTENT_RESTORE_MEMBER_TYPE_FIELDS: &[&str] = &["description"]; -impl SharedContentRestoreMemberType { +const SHARED_FOLDERS_CREATE_REPORT_TYPE_FIELDS: &[&str] = &["description"]; +impl SharedFoldersCreateReportType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -92128,7 +114269,7 @@ impl SharedContentRestoreMemberType { if optional && nothing { return Ok(None); } - let result = SharedContentRestoreMemberType { + let result = SharedFoldersCreateReportType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -92144,104 +114285,245 @@ impl SharedContentRestoreMemberType { } } -impl<'de> ::serde::de::Deserialize<'de> for SharedContentRestoreMemberType { +impl<'de> ::serde::de::Deserialize<'de> for SharedFoldersCreateReportType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SharedContentRestoreMemberType; + type Value = SharedFoldersCreateReportType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SharedContentRestoreMemberType struct") + f.write_str("a SharedFoldersCreateReportType struct") } fn visit_map>(self, map: V) -> Result { - SharedContentRestoreMemberType::internal_deserialize(map) + SharedFoldersCreateReportType::internal_deserialize(map) } } - deserializer.deserialize_struct("SharedContentRestoreMemberType", SHARED_CONTENT_RESTORE_MEMBER_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("SharedFoldersCreateReportType", SHARED_FOLDERS_CREATE_REPORT_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SharedContentRestoreMemberType { +impl ::serde::ser::Serialize for SharedFoldersCreateReportType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SharedContentRestoreMemberType", 1)?; + let mut s = serializer.serialize_struct("SharedFoldersCreateReportType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Unshared file/folder by clearing membership. -#[derive(Debug, Clone, PartialEq, Eq, Default)] +/// Shared link access level. +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // variants may be added in the future +pub enum SharedLinkAccessLevel { + None, + Reader, + Writer, + /// Catch-all used for unrecognized values returned from the server. Encountering this value + /// typically indicates that this SDK version is out of date. + Other, +} + +impl<'de> ::serde::de::Deserialize<'de> for SharedLinkAccessLevel { + fn deserialize>(deserializer: D) -> Result { + // union deserializer + use serde::de::{self, MapAccess, Visitor}; + struct EnumVisitor; + impl<'de> Visitor<'de> for EnumVisitor { + type Value = SharedLinkAccessLevel; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a SharedLinkAccessLevel structure") + } + fn visit_map>(self, mut map: V) -> Result { + let tag: &str = match map.next_key()? { + Some(".tag") => map.next_value()?, + _ => return Err(de::Error::missing_field(".tag")) + }; + let value = match tag { + "none" => SharedLinkAccessLevel::None, + "reader" => SharedLinkAccessLevel::Reader, + "writer" => SharedLinkAccessLevel::Writer, + _ => SharedLinkAccessLevel::Other, + }; + crate::eat_json_fields(&mut map)?; + Ok(value) + } + } + const VARIANTS: &[&str] = &["none", + "reader", + "writer", + "other"]; + deserializer.deserialize_struct("SharedLinkAccessLevel", VARIANTS, EnumVisitor) + } +} + +impl ::serde::ser::Serialize for SharedLinkAccessLevel { + fn serialize(&self, serializer: S) -> Result { + // union serializer + use serde::ser::SerializeStruct; + match self { + SharedLinkAccessLevel::None => { + // unit + let mut s = serializer.serialize_struct("SharedLinkAccessLevel", 1)?; + s.serialize_field(".tag", "none")?; + s.end() + } + SharedLinkAccessLevel::Reader => { + // unit + let mut s = serializer.serialize_struct("SharedLinkAccessLevel", 1)?; + s.serialize_field(".tag", "reader")?; + s.end() + } + SharedLinkAccessLevel::Writer => { + // unit + let mut s = serializer.serialize_struct("SharedLinkAccessLevel", 1)?; + s.serialize_field(".tag", "writer")?; + s.end() + } + SharedLinkAccessLevel::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) + } + } +} + +/// Added shared link expiration date. +#[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SharedContentUnshareDetails { +pub struct SharedLinkAddExpiryDetails { + /// New shared link expiration date. + pub new_value: crate::types::common::DropboxTimestamp, + /// Indicates whether this was a consolidation action by system. + pub is_consolidation_action: Option, } -const SHARED_CONTENT_UNSHARE_DETAILS_FIELDS: &[&str] = &[]; -impl SharedContentUnshareDetails { - // no _opt deserializer +impl SharedLinkAddExpiryDetails { + pub fn new(new_value: crate::types::common::DropboxTimestamp) -> Self { + SharedLinkAddExpiryDetails { + new_value, + is_consolidation_action: None, + } + } + + pub fn with_is_consolidation_action(mut self, value: bool) -> Self { + self.is_consolidation_action = Some(value); + self + } +} + +const SHARED_LINK_ADD_EXPIRY_DETAILS_FIELDS: &[&str] = &["new_value", + "is_consolidation_action"]; +impl SharedLinkAddExpiryDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - ) -> Result { - // ignore any fields found; none are presently recognized - crate::eat_json_fields(&mut map)?; - Ok(SharedContentUnshareDetails {}) + optional: bool, + ) -> Result, V::Error> { + let mut field_new_value = None; + let mut field_is_consolidation_action = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "new_value" => { + if field_new_value.is_some() { + return Err(::serde::de::Error::duplicate_field("new_value")); + } + field_new_value = Some(map.next_value()?); + } + "is_consolidation_action" => { + if field_is_consolidation_action.is_some() { + return Err(::serde::de::Error::duplicate_field("is_consolidation_action")); + } + field_is_consolidation_action = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } + } + } + if optional && nothing { + return Ok(None); + } + let result = SharedLinkAddExpiryDetails { + new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, + is_consolidation_action: field_is_consolidation_action.and_then(Option::flatten), + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("new_value", &self.new_value)?; + if let Some(val) = &self.is_consolidation_action { + s.serialize_field("is_consolidation_action", val)?; + } + Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for SharedContentUnshareDetails { +impl<'de> ::serde::de::Deserialize<'de> for SharedLinkAddExpiryDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SharedContentUnshareDetails; + type Value = SharedLinkAddExpiryDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SharedContentUnshareDetails struct") + f.write_str("a SharedLinkAddExpiryDetails struct") } fn visit_map>(self, map: V) -> Result { - SharedContentUnshareDetails::internal_deserialize(map) + SharedLinkAddExpiryDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("SharedContentUnshareDetails", SHARED_CONTENT_UNSHARE_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("SharedLinkAddExpiryDetails", SHARED_LINK_ADD_EXPIRY_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SharedContentUnshareDetails { +impl ::serde::ser::Serialize for SharedLinkAddExpiryDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - serializer.serialize_struct("SharedContentUnshareDetails", 0)?.end() + let mut s = serializer.serialize_struct("SharedLinkAddExpiryDetails", 2)?; + self.internal_serialize::(&mut s)?; + s.end() } } #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SharedContentUnshareType { +pub struct SharedLinkAddExpiryType { pub description: String, } -impl SharedContentUnshareType { +impl SharedLinkAddExpiryType { pub fn new(description: String) -> Self { - SharedContentUnshareType { + SharedLinkAddExpiryType { description, } } } -const SHARED_CONTENT_UNSHARE_TYPE_FIELDS: &[&str] = &["description"]; -impl SharedContentUnshareType { +const SHARED_LINK_ADD_EXPIRY_TYPE_FIELDS: &[&str] = &["description"]; +impl SharedLinkAddExpiryType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -92262,7 +114544,7 @@ impl SharedContentUnshareType { if optional && nothing { return Ok(None); } - let result = SharedContentUnshareType { + let result = SharedLinkAddExpiryType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -92278,102 +114560,93 @@ impl SharedContentUnshareType { } } -impl<'de> ::serde::de::Deserialize<'de> for SharedContentUnshareType { +impl<'de> ::serde::de::Deserialize<'de> for SharedLinkAddExpiryType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SharedContentUnshareType; + type Value = SharedLinkAddExpiryType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SharedContentUnshareType struct") + f.write_str("a SharedLinkAddExpiryType struct") } fn visit_map>(self, map: V) -> Result { - SharedContentUnshareType::internal_deserialize(map) + SharedLinkAddExpiryType::internal_deserialize(map) } } - deserializer.deserialize_struct("SharedContentUnshareType", SHARED_CONTENT_UNSHARE_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("SharedLinkAddExpiryType", SHARED_LINK_ADD_EXPIRY_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SharedContentUnshareType { +impl ::serde::ser::Serialize for SharedLinkAddExpiryType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SharedContentUnshareType", 1)?; + let mut s = serializer.serialize_struct("SharedLinkAddExpiryType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Previewed shared file/folder. -#[derive(Debug, Clone, PartialEq, Eq)] +/// Changed shared link expiration date. +#[derive(Debug, Clone, PartialEq, Eq, Default)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SharedContentViewDetails { - /// Shared content link. - pub shared_content_link: String, - /// Shared content access level. - pub shared_content_access_level: crate::types::sharing::AccessLevel, - /// The shared content owner. - pub shared_content_owner: Option, +pub struct SharedLinkChangeExpiryDetails { + /// New shared link expiration date. Might be missing due to historical data gap. + pub new_value: Option, + /// Previous shared link expiration date. Might be missing due to historical data gap. + pub previous_value: Option, + /// Indicates whether this was a consolidation action by system. + pub is_consolidation_action: Option, } -impl SharedContentViewDetails { - pub fn new( - shared_content_link: String, - shared_content_access_level: crate::types::sharing::AccessLevel, - ) -> Self { - SharedContentViewDetails { - shared_content_link, - shared_content_access_level, - shared_content_owner: None, - } +impl SharedLinkChangeExpiryDetails { + pub fn with_new_value(mut self, value: crate::types::common::DropboxTimestamp) -> Self { + self.new_value = Some(value); + self } - pub fn with_shared_content_owner(mut self, value: UserLogInfo) -> Self { - self.shared_content_owner = Some(value); + pub fn with_previous_value(mut self, value: crate::types::common::DropboxTimestamp) -> Self { + self.previous_value = Some(value); self } -} -const SHARED_CONTENT_VIEW_DETAILS_FIELDS: &[&str] = &["shared_content_link", - "shared_content_access_level", - "shared_content_owner"]; -impl SharedContentViewDetails { - pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( - map: V, - ) -> Result { - Self::internal_deserialize_opt(map, false).map(Option::unwrap) + pub fn with_is_consolidation_action(mut self, value: bool) -> Self { + self.is_consolidation_action = Some(value); + self } +} - pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( +const SHARED_LINK_CHANGE_EXPIRY_DETAILS_FIELDS: &[&str] = &["new_value", + "previous_value", + "is_consolidation_action"]; +impl SharedLinkChangeExpiryDetails { + // no _opt deserializer + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - optional: bool, - ) -> Result, V::Error> { - let mut field_shared_content_link = None; - let mut field_shared_content_access_level = None; - let mut field_shared_content_owner = None; - let mut nothing = true; + ) -> Result { + let mut field_new_value = None; + let mut field_previous_value = None; + let mut field_is_consolidation_action = None; while let Some(key) = map.next_key::<&str>()? { - nothing = false; match key { - "shared_content_link" => { - if field_shared_content_link.is_some() { - return Err(::serde::de::Error::duplicate_field("shared_content_link")); + "new_value" => { + if field_new_value.is_some() { + return Err(::serde::de::Error::duplicate_field("new_value")); } - field_shared_content_link = Some(map.next_value()?); + field_new_value = Some(map.next_value()?); } - "shared_content_access_level" => { - if field_shared_content_access_level.is_some() { - return Err(::serde::de::Error::duplicate_field("shared_content_access_level")); + "previous_value" => { + if field_previous_value.is_some() { + return Err(::serde::de::Error::duplicate_field("previous_value")); } - field_shared_content_access_level = Some(map.next_value()?); + field_previous_value = Some(map.next_value()?); } - "shared_content_owner" => { - if field_shared_content_owner.is_some() { - return Err(::serde::de::Error::duplicate_field("shared_content_owner")); + "is_consolidation_action" => { + if field_is_consolidation_action.is_some() { + return Err(::serde::de::Error::duplicate_field("is_consolidation_action")); } - field_shared_content_owner = Some(map.next_value()?); + field_is_consolidation_action = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -92381,15 +114654,12 @@ impl SharedContentViewDetails { } } } - if optional && nothing { - return Ok(None); - } - let result = SharedContentViewDetails { - shared_content_link: field_shared_content_link.ok_or_else(|| ::serde::de::Error::missing_field("shared_content_link"))?, - shared_content_access_level: field_shared_content_access_level.ok_or_else(|| ::serde::de::Error::missing_field("shared_content_access_level"))?, - shared_content_owner: field_shared_content_owner.and_then(Option::flatten), + let result = SharedLinkChangeExpiryDetails { + new_value: field_new_value.and_then(Option::flatten), + previous_value: field_previous_value.and_then(Option::flatten), + is_consolidation_action: field_is_consolidation_action.and_then(Option::flatten), }; - Ok(Some(result)) + Ok(result) } pub(crate) fn internal_serialize( @@ -92397,38 +114667,42 @@ impl SharedContentViewDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("shared_content_link", &self.shared_content_link)?; - s.serialize_field("shared_content_access_level", &self.shared_content_access_level)?; - if let Some(val) = &self.shared_content_owner { - s.serialize_field("shared_content_owner", val)?; + if let Some(val) = &self.new_value { + s.serialize_field("new_value", val)?; + } + if let Some(val) = &self.previous_value { + s.serialize_field("previous_value", val)?; + } + if let Some(val) = &self.is_consolidation_action { + s.serialize_field("is_consolidation_action", val)?; } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for SharedContentViewDetails { +impl<'de> ::serde::de::Deserialize<'de> for SharedLinkChangeExpiryDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SharedContentViewDetails; + type Value = SharedLinkChangeExpiryDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SharedContentViewDetails struct") + f.write_str("a SharedLinkChangeExpiryDetails struct") } fn visit_map>(self, map: V) -> Result { - SharedContentViewDetails::internal_deserialize(map) + SharedLinkChangeExpiryDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("SharedContentViewDetails", SHARED_CONTENT_VIEW_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("SharedLinkChangeExpiryDetails", SHARED_LINK_CHANGE_EXPIRY_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SharedContentViewDetails { +impl ::serde::ser::Serialize for SharedLinkChangeExpiryDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SharedContentViewDetails", 3)?; + let mut s = serializer.serialize_struct("SharedLinkChangeExpiryDetails", 3)?; self.internal_serialize::(&mut s)?; s.end() } @@ -92436,30 +114710,30 @@ impl ::serde::ser::Serialize for SharedContentViewDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SharedContentViewType { +pub struct SharedLinkChangeExpiryType { pub description: String, } -impl SharedContentViewType { +impl SharedLinkChangeExpiryType { pub fn new(description: String) -> Self { - SharedContentViewType { + SharedLinkChangeExpiryType { description, } } } -const SHARED_CONTENT_VIEW_TYPE_FIELDS: &[&str] = &["description"]; -impl SharedContentViewType { +const SHARED_LINK_CHANGE_EXPIRY_TYPE_FIELDS: &[&str] = &["description"]; +impl SharedLinkChangeExpiryType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -92480,7 +114754,7 @@ impl SharedContentViewType { if optional && nothing { return Ok(None); } - let result = SharedContentViewType { + let result = SharedLinkChangeExpiryType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -92496,73 +114770,83 @@ impl SharedContentViewType { } } -impl<'de> ::serde::de::Deserialize<'de> for SharedContentViewType { +impl<'de> ::serde::de::Deserialize<'de> for SharedLinkChangeExpiryType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SharedContentViewType; + type Value = SharedLinkChangeExpiryType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SharedContentViewType struct") + f.write_str("a SharedLinkChangeExpiryType struct") } fn visit_map>(self, map: V) -> Result { - SharedContentViewType::internal_deserialize(map) + SharedLinkChangeExpiryType::internal_deserialize(map) } } - deserializer.deserialize_struct("SharedContentViewType", SHARED_CONTENT_VIEW_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("SharedLinkChangeExpiryType", SHARED_LINK_CHANGE_EXPIRY_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SharedContentViewType { +impl ::serde::ser::Serialize for SharedLinkChangeExpiryType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SharedContentViewType", 1)?; + let mut s = serializer.serialize_struct("SharedLinkChangeExpiryType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Changed who can access shared folder via link. +/// Changed visibility of shared link. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SharedFolderChangeLinkPolicyDetails { - /// New shared folder link policy. - pub new_value: crate::types::sharing::SharedLinkPolicy, - /// Previous shared folder link policy. Might be missing due to historical data gap. - pub previous_value: Option, +pub struct SharedLinkChangeVisibilityDetails { + /// New shared link visibility. + pub new_value: SharedLinkVisibility, + /// Previous shared link visibility. Might be missing due to historical data gap. + pub previous_value: Option, + /// Indicates whether this was a consolidation action by system. + pub is_consolidation_action: Option, } -impl SharedFolderChangeLinkPolicyDetails { - pub fn new(new_value: crate::types::sharing::SharedLinkPolicy) -> Self { - SharedFolderChangeLinkPolicyDetails { +impl SharedLinkChangeVisibilityDetails { + pub fn new(new_value: SharedLinkVisibility) -> Self { + SharedLinkChangeVisibilityDetails { new_value, previous_value: None, + is_consolidation_action: None, } } - pub fn with_previous_value(mut self, value: crate::types::sharing::SharedLinkPolicy) -> Self { + pub fn with_previous_value(mut self, value: SharedLinkVisibility) -> Self { self.previous_value = Some(value); self } + + pub fn with_is_consolidation_action(mut self, value: bool) -> Self { + self.is_consolidation_action = Some(value); + self + } } -const SHARED_FOLDER_CHANGE_LINK_POLICY_DETAILS_FIELDS: &[&str] = &["new_value", - "previous_value"]; -impl SharedFolderChangeLinkPolicyDetails { +const SHARED_LINK_CHANGE_VISIBILITY_DETAILS_FIELDS: &[&str] = &["new_value", + "previous_value", + "is_consolidation_action"]; +impl SharedLinkChangeVisibilityDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_new_value = None; let mut field_previous_value = None; + let mut field_is_consolidation_action = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; @@ -92579,6 +114863,12 @@ impl SharedFolderChangeLinkPolicyDetails { } field_previous_value = Some(map.next_value()?); } + "is_consolidation_action" => { + if field_is_consolidation_action.is_some() { + return Err(::serde::de::Error::duplicate_field("is_consolidation_action")); + } + field_is_consolidation_action = Some(map.next_value()?); + } _ => { // unknown field allowed and ignored map.next_value::<::serde_json::Value>()?; @@ -92588,9 +114878,10 @@ impl SharedFolderChangeLinkPolicyDetails { if optional && nothing { return Ok(None); } - let result = SharedFolderChangeLinkPolicyDetails { + let result = SharedLinkChangeVisibilityDetails { new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, previous_value: field_previous_value.and_then(Option::flatten), + is_consolidation_action: field_is_consolidation_action.and_then(Option::flatten), }; Ok(Some(result)) } @@ -92604,33 +114895,36 @@ impl SharedFolderChangeLinkPolicyDetails { if let Some(val) = &self.previous_value { s.serialize_field("previous_value", val)?; } + if let Some(val) = &self.is_consolidation_action { + s.serialize_field("is_consolidation_action", val)?; + } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for SharedFolderChangeLinkPolicyDetails { +impl<'de> ::serde::de::Deserialize<'de> for SharedLinkChangeVisibilityDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SharedFolderChangeLinkPolicyDetails; + type Value = SharedLinkChangeVisibilityDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SharedFolderChangeLinkPolicyDetails struct") + f.write_str("a SharedLinkChangeVisibilityDetails struct") } fn visit_map>(self, map: V) -> Result { - SharedFolderChangeLinkPolicyDetails::internal_deserialize(map) + SharedLinkChangeVisibilityDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("SharedFolderChangeLinkPolicyDetails", SHARED_FOLDER_CHANGE_LINK_POLICY_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("SharedLinkChangeVisibilityDetails", SHARED_LINK_CHANGE_VISIBILITY_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SharedFolderChangeLinkPolicyDetails { +impl ::serde::ser::Serialize for SharedLinkChangeVisibilityDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SharedFolderChangeLinkPolicyDetails", 2)?; + let mut s = serializer.serialize_struct("SharedLinkChangeVisibilityDetails", 3)?; self.internal_serialize::(&mut s)?; s.end() } @@ -92638,30 +114932,30 @@ impl ::serde::ser::Serialize for SharedFolderChangeLinkPolicyDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SharedFolderChangeLinkPolicyType { +pub struct SharedLinkChangeVisibilityType { pub description: String, } -impl SharedFolderChangeLinkPolicyType { +impl SharedLinkChangeVisibilityType { pub fn new(description: String) -> Self { - SharedFolderChangeLinkPolicyType { + SharedLinkChangeVisibilityType { description, } } } -const SHARED_FOLDER_CHANGE_LINK_POLICY_TYPE_FIELDS: &[&str] = &["description"]; -impl SharedFolderChangeLinkPolicyType { +const SHARED_LINK_CHANGE_VISIBILITY_TYPE_FIELDS: &[&str] = &["description"]; +impl SharedLinkChangeVisibilityType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -92682,7 +114976,7 @@ impl SharedFolderChangeLinkPolicyType { if optional && nothing { return Ok(None); } - let result = SharedFolderChangeLinkPolicyType { + let result = SharedLinkChangeVisibilityType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -92698,88 +114992,63 @@ impl SharedFolderChangeLinkPolicyType { } } -impl<'de> ::serde::de::Deserialize<'de> for SharedFolderChangeLinkPolicyType { +impl<'de> ::serde::de::Deserialize<'de> for SharedLinkChangeVisibilityType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SharedFolderChangeLinkPolicyType; + type Value = SharedLinkChangeVisibilityType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SharedFolderChangeLinkPolicyType struct") + f.write_str("a SharedLinkChangeVisibilityType struct") } fn visit_map>(self, map: V) -> Result { - SharedFolderChangeLinkPolicyType::internal_deserialize(map) + SharedLinkChangeVisibilityType::internal_deserialize(map) } } - deserializer.deserialize_struct("SharedFolderChangeLinkPolicyType", SHARED_FOLDER_CHANGE_LINK_POLICY_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("SharedLinkChangeVisibilityType", SHARED_LINK_CHANGE_VISIBILITY_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SharedFolderChangeLinkPolicyType { +impl ::serde::ser::Serialize for SharedLinkChangeVisibilityType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SharedFolderChangeLinkPolicyType", 1)?; + let mut s = serializer.serialize_struct("SharedLinkChangeVisibilityType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Changed whether shared folder inherits members from parent folder. -#[derive(Debug, Clone, PartialEq, Eq)] +/// Added file/folder to Dropbox from shared link. +#[derive(Debug, Clone, PartialEq, Eq, Default)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SharedFolderChangeMembersInheritancePolicyDetails { - /// New member inheritance policy. - pub new_value: SharedFolderMembersInheritancePolicy, - /// Previous member inheritance policy. Might be missing due to historical data gap. - pub previous_value: Option, +pub struct SharedLinkCopyDetails { + /// Shared link owner details. Might be missing due to historical data gap. + pub shared_link_owner: Option, } -impl SharedFolderChangeMembersInheritancePolicyDetails { - pub fn new(new_value: SharedFolderMembersInheritancePolicy) -> Self { - SharedFolderChangeMembersInheritancePolicyDetails { - new_value, - previous_value: None, - } - } - - pub fn with_previous_value(mut self, value: SharedFolderMembersInheritancePolicy) -> Self { - self.previous_value = Some(value); +impl SharedLinkCopyDetails { + pub fn with_shared_link_owner(mut self, value: UserLogInfo) -> Self { + self.shared_link_owner = Some(value); self } } -const SHARED_FOLDER_CHANGE_MEMBERS_INHERITANCE_POLICY_DETAILS_FIELDS: &[&str] = &["new_value", - "previous_value"]; -impl SharedFolderChangeMembersInheritancePolicyDetails { +const SHARED_LINK_COPY_DETAILS_FIELDS: &[&str] = &["shared_link_owner"]; +impl SharedLinkCopyDetails { + // no _opt deserializer pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( - map: V, - ) -> Result { - Self::internal_deserialize_opt(map, false).map(Option::unwrap) - } - - pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - optional: bool, - ) -> Result, V::Error> { - let mut field_new_value = None; - let mut field_previous_value = None; - let mut nothing = true; + ) -> Result { + let mut field_shared_link_owner = None; while let Some(key) = map.next_key::<&str>()? { - nothing = false; match key { - "new_value" => { - if field_new_value.is_some() { - return Err(::serde::de::Error::duplicate_field("new_value")); - } - field_new_value = Some(map.next_value()?); - } - "previous_value" => { - if field_previous_value.is_some() { - return Err(::serde::de::Error::duplicate_field("previous_value")); + "shared_link_owner" => { + if field_shared_link_owner.is_some() { + return Err(::serde::de::Error::duplicate_field("shared_link_owner")); } - field_previous_value = Some(map.next_value()?); + field_shared_link_owner = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -92787,14 +115056,10 @@ impl SharedFolderChangeMembersInheritancePolicyDetails { } } } - if optional && nothing { - return Ok(None); - } - let result = SharedFolderChangeMembersInheritancePolicyDetails { - new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, - previous_value: field_previous_value.and_then(Option::flatten), + let result = SharedLinkCopyDetails { + shared_link_owner: field_shared_link_owner.and_then(Option::flatten), }; - Ok(Some(result)) + Ok(result) } pub(crate) fn internal_serialize( @@ -92802,37 +115067,36 @@ impl SharedFolderChangeMembersInheritancePolicyDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("new_value", &self.new_value)?; - if let Some(val) = &self.previous_value { - s.serialize_field("previous_value", val)?; + if let Some(val) = &self.shared_link_owner { + s.serialize_field("shared_link_owner", val)?; } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for SharedFolderChangeMembersInheritancePolicyDetails { +impl<'de> ::serde::de::Deserialize<'de> for SharedLinkCopyDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SharedFolderChangeMembersInheritancePolicyDetails; + type Value = SharedLinkCopyDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SharedFolderChangeMembersInheritancePolicyDetails struct") + f.write_str("a SharedLinkCopyDetails struct") } fn visit_map>(self, map: V) -> Result { - SharedFolderChangeMembersInheritancePolicyDetails::internal_deserialize(map) + SharedLinkCopyDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("SharedFolderChangeMembersInheritancePolicyDetails", SHARED_FOLDER_CHANGE_MEMBERS_INHERITANCE_POLICY_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("SharedLinkCopyDetails", SHARED_LINK_COPY_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SharedFolderChangeMembersInheritancePolicyDetails { +impl ::serde::ser::Serialize for SharedLinkCopyDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SharedFolderChangeMembersInheritancePolicyDetails", 2)?; + let mut s = serializer.serialize_struct("SharedLinkCopyDetails", 1)?; self.internal_serialize::(&mut s)?; s.end() } @@ -92840,30 +115104,30 @@ impl ::serde::ser::Serialize for SharedFolderChangeMembersInheritancePolicyDetai #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SharedFolderChangeMembersInheritancePolicyType { +pub struct SharedLinkCopyType { pub description: String, } -impl SharedFolderChangeMembersInheritancePolicyType { +impl SharedLinkCopyType { pub fn new(description: String) -> Self { - SharedFolderChangeMembersInheritancePolicyType { + SharedLinkCopyType { description, } } } -const SHARED_FOLDER_CHANGE_MEMBERS_INHERITANCE_POLICY_TYPE_FIELDS: &[&str] = &["description"]; -impl SharedFolderChangeMembersInheritancePolicyType { +const SHARED_LINK_COPY_TYPE_FIELDS: &[&str] = &["description"]; +impl SharedLinkCopyType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -92884,7 +115148,7 @@ impl SharedFolderChangeMembersInheritancePolicyType { if optional && nothing { return Ok(None); } - let result = SharedFolderChangeMembersInheritancePolicyType { + let result = SharedLinkCopyType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -92900,88 +115164,63 @@ impl SharedFolderChangeMembersInheritancePolicyType { } } -impl<'de> ::serde::de::Deserialize<'de> for SharedFolderChangeMembersInheritancePolicyType { +impl<'de> ::serde::de::Deserialize<'de> for SharedLinkCopyType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SharedFolderChangeMembersInheritancePolicyType; + type Value = SharedLinkCopyType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SharedFolderChangeMembersInheritancePolicyType struct") + f.write_str("a SharedLinkCopyType struct") } fn visit_map>(self, map: V) -> Result { - SharedFolderChangeMembersInheritancePolicyType::internal_deserialize(map) + SharedLinkCopyType::internal_deserialize(map) } } - deserializer.deserialize_struct("SharedFolderChangeMembersInheritancePolicyType", SHARED_FOLDER_CHANGE_MEMBERS_INHERITANCE_POLICY_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("SharedLinkCopyType", SHARED_LINK_COPY_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SharedFolderChangeMembersInheritancePolicyType { +impl ::serde::ser::Serialize for SharedLinkCopyType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SharedFolderChangeMembersInheritancePolicyType", 1)?; + let mut s = serializer.serialize_struct("SharedLinkCopyType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Changed who can add/remove members of shared folder. -#[derive(Debug, Clone, PartialEq, Eq)] +/// Created shared link. +#[derive(Debug, Clone, PartialEq, Eq, Default)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SharedFolderChangeMembersManagementPolicyDetails { - /// New members management policy. - pub new_value: crate::types::sharing::AclUpdatePolicy, - /// Previous members management policy. Might be missing due to historical data gap. - pub previous_value: Option, +pub struct SharedLinkCreateDetails { + /// Defines who can access the shared link. Might be missing due to historical data gap. + pub shared_link_access_level: Option, } -impl SharedFolderChangeMembersManagementPolicyDetails { - pub fn new(new_value: crate::types::sharing::AclUpdatePolicy) -> Self { - SharedFolderChangeMembersManagementPolicyDetails { - new_value, - previous_value: None, - } - } - - pub fn with_previous_value(mut self, value: crate::types::sharing::AclUpdatePolicy) -> Self { - self.previous_value = Some(value); +impl SharedLinkCreateDetails { + pub fn with_shared_link_access_level(mut self, value: SharedLinkAccessLevel) -> Self { + self.shared_link_access_level = Some(value); self } } -const SHARED_FOLDER_CHANGE_MEMBERS_MANAGEMENT_POLICY_DETAILS_FIELDS: &[&str] = &["new_value", - "previous_value"]; -impl SharedFolderChangeMembersManagementPolicyDetails { +const SHARED_LINK_CREATE_DETAILS_FIELDS: &[&str] = &["shared_link_access_level"]; +impl SharedLinkCreateDetails { + // no _opt deserializer pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( - map: V, - ) -> Result { - Self::internal_deserialize_opt(map, false).map(Option::unwrap) - } - - pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - optional: bool, - ) -> Result, V::Error> { - let mut field_new_value = None; - let mut field_previous_value = None; - let mut nothing = true; + ) -> Result { + let mut field_shared_link_access_level = None; while let Some(key) = map.next_key::<&str>()? { - nothing = false; match key { - "new_value" => { - if field_new_value.is_some() { - return Err(::serde::de::Error::duplicate_field("new_value")); - } - field_new_value = Some(map.next_value()?); - } - "previous_value" => { - if field_previous_value.is_some() { - return Err(::serde::de::Error::duplicate_field("previous_value")); + "shared_link_access_level" => { + if field_shared_link_access_level.is_some() { + return Err(::serde::de::Error::duplicate_field("shared_link_access_level")); } - field_previous_value = Some(map.next_value()?); + field_shared_link_access_level = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -92989,14 +115228,10 @@ impl SharedFolderChangeMembersManagementPolicyDetails { } } } - if optional && nothing { - return Ok(None); - } - let result = SharedFolderChangeMembersManagementPolicyDetails { - new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, - previous_value: field_previous_value.and_then(Option::flatten), + let result = SharedLinkCreateDetails { + shared_link_access_level: field_shared_link_access_level.and_then(Option::flatten), }; - Ok(Some(result)) + Ok(result) } pub(crate) fn internal_serialize( @@ -93004,37 +115239,36 @@ impl SharedFolderChangeMembersManagementPolicyDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("new_value", &self.new_value)?; - if let Some(val) = &self.previous_value { - s.serialize_field("previous_value", val)?; + if let Some(val) = &self.shared_link_access_level { + s.serialize_field("shared_link_access_level", val)?; } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for SharedFolderChangeMembersManagementPolicyDetails { +impl<'de> ::serde::de::Deserialize<'de> for SharedLinkCreateDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SharedFolderChangeMembersManagementPolicyDetails; + type Value = SharedLinkCreateDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SharedFolderChangeMembersManagementPolicyDetails struct") + f.write_str("a SharedLinkCreateDetails struct") } fn visit_map>(self, map: V) -> Result { - SharedFolderChangeMembersManagementPolicyDetails::internal_deserialize(map) + SharedLinkCreateDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("SharedFolderChangeMembersManagementPolicyDetails", SHARED_FOLDER_CHANGE_MEMBERS_MANAGEMENT_POLICY_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("SharedLinkCreateDetails", SHARED_LINK_CREATE_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SharedFolderChangeMembersManagementPolicyDetails { +impl ::serde::ser::Serialize for SharedLinkCreateDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SharedFolderChangeMembersManagementPolicyDetails", 2)?; + let mut s = serializer.serialize_struct("SharedLinkCreateDetails", 1)?; self.internal_serialize::(&mut s)?; s.end() } @@ -93042,30 +115276,30 @@ impl ::serde::ser::Serialize for SharedFolderChangeMembersManagementPolicyDetail #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SharedFolderChangeMembersManagementPolicyType { +pub struct SharedLinkCreateType { pub description: String, } -impl SharedFolderChangeMembersManagementPolicyType { +impl SharedLinkCreateType { pub fn new(description: String) -> Self { - SharedFolderChangeMembersManagementPolicyType { + SharedLinkCreateType { description, } } } -const SHARED_FOLDER_CHANGE_MEMBERS_MANAGEMENT_POLICY_TYPE_FIELDS: &[&str] = &["description"]; -impl SharedFolderChangeMembersManagementPolicyType { +const SHARED_LINK_CREATE_TYPE_FIELDS: &[&str] = &["description"]; +impl SharedLinkCreateType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -93086,7 +115320,7 @@ impl SharedFolderChangeMembersManagementPolicyType { if optional && nothing { return Ok(None); } - let result = SharedFolderChangeMembersManagementPolicyType { + let result = SharedLinkCreateType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -93102,71 +115336,142 @@ impl SharedFolderChangeMembersManagementPolicyType { } } -impl<'de> ::serde::de::Deserialize<'de> for SharedFolderChangeMembersManagementPolicyType { +impl<'de> ::serde::de::Deserialize<'de> for SharedLinkCreateType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SharedFolderChangeMembersManagementPolicyType; + type Value = SharedLinkCreateType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SharedFolderChangeMembersManagementPolicyType struct") + f.write_str("a SharedLinkCreateType struct") } fn visit_map>(self, map: V) -> Result { - SharedFolderChangeMembersManagementPolicyType::internal_deserialize(map) + SharedLinkCreateType::internal_deserialize(map) } } - deserializer.deserialize_struct("SharedFolderChangeMembersManagementPolicyType", SHARED_FOLDER_CHANGE_MEMBERS_MANAGEMENT_POLICY_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("SharedLinkCreateType", SHARED_LINK_CREATE_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SharedFolderChangeMembersManagementPolicyType { +impl ::serde::ser::Serialize for SharedLinkCreateType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SharedFolderChangeMembersManagementPolicyType", 1)?; + let mut s = serializer.serialize_struct("SharedLinkCreateType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Changed who can become member of shared folder. +/// Policy for deciding the default permissions granted through shared links #[derive(Debug, Clone, PartialEq, Eq)] -#[non_exhaustive] // structs may have more fields added in the future. -pub struct SharedFolderChangeMembersPolicyDetails { - /// New external invite policy. - pub new_value: crate::types::sharing::MemberPolicy, - /// Previous external invite policy. Might be missing due to historical data gap. - pub previous_value: Option, +#[non_exhaustive] // variants may be added in the future +pub enum SharedLinkDefaultPermissionsPolicy { + Default, + Edit, + View, + /// Catch-all used for unrecognized values returned from the server. Encountering this value + /// typically indicates that this SDK version is out of date. + Other, } -impl SharedFolderChangeMembersPolicyDetails { - pub fn new(new_value: crate::types::sharing::MemberPolicy) -> Self { - SharedFolderChangeMembersPolicyDetails { - new_value, - previous_value: None, +impl<'de> ::serde::de::Deserialize<'de> for SharedLinkDefaultPermissionsPolicy { + fn deserialize>(deserializer: D) -> Result { + // union deserializer + use serde::de::{self, MapAccess, Visitor}; + struct EnumVisitor; + impl<'de> Visitor<'de> for EnumVisitor { + type Value = SharedLinkDefaultPermissionsPolicy; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a SharedLinkDefaultPermissionsPolicy structure") + } + fn visit_map>(self, mut map: V) -> Result { + let tag: &str = match map.next_key()? { + Some(".tag") => map.next_value()?, + _ => return Err(de::Error::missing_field(".tag")) + }; + let value = match tag { + "default" => SharedLinkDefaultPermissionsPolicy::Default, + "edit" => SharedLinkDefaultPermissionsPolicy::Edit, + "view" => SharedLinkDefaultPermissionsPolicy::View, + _ => SharedLinkDefaultPermissionsPolicy::Other, + }; + crate::eat_json_fields(&mut map)?; + Ok(value) + } } + const VARIANTS: &[&str] = &["default", + "edit", + "view", + "other"]; + deserializer.deserialize_struct("SharedLinkDefaultPermissionsPolicy", VARIANTS, EnumVisitor) } +} - pub fn with_previous_value(mut self, value: crate::types::sharing::MemberPolicy) -> Self { - self.previous_value = Some(value); - self +impl ::serde::ser::Serialize for SharedLinkDefaultPermissionsPolicy { + fn serialize(&self, serializer: S) -> Result { + // union serializer + use serde::ser::SerializeStruct; + match self { + SharedLinkDefaultPermissionsPolicy::Default => { + // unit + let mut s = serializer.serialize_struct("SharedLinkDefaultPermissionsPolicy", 1)?; + s.serialize_field(".tag", "default")?; + s.end() + } + SharedLinkDefaultPermissionsPolicy::Edit => { + // unit + let mut s = serializer.serialize_struct("SharedLinkDefaultPermissionsPolicy", 1)?; + s.serialize_field(".tag", "edit")?; + s.end() + } + SharedLinkDefaultPermissionsPolicy::View => { + // unit + let mut s = serializer.serialize_struct("SharedLinkDefaultPermissionsPolicy", 1)?; + s.serialize_field(".tag", "view")?; + s.end() + } + SharedLinkDefaultPermissionsPolicy::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) + } } } -const SHARED_FOLDER_CHANGE_MEMBERS_POLICY_DETAILS_FIELDS: &[&str] = &["new_value", - "previous_value"]; -impl SharedFolderChangeMembersPolicyDetails { +/// Changed shared link default permissions policy for team. +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct SharedLinkDefaultPermissionsPolicyChangedDetails { + /// To. + pub new_value: SharedLinkDefaultPermissionsPolicy, + /// From. + pub previous_value: SharedLinkDefaultPermissionsPolicy, +} + +impl SharedLinkDefaultPermissionsPolicyChangedDetails { + pub fn new( + new_value: SharedLinkDefaultPermissionsPolicy, + previous_value: SharedLinkDefaultPermissionsPolicy, + ) -> Self { + SharedLinkDefaultPermissionsPolicyChangedDetails { + new_value, + previous_value, + } + } +} + +const SHARED_LINK_DEFAULT_PERMISSIONS_POLICY_CHANGED_DETAILS_FIELDS: &[&str] = &["new_value", + "previous_value"]; +impl SharedLinkDefaultPermissionsPolicyChangedDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_new_value = None; let mut field_previous_value = None; let mut nothing = true; @@ -93194,9 +115499,9 @@ impl SharedFolderChangeMembersPolicyDetails { if optional && nothing { return Ok(None); } - let result = SharedFolderChangeMembersPolicyDetails { + let result = SharedLinkDefaultPermissionsPolicyChangedDetails { new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, - previous_value: field_previous_value.and_then(Option::flatten), + previous_value: field_previous_value.ok_or_else(|| ::serde::de::Error::missing_field("previous_value"))?, }; Ok(Some(result)) } @@ -93207,36 +115512,34 @@ impl SharedFolderChangeMembersPolicyDetails { ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; s.serialize_field("new_value", &self.new_value)?; - if let Some(val) = &self.previous_value { - s.serialize_field("previous_value", val)?; - } + s.serialize_field("previous_value", &self.previous_value)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for SharedFolderChangeMembersPolicyDetails { +impl<'de> ::serde::de::Deserialize<'de> for SharedLinkDefaultPermissionsPolicyChangedDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SharedFolderChangeMembersPolicyDetails; + type Value = SharedLinkDefaultPermissionsPolicyChangedDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SharedFolderChangeMembersPolicyDetails struct") + f.write_str("a SharedLinkDefaultPermissionsPolicyChangedDetails struct") } fn visit_map>(self, map: V) -> Result { - SharedFolderChangeMembersPolicyDetails::internal_deserialize(map) + SharedLinkDefaultPermissionsPolicyChangedDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("SharedFolderChangeMembersPolicyDetails", SHARED_FOLDER_CHANGE_MEMBERS_POLICY_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("SharedLinkDefaultPermissionsPolicyChangedDetails", SHARED_LINK_DEFAULT_PERMISSIONS_POLICY_CHANGED_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SharedFolderChangeMembersPolicyDetails { +impl ::serde::ser::Serialize for SharedLinkDefaultPermissionsPolicyChangedDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SharedFolderChangeMembersPolicyDetails", 2)?; + let mut s = serializer.serialize_struct("SharedLinkDefaultPermissionsPolicyChangedDetails", 2)?; self.internal_serialize::(&mut s)?; s.end() } @@ -93244,30 +115547,30 @@ impl ::serde::ser::Serialize for SharedFolderChangeMembersPolicyDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SharedFolderChangeMembersPolicyType { +pub struct SharedLinkDefaultPermissionsPolicyChangedType { pub description: String, } -impl SharedFolderChangeMembersPolicyType { +impl SharedLinkDefaultPermissionsPolicyChangedType { pub fn new(description: String) -> Self { - SharedFolderChangeMembersPolicyType { + SharedLinkDefaultPermissionsPolicyChangedType { description, } } } -const SHARED_FOLDER_CHANGE_MEMBERS_POLICY_TYPE_FIELDS: &[&str] = &["description"]; -impl SharedFolderChangeMembersPolicyType { +const SHARED_LINK_DEFAULT_PERMISSIONS_POLICY_CHANGED_TYPE_FIELDS: &[&str] = &["description"]; +impl SharedLinkDefaultPermissionsPolicyChangedType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -93288,7 +115591,7 @@ impl SharedFolderChangeMembersPolicyType { if optional && nothing { return Ok(None); } - let result = SharedFolderChangeMembersPolicyType { + let result = SharedLinkDefaultPermissionsPolicyChangedType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -93304,63 +115607,63 @@ impl SharedFolderChangeMembersPolicyType { } } -impl<'de> ::serde::de::Deserialize<'de> for SharedFolderChangeMembersPolicyType { +impl<'de> ::serde::de::Deserialize<'de> for SharedLinkDefaultPermissionsPolicyChangedType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SharedFolderChangeMembersPolicyType; + type Value = SharedLinkDefaultPermissionsPolicyChangedType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SharedFolderChangeMembersPolicyType struct") + f.write_str("a SharedLinkDefaultPermissionsPolicyChangedType struct") } fn visit_map>(self, map: V) -> Result { - SharedFolderChangeMembersPolicyType::internal_deserialize(map) + SharedLinkDefaultPermissionsPolicyChangedType::internal_deserialize(map) } } - deserializer.deserialize_struct("SharedFolderChangeMembersPolicyType", SHARED_FOLDER_CHANGE_MEMBERS_POLICY_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("SharedLinkDefaultPermissionsPolicyChangedType", SHARED_LINK_DEFAULT_PERMISSIONS_POLICY_CHANGED_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SharedFolderChangeMembersPolicyType { +impl ::serde::ser::Serialize for SharedLinkDefaultPermissionsPolicyChangedType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SharedFolderChangeMembersPolicyType", 1)?; + let mut s = serializer.serialize_struct("SharedLinkDefaultPermissionsPolicyChangedType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Created shared folder. +/// Removed shared link. #[derive(Debug, Clone, PartialEq, Eq, Default)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SharedFolderCreateDetails { - /// Target namespace ID. - pub target_ns_id: Option, +pub struct SharedLinkDisableDetails { + /// Shared link owner details. Might be missing due to historical data gap. + pub shared_link_owner: Option, } -impl SharedFolderCreateDetails { - pub fn with_target_ns_id(mut self, value: NamespaceId) -> Self { - self.target_ns_id = Some(value); +impl SharedLinkDisableDetails { + pub fn with_shared_link_owner(mut self, value: UserLogInfo) -> Self { + self.shared_link_owner = Some(value); self } } -const SHARED_FOLDER_CREATE_DETAILS_FIELDS: &[&str] = &["target_ns_id"]; -impl SharedFolderCreateDetails { +const SHARED_LINK_DISABLE_DETAILS_FIELDS: &[&str] = &["shared_link_owner"]; +impl SharedLinkDisableDetails { // no _opt deserializer pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - ) -> Result { - let mut field_target_ns_id = None; + ) -> Result { + let mut field_shared_link_owner = None; while let Some(key) = map.next_key::<&str>()? { match key { - "target_ns_id" => { - if field_target_ns_id.is_some() { - return Err(::serde::de::Error::duplicate_field("target_ns_id")); + "shared_link_owner" => { + if field_shared_link_owner.is_some() { + return Err(::serde::de::Error::duplicate_field("shared_link_owner")); } - field_target_ns_id = Some(map.next_value()?); + field_shared_link_owner = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -93368,8 +115671,8 @@ impl SharedFolderCreateDetails { } } } - let result = SharedFolderCreateDetails { - target_ns_id: field_target_ns_id.and_then(Option::flatten), + let result = SharedLinkDisableDetails { + shared_link_owner: field_shared_link_owner.and_then(Option::flatten), }; Ok(result) } @@ -93379,36 +115682,36 @@ impl SharedFolderCreateDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - if let Some(val) = &self.target_ns_id { - s.serialize_field("target_ns_id", val)?; + if let Some(val) = &self.shared_link_owner { + s.serialize_field("shared_link_owner", val)?; } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for SharedFolderCreateDetails { +impl<'de> ::serde::de::Deserialize<'de> for SharedLinkDisableDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SharedFolderCreateDetails; + type Value = SharedLinkDisableDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SharedFolderCreateDetails struct") + f.write_str("a SharedLinkDisableDetails struct") } fn visit_map>(self, map: V) -> Result { - SharedFolderCreateDetails::internal_deserialize(map) + SharedLinkDisableDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("SharedFolderCreateDetails", SHARED_FOLDER_CREATE_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("SharedLinkDisableDetails", SHARED_LINK_DISABLE_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SharedFolderCreateDetails { +impl ::serde::ser::Serialize for SharedLinkDisableDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SharedFolderCreateDetails", 1)?; + let mut s = serializer.serialize_struct("SharedLinkDisableDetails", 1)?; self.internal_serialize::(&mut s)?; s.end() } @@ -93416,30 +115719,30 @@ impl ::serde::ser::Serialize for SharedFolderCreateDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SharedFolderCreateType { +pub struct SharedLinkDisableType { pub description: String, } -impl SharedFolderCreateType { +impl SharedLinkDisableType { pub fn new(description: String) -> Self { - SharedFolderCreateType { + SharedLinkDisableType { description, } } } -const SHARED_FOLDER_CREATE_TYPE_FIELDS: &[&str] = &["description"]; -impl SharedFolderCreateType { +const SHARED_LINK_DISABLE_TYPE_FIELDS: &[&str] = &["description"]; +impl SharedLinkDisableType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -93460,7 +115763,7 @@ impl SharedFolderCreateType { if optional && nothing { return Ok(None); } - let result = SharedFolderCreateType { + let result = SharedLinkDisableType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -93476,104 +115779,142 @@ impl SharedFolderCreateType { } } -impl<'de> ::serde::de::Deserialize<'de> for SharedFolderCreateType { +impl<'de> ::serde::de::Deserialize<'de> for SharedLinkDisableType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SharedFolderCreateType; + type Value = SharedLinkDisableType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SharedFolderCreateType struct") + f.write_str("a SharedLinkDisableType struct") } fn visit_map>(self, map: V) -> Result { - SharedFolderCreateType::internal_deserialize(map) + SharedLinkDisableType::internal_deserialize(map) } } - deserializer.deserialize_struct("SharedFolderCreateType", SHARED_FOLDER_CREATE_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("SharedLinkDisableType", SHARED_LINK_DISABLE_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SharedFolderCreateType { +impl ::serde::ser::Serialize for SharedLinkDisableType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SharedFolderCreateType", 1)?; + let mut s = serializer.serialize_struct("SharedLinkDisableType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Declined team member's invite to shared folder. +/// Downloaded file/folder from shared link. #[derive(Debug, Clone, PartialEq, Eq, Default)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SharedFolderDeclineInvitationDetails { +pub struct SharedLinkDownloadDetails { + /// Shared link owner details. Might be missing due to historical data gap. + pub shared_link_owner: Option, } -const SHARED_FOLDER_DECLINE_INVITATION_DETAILS_FIELDS: &[&str] = &[]; -impl SharedFolderDeclineInvitationDetails { +impl SharedLinkDownloadDetails { + pub fn with_shared_link_owner(mut self, value: UserLogInfo) -> Self { + self.shared_link_owner = Some(value); + self + } +} + +const SHARED_LINK_DOWNLOAD_DETAILS_FIELDS: &[&str] = &["shared_link_owner"]; +impl SharedLinkDownloadDetails { // no _opt deserializer pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - ) -> Result { - // ignore any fields found; none are presently recognized - crate::eat_json_fields(&mut map)?; - Ok(SharedFolderDeclineInvitationDetails {}) + ) -> Result { + let mut field_shared_link_owner = None; + while let Some(key) = map.next_key::<&str>()? { + match key { + "shared_link_owner" => { + if field_shared_link_owner.is_some() { + return Err(::serde::de::Error::duplicate_field("shared_link_owner")); + } + field_shared_link_owner = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } + } + } + let result = SharedLinkDownloadDetails { + shared_link_owner: field_shared_link_owner.and_then(Option::flatten), + }; + Ok(result) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + if let Some(val) = &self.shared_link_owner { + s.serialize_field("shared_link_owner", val)?; + } + Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for SharedFolderDeclineInvitationDetails { +impl<'de> ::serde::de::Deserialize<'de> for SharedLinkDownloadDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SharedFolderDeclineInvitationDetails; + type Value = SharedLinkDownloadDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SharedFolderDeclineInvitationDetails struct") + f.write_str("a SharedLinkDownloadDetails struct") } fn visit_map>(self, map: V) -> Result { - SharedFolderDeclineInvitationDetails::internal_deserialize(map) + SharedLinkDownloadDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("SharedFolderDeclineInvitationDetails", SHARED_FOLDER_DECLINE_INVITATION_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("SharedLinkDownloadDetails", SHARED_LINK_DOWNLOAD_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SharedFolderDeclineInvitationDetails { +impl ::serde::ser::Serialize for SharedLinkDownloadDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - serializer.serialize_struct("SharedFolderDeclineInvitationDetails", 0)?.end() + let mut s = serializer.serialize_struct("SharedLinkDownloadDetails", 1)?; + self.internal_serialize::(&mut s)?; + s.end() } } #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SharedFolderDeclineInvitationType { +pub struct SharedLinkDownloadType { pub description: String, } -impl SharedFolderDeclineInvitationType { +impl SharedLinkDownloadType { pub fn new(description: String) -> Self { - SharedFolderDeclineInvitationType { + SharedLinkDownloadType { description, } } } -const SHARED_FOLDER_DECLINE_INVITATION_TYPE_FIELDS: &[&str] = &["description"]; -impl SharedFolderDeclineInvitationType { +const SHARED_LINK_DOWNLOAD_TYPE_FIELDS: &[&str] = &["description"]; +impl SharedLinkDownloadType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -93594,7 +115935,7 @@ impl SharedFolderDeclineInvitationType { if optional && nothing { return Ok(None); } - let result = SharedFolderDeclineInvitationType { + let result = SharedLinkDownloadType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -93610,168 +115951,142 @@ impl SharedFolderDeclineInvitationType { } } -impl<'de> ::serde::de::Deserialize<'de> for SharedFolderDeclineInvitationType { - fn deserialize>(deserializer: D) -> Result { - // struct deserializer - use serde::de::{MapAccess, Visitor}; - struct StructVisitor; - impl<'de> Visitor<'de> for StructVisitor { - type Value = SharedFolderDeclineInvitationType; - fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SharedFolderDeclineInvitationType struct") - } - fn visit_map>(self, map: V) -> Result { - SharedFolderDeclineInvitationType::internal_deserialize(map) - } - } - deserializer.deserialize_struct("SharedFolderDeclineInvitationType", SHARED_FOLDER_DECLINE_INVITATION_TYPE_FIELDS, StructVisitor) - } -} - -impl ::serde::ser::Serialize for SharedFolderDeclineInvitationType { - fn serialize(&self, serializer: S) -> Result { - // struct serializer - use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SharedFolderDeclineInvitationType", 1)?; - self.internal_serialize::(&mut s)?; - s.end() - } -} - -/// Specifies if a shared folder inherits its members from the parent folder. -#[derive(Debug, Clone, PartialEq, Eq)] -#[non_exhaustive] // variants may be added in the future -pub enum SharedFolderMembersInheritancePolicy { - DontInheritMembers, - InheritMembers, - /// Catch-all used for unrecognized values returned from the server. Encountering this value - /// typically indicates that this SDK version is out of date. - Other, -} - -impl<'de> ::serde::de::Deserialize<'de> for SharedFolderMembersInheritancePolicy { +impl<'de> ::serde::de::Deserialize<'de> for SharedLinkDownloadType { fn deserialize>(deserializer: D) -> Result { - // union deserializer - use serde::de::{self, MapAccess, Visitor}; - struct EnumVisitor; - impl<'de> Visitor<'de> for EnumVisitor { - type Value = SharedFolderMembersInheritancePolicy; - fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SharedFolderMembersInheritancePolicy structure") - } - fn visit_map>(self, mut map: V) -> Result { - let tag: &str = match map.next_key()? { - Some(".tag") => map.next_value()?, - _ => return Err(de::Error::missing_field(".tag")) - }; - let value = match tag { - "dont_inherit_members" => SharedFolderMembersInheritancePolicy::DontInheritMembers, - "inherit_members" => SharedFolderMembersInheritancePolicy::InheritMembers, - _ => SharedFolderMembersInheritancePolicy::Other, - }; - crate::eat_json_fields(&mut map)?; - Ok(value) + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = SharedLinkDownloadType; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a SharedLinkDownloadType struct") + } + fn visit_map>(self, map: V) -> Result { + SharedLinkDownloadType::internal_deserialize(map) } } - const VARIANTS: &[&str] = &["dont_inherit_members", - "inherit_members", - "other"]; - deserializer.deserialize_struct("SharedFolderMembersInheritancePolicy", VARIANTS, EnumVisitor) + deserializer.deserialize_struct("SharedLinkDownloadType", SHARED_LINK_DOWNLOAD_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SharedFolderMembersInheritancePolicy { +impl ::serde::ser::Serialize for SharedLinkDownloadType { fn serialize(&self, serializer: S) -> Result { - // union serializer + // struct serializer use serde::ser::SerializeStruct; - match self { - SharedFolderMembersInheritancePolicy::DontInheritMembers => { - // unit - let mut s = serializer.serialize_struct("SharedFolderMembersInheritancePolicy", 1)?; - s.serialize_field(".tag", "dont_inherit_members")?; - s.end() - } - SharedFolderMembersInheritancePolicy::InheritMembers => { - // unit - let mut s = serializer.serialize_struct("SharedFolderMembersInheritancePolicy", 1)?; - s.serialize_field(".tag", "inherit_members")?; - s.end() - } - SharedFolderMembersInheritancePolicy::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) - } + let mut s = serializer.serialize_struct("SharedLinkDownloadType", 1)?; + self.internal_serialize::(&mut s)?; + s.end() } } -/// Added shared folder to own Dropbox. +/// Removed shared link expiration date. #[derive(Debug, Clone, PartialEq, Eq, Default)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SharedFolderMountDetails { +pub struct SharedLinkRemoveExpiryDetails { + /// Previous shared link expiration date. Might be missing due to historical data gap. + pub previous_value: Option, } -const SHARED_FOLDER_MOUNT_DETAILS_FIELDS: &[&str] = &[]; -impl SharedFolderMountDetails { +impl SharedLinkRemoveExpiryDetails { + pub fn with_previous_value(mut self, value: crate::types::common::DropboxTimestamp) -> Self { + self.previous_value = Some(value); + self + } +} + +const SHARED_LINK_REMOVE_EXPIRY_DETAILS_FIELDS: &[&str] = &["previous_value"]; +impl SharedLinkRemoveExpiryDetails { // no _opt deserializer pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - ) -> Result { - // ignore any fields found; none are presently recognized - crate::eat_json_fields(&mut map)?; - Ok(SharedFolderMountDetails {}) + ) -> Result { + let mut field_previous_value = None; + while let Some(key) = map.next_key::<&str>()? { + match key { + "previous_value" => { + if field_previous_value.is_some() { + return Err(::serde::de::Error::duplicate_field("previous_value")); + } + field_previous_value = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } + } + } + let result = SharedLinkRemoveExpiryDetails { + previous_value: field_previous_value.and_then(Option::flatten), + }; + Ok(result) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + if let Some(val) = &self.previous_value { + s.serialize_field("previous_value", val)?; + } + Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for SharedFolderMountDetails { +impl<'de> ::serde::de::Deserialize<'de> for SharedLinkRemoveExpiryDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SharedFolderMountDetails; + type Value = SharedLinkRemoveExpiryDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SharedFolderMountDetails struct") + f.write_str("a SharedLinkRemoveExpiryDetails struct") } fn visit_map>(self, map: V) -> Result { - SharedFolderMountDetails::internal_deserialize(map) + SharedLinkRemoveExpiryDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("SharedFolderMountDetails", SHARED_FOLDER_MOUNT_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("SharedLinkRemoveExpiryDetails", SHARED_LINK_REMOVE_EXPIRY_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SharedFolderMountDetails { +impl ::serde::ser::Serialize for SharedLinkRemoveExpiryDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - serializer.serialize_struct("SharedFolderMountDetails", 0)?.end() + let mut s = serializer.serialize_struct("SharedLinkRemoveExpiryDetails", 1)?; + self.internal_serialize::(&mut s)?; + s.end() } } #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SharedFolderMountType { +pub struct SharedLinkRemoveExpiryType { pub description: String, } -impl SharedFolderMountType { +impl SharedLinkRemoveExpiryType { pub fn new(description: String) -> Self { - SharedFolderMountType { + SharedLinkRemoveExpiryType { description, } } } -const SHARED_FOLDER_MOUNT_TYPE_FIELDS: &[&str] = &["description"]; -impl SharedFolderMountType { +const SHARED_LINK_REMOVE_EXPIRY_TYPE_FIELDS: &[&str] = &["description"]; +impl SharedLinkRemoveExpiryType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -93792,7 +116107,7 @@ impl SharedFolderMountType { if optional && nothing { return Ok(None); } - let result = SharedFolderMountType { + let result = SharedLinkRemoveExpiryType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -93808,199 +116123,104 @@ impl SharedFolderMountType { } } -impl<'de> ::serde::de::Deserialize<'de> for SharedFolderMountType { +impl<'de> ::serde::de::Deserialize<'de> for SharedLinkRemoveExpiryType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SharedFolderMountType; + type Value = SharedLinkRemoveExpiryType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SharedFolderMountType struct") + f.write_str("a SharedLinkRemoveExpiryType struct") } fn visit_map>(self, map: V) -> Result { - SharedFolderMountType::internal_deserialize(map) + SharedLinkRemoveExpiryType::internal_deserialize(map) } } - deserializer.deserialize_struct("SharedFolderMountType", SHARED_FOLDER_MOUNT_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("SharedLinkRemoveExpiryType", SHARED_LINK_REMOVE_EXPIRY_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SharedFolderMountType { +impl ::serde::ser::Serialize for SharedLinkRemoveExpiryType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SharedFolderMountType", 1)?; + let mut s = serializer.serialize_struct("SharedLinkRemoveExpiryType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Changed parent of shared folder. +/// Removed link visitor. #[derive(Debug, Clone, PartialEq, Eq, Default)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SharedFolderNestDetails { - /// Previous parent namespace ID. - pub previous_parent_ns_id: Option, - /// New parent namespace ID. - pub new_parent_ns_id: Option, - /// Previous namespace path. - pub previous_ns_path: Option, - /// New namespace path. - pub new_ns_path: Option, -} - -impl SharedFolderNestDetails { - pub fn with_previous_parent_ns_id(mut self, value: NamespaceId) -> Self { - self.previous_parent_ns_id = Some(value); - self - } - - pub fn with_new_parent_ns_id(mut self, value: NamespaceId) -> Self { - self.new_parent_ns_id = Some(value); - self - } - - pub fn with_previous_ns_path(mut self, value: FilePath) -> Self { - self.previous_ns_path = Some(value); - self - } - - pub fn with_new_ns_path(mut self, value: FilePath) -> Self { - self.new_ns_path = Some(value); - self - } +pub struct SharedLinkRemoveVisitorDetails { } -const SHARED_FOLDER_NEST_DETAILS_FIELDS: &[&str] = &["previous_parent_ns_id", - "new_parent_ns_id", - "previous_ns_path", - "new_ns_path"]; -impl SharedFolderNestDetails { +const SHARED_LINK_REMOVE_VISITOR_DETAILS_FIELDS: &[&str] = &[]; +impl SharedLinkRemoveVisitorDetails { // no _opt deserializer pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - ) -> Result { - let mut field_previous_parent_ns_id = None; - let mut field_new_parent_ns_id = None; - let mut field_previous_ns_path = None; - let mut field_new_ns_path = None; - while let Some(key) = map.next_key::<&str>()? { - match key { - "previous_parent_ns_id" => { - if field_previous_parent_ns_id.is_some() { - return Err(::serde::de::Error::duplicate_field("previous_parent_ns_id")); - } - field_previous_parent_ns_id = Some(map.next_value()?); - } - "new_parent_ns_id" => { - if field_new_parent_ns_id.is_some() { - return Err(::serde::de::Error::duplicate_field("new_parent_ns_id")); - } - field_new_parent_ns_id = Some(map.next_value()?); - } - "previous_ns_path" => { - if field_previous_ns_path.is_some() { - return Err(::serde::de::Error::duplicate_field("previous_ns_path")); - } - field_previous_ns_path = Some(map.next_value()?); - } - "new_ns_path" => { - if field_new_ns_path.is_some() { - return Err(::serde::de::Error::duplicate_field("new_ns_path")); - } - field_new_ns_path = Some(map.next_value()?); - } - _ => { - // unknown field allowed and ignored - map.next_value::<::serde_json::Value>()?; - } - } - } - let result = SharedFolderNestDetails { - previous_parent_ns_id: field_previous_parent_ns_id.and_then(Option::flatten), - new_parent_ns_id: field_new_parent_ns_id.and_then(Option::flatten), - previous_ns_path: field_previous_ns_path.and_then(Option::flatten), - new_ns_path: field_new_ns_path.and_then(Option::flatten), - }; - Ok(result) - } - - pub(crate) fn internal_serialize( - &self, - s: &mut S::SerializeStruct, - ) -> Result<(), S::Error> { - use serde::ser::SerializeStruct; - if let Some(val) = &self.previous_parent_ns_id { - s.serialize_field("previous_parent_ns_id", val)?; - } - if let Some(val) = &self.new_parent_ns_id { - s.serialize_field("new_parent_ns_id", val)?; - } - if let Some(val) = &self.previous_ns_path { - s.serialize_field("previous_ns_path", val)?; - } - if let Some(val) = &self.new_ns_path { - s.serialize_field("new_ns_path", val)?; - } - Ok(()) + ) -> Result { + // ignore any fields found; none are presently recognized + crate::eat_json_fields(&mut map)?; + Ok(SharedLinkRemoveVisitorDetails {}) } } -impl<'de> ::serde::de::Deserialize<'de> for SharedFolderNestDetails { +impl<'de> ::serde::de::Deserialize<'de> for SharedLinkRemoveVisitorDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SharedFolderNestDetails; + type Value = SharedLinkRemoveVisitorDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SharedFolderNestDetails struct") + f.write_str("a SharedLinkRemoveVisitorDetails struct") } fn visit_map>(self, map: V) -> Result { - SharedFolderNestDetails::internal_deserialize(map) + SharedLinkRemoveVisitorDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("SharedFolderNestDetails", SHARED_FOLDER_NEST_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("SharedLinkRemoveVisitorDetails", SHARED_LINK_REMOVE_VISITOR_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SharedFolderNestDetails { +impl ::serde::ser::Serialize for SharedLinkRemoveVisitorDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SharedFolderNestDetails", 4)?; - self.internal_serialize::(&mut s)?; - s.end() + serializer.serialize_struct("SharedLinkRemoveVisitorDetails", 0)?.end() } } #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SharedFolderNestType { +pub struct SharedLinkRemoveVisitorType { pub description: String, } -impl SharedFolderNestType { +impl SharedLinkRemoveVisitorType { pub fn new(description: String) -> Self { - SharedFolderNestType { + SharedLinkRemoveVisitorType { description, } } } -const SHARED_FOLDER_NEST_TYPE_FIELDS: &[&str] = &["description"]; -impl SharedFolderNestType { +const SHARED_LINK_REMOVE_VISITOR_TYPE_FIELDS: &[&str] = &["description"]; +impl SharedLinkRemoveVisitorType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -94021,7 +116241,7 @@ impl SharedFolderNestType { if optional && nothing { return Ok(None); } - let result = SharedFolderNestType { + let result = SharedLinkRemoveVisitorType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -94037,88 +116257,104 @@ impl SharedFolderNestType { } } -impl<'de> ::serde::de::Deserialize<'de> for SharedFolderNestType { +impl<'de> ::serde::de::Deserialize<'de> for SharedLinkRemoveVisitorType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SharedFolderNestType; + type Value = SharedLinkRemoveVisitorType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SharedFolderNestType struct") + f.write_str("a SharedLinkRemoveVisitorType struct") } fn visit_map>(self, map: V) -> Result { - SharedFolderNestType::internal_deserialize(map) + SharedLinkRemoveVisitorType::internal_deserialize(map) } } - deserializer.deserialize_struct("SharedFolderNestType", SHARED_FOLDER_NEST_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("SharedLinkRemoveVisitorType", SHARED_LINK_REMOVE_VISITOR_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SharedFolderNestType { +impl ::serde::ser::Serialize for SharedLinkRemoveVisitorType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SharedFolderNestType", 1)?; + let mut s = serializer.serialize_struct("SharedLinkRemoveVisitorType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Transferred ownership of shared folder to another member. +/// Added an expiration date to the shared link. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SharedFolderTransferOwnershipDetails { - /// The email address of the new shared folder owner. - pub new_owner_email: EmailAddress, - /// The email address of the previous shared folder owner. - pub previous_owner_email: Option, +pub struct SharedLinkSettingsAddExpirationDetails { + /// Shared content access level. + pub shared_content_access_level: crate::types::sharing::AccessLevel, + /// Shared content link. + pub shared_content_link: Option, + /// New shared content link expiration date. Might be missing due to historical data gap. + pub new_value: Option, } -impl SharedFolderTransferOwnershipDetails { - pub fn new(new_owner_email: EmailAddress) -> Self { - SharedFolderTransferOwnershipDetails { - new_owner_email, - previous_owner_email: None, +impl SharedLinkSettingsAddExpirationDetails { + pub fn new(shared_content_access_level: crate::types::sharing::AccessLevel) -> Self { + SharedLinkSettingsAddExpirationDetails { + shared_content_access_level, + shared_content_link: None, + new_value: None, } } - pub fn with_previous_owner_email(mut self, value: EmailAddress) -> Self { - self.previous_owner_email = Some(value); + pub fn with_shared_content_link(mut self, value: String) -> Self { + self.shared_content_link = Some(value); + self + } + + pub fn with_new_value(mut self, value: crate::types::common::DropboxTimestamp) -> Self { + self.new_value = Some(value); self } } -const SHARED_FOLDER_TRANSFER_OWNERSHIP_DETAILS_FIELDS: &[&str] = &["new_owner_email", - "previous_owner_email"]; -impl SharedFolderTransferOwnershipDetails { +const SHARED_LINK_SETTINGS_ADD_EXPIRATION_DETAILS_FIELDS: &[&str] = &["shared_content_access_level", + "shared_content_link", + "new_value"]; +impl SharedLinkSettingsAddExpirationDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_new_owner_email = None; - let mut field_previous_owner_email = None; + ) -> Result, V::Error> { + let mut field_shared_content_access_level = None; + let mut field_shared_content_link = None; + let mut field_new_value = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "new_owner_email" => { - if field_new_owner_email.is_some() { - return Err(::serde::de::Error::duplicate_field("new_owner_email")); + "shared_content_access_level" => { + if field_shared_content_access_level.is_some() { + return Err(::serde::de::Error::duplicate_field("shared_content_access_level")); } - field_new_owner_email = Some(map.next_value()?); + field_shared_content_access_level = Some(map.next_value()?); } - "previous_owner_email" => { - if field_previous_owner_email.is_some() { - return Err(::serde::de::Error::duplicate_field("previous_owner_email")); + "shared_content_link" => { + if field_shared_content_link.is_some() { + return Err(::serde::de::Error::duplicate_field("shared_content_link")); } - field_previous_owner_email = Some(map.next_value()?); + field_shared_content_link = Some(map.next_value()?); + } + "new_value" => { + if field_new_value.is_some() { + return Err(::serde::de::Error::duplicate_field("new_value")); + } + field_new_value = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -94129,9 +116365,10 @@ impl SharedFolderTransferOwnershipDetails { if optional && nothing { return Ok(None); } - let result = SharedFolderTransferOwnershipDetails { - new_owner_email: field_new_owner_email.ok_or_else(|| ::serde::de::Error::missing_field("new_owner_email"))?, - previous_owner_email: field_previous_owner_email.and_then(Option::flatten), + let result = SharedLinkSettingsAddExpirationDetails { + shared_content_access_level: field_shared_content_access_level.ok_or_else(|| ::serde::de::Error::missing_field("shared_content_access_level"))?, + shared_content_link: field_shared_content_link.and_then(Option::flatten), + new_value: field_new_value.and_then(Option::flatten), }; Ok(Some(result)) } @@ -94141,37 +116378,40 @@ impl SharedFolderTransferOwnershipDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("new_owner_email", &self.new_owner_email)?; - if let Some(val) = &self.previous_owner_email { - s.serialize_field("previous_owner_email", val)?; + s.serialize_field("shared_content_access_level", &self.shared_content_access_level)?; + if let Some(val) = &self.shared_content_link { + s.serialize_field("shared_content_link", val)?; + } + if let Some(val) = &self.new_value { + s.serialize_field("new_value", val)?; } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for SharedFolderTransferOwnershipDetails { +impl<'de> ::serde::de::Deserialize<'de> for SharedLinkSettingsAddExpirationDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SharedFolderTransferOwnershipDetails; + type Value = SharedLinkSettingsAddExpirationDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SharedFolderTransferOwnershipDetails struct") + f.write_str("a SharedLinkSettingsAddExpirationDetails struct") } fn visit_map>(self, map: V) -> Result { - SharedFolderTransferOwnershipDetails::internal_deserialize(map) + SharedLinkSettingsAddExpirationDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("SharedFolderTransferOwnershipDetails", SHARED_FOLDER_TRANSFER_OWNERSHIP_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("SharedLinkSettingsAddExpirationDetails", SHARED_LINK_SETTINGS_ADD_EXPIRATION_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SharedFolderTransferOwnershipDetails { +impl ::serde::ser::Serialize for SharedLinkSettingsAddExpirationDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SharedFolderTransferOwnershipDetails", 2)?; + let mut s = serializer.serialize_struct("SharedLinkSettingsAddExpirationDetails", 3)?; self.internal_serialize::(&mut s)?; s.end() } @@ -94179,30 +116419,30 @@ impl ::serde::ser::Serialize for SharedFolderTransferOwnershipDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SharedFolderTransferOwnershipType { +pub struct SharedLinkSettingsAddExpirationType { pub description: String, } -impl SharedFolderTransferOwnershipType { +impl SharedLinkSettingsAddExpirationType { pub fn new(description: String) -> Self { - SharedFolderTransferOwnershipType { + SharedLinkSettingsAddExpirationType { description, } } } -const SHARED_FOLDER_TRANSFER_OWNERSHIP_TYPE_FIELDS: &[&str] = &["description"]; -impl SharedFolderTransferOwnershipType { +const SHARED_LINK_SETTINGS_ADD_EXPIRATION_TYPE_FIELDS: &[&str] = &["description"]; +impl SharedLinkSettingsAddExpirationType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -94223,7 +116463,7 @@ impl SharedFolderTransferOwnershipType { if optional && nothing { return Ok(None); } - let result = SharedFolderTransferOwnershipType { + let result = SharedLinkSettingsAddExpirationType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -94239,104 +116479,172 @@ impl SharedFolderTransferOwnershipType { } } -impl<'de> ::serde::de::Deserialize<'de> for SharedFolderTransferOwnershipType { +impl<'de> ::serde::de::Deserialize<'de> for SharedLinkSettingsAddExpirationType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SharedFolderTransferOwnershipType; + type Value = SharedLinkSettingsAddExpirationType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SharedFolderTransferOwnershipType struct") + f.write_str("a SharedLinkSettingsAddExpirationType struct") } fn visit_map>(self, map: V) -> Result { - SharedFolderTransferOwnershipType::internal_deserialize(map) + SharedLinkSettingsAddExpirationType::internal_deserialize(map) } } - deserializer.deserialize_struct("SharedFolderTransferOwnershipType", SHARED_FOLDER_TRANSFER_OWNERSHIP_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("SharedLinkSettingsAddExpirationType", SHARED_LINK_SETTINGS_ADD_EXPIRATION_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SharedFolderTransferOwnershipType { +impl ::serde::ser::Serialize for SharedLinkSettingsAddExpirationType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SharedFolderTransferOwnershipType", 1)?; + let mut s = serializer.serialize_struct("SharedLinkSettingsAddExpirationType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Deleted shared folder from Dropbox. -#[derive(Debug, Clone, PartialEq, Eq, Default)] +/// Added a password to the shared link. +#[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SharedFolderUnmountDetails { +pub struct SharedLinkSettingsAddPasswordDetails { + /// Shared content access level. + pub shared_content_access_level: crate::types::sharing::AccessLevel, + /// Shared content link. + pub shared_content_link: Option, } -const SHARED_FOLDER_UNMOUNT_DETAILS_FIELDS: &[&str] = &[]; -impl SharedFolderUnmountDetails { - // no _opt deserializer +impl SharedLinkSettingsAddPasswordDetails { + pub fn new(shared_content_access_level: crate::types::sharing::AccessLevel) -> Self { + SharedLinkSettingsAddPasswordDetails { + shared_content_access_level, + shared_content_link: None, + } + } + + pub fn with_shared_content_link(mut self, value: String) -> Self { + self.shared_content_link = Some(value); + self + } +} + +const SHARED_LINK_SETTINGS_ADD_PASSWORD_DETAILS_FIELDS: &[&str] = &["shared_content_access_level", + "shared_content_link"]; +impl SharedLinkSettingsAddPasswordDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - ) -> Result { - // ignore any fields found; none are presently recognized - crate::eat_json_fields(&mut map)?; - Ok(SharedFolderUnmountDetails {}) + optional: bool, + ) -> Result, V::Error> { + let mut field_shared_content_access_level = None; + let mut field_shared_content_link = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "shared_content_access_level" => { + if field_shared_content_access_level.is_some() { + return Err(::serde::de::Error::duplicate_field("shared_content_access_level")); + } + field_shared_content_access_level = Some(map.next_value()?); + } + "shared_content_link" => { + if field_shared_content_link.is_some() { + return Err(::serde::de::Error::duplicate_field("shared_content_link")); + } + field_shared_content_link = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } + } + } + if optional && nothing { + return Ok(None); + } + let result = SharedLinkSettingsAddPasswordDetails { + shared_content_access_level: field_shared_content_access_level.ok_or_else(|| ::serde::de::Error::missing_field("shared_content_access_level"))?, + shared_content_link: field_shared_content_link.and_then(Option::flatten), + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("shared_content_access_level", &self.shared_content_access_level)?; + if let Some(val) = &self.shared_content_link { + s.serialize_field("shared_content_link", val)?; + } + Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for SharedFolderUnmountDetails { +impl<'de> ::serde::de::Deserialize<'de> for SharedLinkSettingsAddPasswordDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SharedFolderUnmountDetails; + type Value = SharedLinkSettingsAddPasswordDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SharedFolderUnmountDetails struct") + f.write_str("a SharedLinkSettingsAddPasswordDetails struct") } fn visit_map>(self, map: V) -> Result { - SharedFolderUnmountDetails::internal_deserialize(map) + SharedLinkSettingsAddPasswordDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("SharedFolderUnmountDetails", SHARED_FOLDER_UNMOUNT_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("SharedLinkSettingsAddPasswordDetails", SHARED_LINK_SETTINGS_ADD_PASSWORD_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SharedFolderUnmountDetails { +impl ::serde::ser::Serialize for SharedLinkSettingsAddPasswordDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - serializer.serialize_struct("SharedFolderUnmountDetails", 0)?.end() + let mut s = serializer.serialize_struct("SharedLinkSettingsAddPasswordDetails", 2)?; + self.internal_serialize::(&mut s)?; + s.end() } } #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SharedFolderUnmountType { +pub struct SharedLinkSettingsAddPasswordType { pub description: String, } -impl SharedFolderUnmountType { +impl SharedLinkSettingsAddPasswordType { pub fn new(description: String) -> Self { - SharedFolderUnmountType { + SharedLinkSettingsAddPasswordType { description, } } } -const SHARED_FOLDER_UNMOUNT_TYPE_FIELDS: &[&str] = &["description"]; -impl SharedFolderUnmountType { +const SHARED_LINK_SETTINGS_ADD_PASSWORD_TYPE_FIELDS: &[&str] = &["description"]; +impl SharedLinkSettingsAddPasswordType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -94357,7 +116665,7 @@ impl SharedFolderUnmountType { if optional && nothing { return Ok(None); } - let result = SharedFolderUnmountType { + let result = SharedLinkSettingsAddPasswordType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -94373,145 +116681,88 @@ impl SharedFolderUnmountType { } } -impl<'de> ::serde::de::Deserialize<'de> for SharedFolderUnmountType { +impl<'de> ::serde::de::Deserialize<'de> for SharedLinkSettingsAddPasswordType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SharedFolderUnmountType; + type Value = SharedLinkSettingsAddPasswordType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SharedFolderUnmountType struct") + f.write_str("a SharedLinkSettingsAddPasswordType struct") } fn visit_map>(self, map: V) -> Result { - SharedFolderUnmountType::internal_deserialize(map) + SharedLinkSettingsAddPasswordType::internal_deserialize(map) } } - deserializer.deserialize_struct("SharedFolderUnmountType", SHARED_FOLDER_UNMOUNT_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("SharedLinkSettingsAddPasswordType", SHARED_LINK_SETTINGS_ADD_PASSWORD_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SharedFolderUnmountType { +impl ::serde::ser::Serialize for SharedLinkSettingsAddPasswordType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SharedFolderUnmountType", 1)?; + let mut s = serializer.serialize_struct("SharedLinkSettingsAddPasswordType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Shared link access level. +/// Disabled downloads. #[derive(Debug, Clone, PartialEq, Eq)] -#[non_exhaustive] // variants may be added in the future -pub enum SharedLinkAccessLevel { - None, - Reader, - Writer, - /// Catch-all used for unrecognized values returned from the server. Encountering this value - /// typically indicates that this SDK version is out of date. - Other, -} - -impl<'de> ::serde::de::Deserialize<'de> for SharedLinkAccessLevel { - fn deserialize>(deserializer: D) -> Result { - // union deserializer - use serde::de::{self, MapAccess, Visitor}; - struct EnumVisitor; - impl<'de> Visitor<'de> for EnumVisitor { - type Value = SharedLinkAccessLevel; - fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SharedLinkAccessLevel structure") - } - fn visit_map>(self, mut map: V) -> Result { - let tag: &str = match map.next_key()? { - Some(".tag") => map.next_value()?, - _ => return Err(de::Error::missing_field(".tag")) - }; - let value = match tag { - "none" => SharedLinkAccessLevel::None, - "reader" => SharedLinkAccessLevel::Reader, - "writer" => SharedLinkAccessLevel::Writer, - _ => SharedLinkAccessLevel::Other, - }; - crate::eat_json_fields(&mut map)?; - Ok(value) - } - } - const VARIANTS: &[&str] = &["none", - "reader", - "writer", - "other"]; - deserializer.deserialize_struct("SharedLinkAccessLevel", VARIANTS, EnumVisitor) - } +#[non_exhaustive] // structs may have more fields added in the future. +pub struct SharedLinkSettingsAllowDownloadDisabledDetails { + /// Shared content access level. + pub shared_content_access_level: crate::types::sharing::AccessLevel, + /// Shared content link. + pub shared_content_link: Option, } -impl ::serde::ser::Serialize for SharedLinkAccessLevel { - fn serialize(&self, serializer: S) -> Result { - // union serializer - use serde::ser::SerializeStruct; - match self { - SharedLinkAccessLevel::None => { - // unit - let mut s = serializer.serialize_struct("SharedLinkAccessLevel", 1)?; - s.serialize_field(".tag", "none")?; - s.end() - } - SharedLinkAccessLevel::Reader => { - // unit - let mut s = serializer.serialize_struct("SharedLinkAccessLevel", 1)?; - s.serialize_field(".tag", "reader")?; - s.end() - } - SharedLinkAccessLevel::Writer => { - // unit - let mut s = serializer.serialize_struct("SharedLinkAccessLevel", 1)?; - s.serialize_field(".tag", "writer")?; - s.end() - } - SharedLinkAccessLevel::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) +impl SharedLinkSettingsAllowDownloadDisabledDetails { + pub fn new(shared_content_access_level: crate::types::sharing::AccessLevel) -> Self { + SharedLinkSettingsAllowDownloadDisabledDetails { + shared_content_access_level, + shared_content_link: None, } } -} - -/// Added shared link expiration date. -#[derive(Debug, Clone, PartialEq, Eq)] -#[non_exhaustive] // structs may have more fields added in the future. -pub struct SharedLinkAddExpiryDetails { - /// New shared link expiration date. - pub new_value: crate::types::common::DropboxTimestamp, -} -impl SharedLinkAddExpiryDetails { - pub fn new(new_value: crate::types::common::DropboxTimestamp) -> Self { - SharedLinkAddExpiryDetails { - new_value, - } + pub fn with_shared_content_link(mut self, value: String) -> Self { + self.shared_content_link = Some(value); + self } } -const SHARED_LINK_ADD_EXPIRY_DETAILS_FIELDS: &[&str] = &["new_value"]; -impl SharedLinkAddExpiryDetails { +const SHARED_LINK_SETTINGS_ALLOW_DOWNLOAD_DISABLED_DETAILS_FIELDS: &[&str] = &["shared_content_access_level", + "shared_content_link"]; +impl SharedLinkSettingsAllowDownloadDisabledDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_new_value = None; + ) -> Result, V::Error> { + let mut field_shared_content_access_level = None; + let mut field_shared_content_link = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "new_value" => { - if field_new_value.is_some() { - return Err(::serde::de::Error::duplicate_field("new_value")); + "shared_content_access_level" => { + if field_shared_content_access_level.is_some() { + return Err(::serde::de::Error::duplicate_field("shared_content_access_level")); } - field_new_value = Some(map.next_value()?); + field_shared_content_access_level = Some(map.next_value()?); + } + "shared_content_link" => { + if field_shared_content_link.is_some() { + return Err(::serde::de::Error::duplicate_field("shared_content_link")); + } + field_shared_content_link = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -94522,8 +116773,9 @@ impl SharedLinkAddExpiryDetails { if optional && nothing { return Ok(None); } - let result = SharedLinkAddExpiryDetails { - new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, + let result = SharedLinkSettingsAllowDownloadDisabledDetails { + shared_content_access_level: field_shared_content_access_level.ok_or_else(|| ::serde::de::Error::missing_field("shared_content_access_level"))?, + shared_content_link: field_shared_content_link.and_then(Option::flatten), }; Ok(Some(result)) } @@ -94533,34 +116785,37 @@ impl SharedLinkAddExpiryDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("new_value", &self.new_value)?; + s.serialize_field("shared_content_access_level", &self.shared_content_access_level)?; + if let Some(val) = &self.shared_content_link { + s.serialize_field("shared_content_link", val)?; + } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for SharedLinkAddExpiryDetails { +impl<'de> ::serde::de::Deserialize<'de> for SharedLinkSettingsAllowDownloadDisabledDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SharedLinkAddExpiryDetails; + type Value = SharedLinkSettingsAllowDownloadDisabledDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SharedLinkAddExpiryDetails struct") + f.write_str("a SharedLinkSettingsAllowDownloadDisabledDetails struct") } fn visit_map>(self, map: V) -> Result { - SharedLinkAddExpiryDetails::internal_deserialize(map) + SharedLinkSettingsAllowDownloadDisabledDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("SharedLinkAddExpiryDetails", SHARED_LINK_ADD_EXPIRY_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("SharedLinkSettingsAllowDownloadDisabledDetails", SHARED_LINK_SETTINGS_ALLOW_DOWNLOAD_DISABLED_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SharedLinkAddExpiryDetails { +impl ::serde::ser::Serialize for SharedLinkSettingsAllowDownloadDisabledDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SharedLinkAddExpiryDetails", 1)?; + let mut s = serializer.serialize_struct("SharedLinkSettingsAllowDownloadDisabledDetails", 2)?; self.internal_serialize::(&mut s)?; s.end() } @@ -94568,30 +116823,30 @@ impl ::serde::ser::Serialize for SharedLinkAddExpiryDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SharedLinkAddExpiryType { +pub struct SharedLinkSettingsAllowDownloadDisabledType { pub description: String, } -impl SharedLinkAddExpiryType { +impl SharedLinkSettingsAllowDownloadDisabledType { pub fn new(description: String) -> Self { - SharedLinkAddExpiryType { + SharedLinkSettingsAllowDownloadDisabledType { description, } } } -const SHARED_LINK_ADD_EXPIRY_TYPE_FIELDS: &[&str] = &["description"]; -impl SharedLinkAddExpiryType { +const SHARED_LINK_SETTINGS_ALLOW_DOWNLOAD_DISABLED_TYPE_FIELDS: &[&str] = &["description"]; +impl SharedLinkSettingsAllowDownloadDisabledType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -94612,7 +116867,7 @@ impl SharedLinkAddExpiryType { if optional && nothing { return Ok(None); } - let result = SharedLinkAddExpiryType { + let result = SharedLinkSettingsAllowDownloadDisabledType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -94628,78 +116883,88 @@ impl SharedLinkAddExpiryType { } } -impl<'de> ::serde::de::Deserialize<'de> for SharedLinkAddExpiryType { +impl<'de> ::serde::de::Deserialize<'de> for SharedLinkSettingsAllowDownloadDisabledType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SharedLinkAddExpiryType; + type Value = SharedLinkSettingsAllowDownloadDisabledType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SharedLinkAddExpiryType struct") + f.write_str("a SharedLinkSettingsAllowDownloadDisabledType struct") } fn visit_map>(self, map: V) -> Result { - SharedLinkAddExpiryType::internal_deserialize(map) + SharedLinkSettingsAllowDownloadDisabledType::internal_deserialize(map) } } - deserializer.deserialize_struct("SharedLinkAddExpiryType", SHARED_LINK_ADD_EXPIRY_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("SharedLinkSettingsAllowDownloadDisabledType", SHARED_LINK_SETTINGS_ALLOW_DOWNLOAD_DISABLED_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SharedLinkAddExpiryType { +impl ::serde::ser::Serialize for SharedLinkSettingsAllowDownloadDisabledType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SharedLinkAddExpiryType", 1)?; + let mut s = serializer.serialize_struct("SharedLinkSettingsAllowDownloadDisabledType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Changed shared link expiration date. -#[derive(Debug, Clone, PartialEq, Eq, Default)] +/// Enabled downloads. +#[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SharedLinkChangeExpiryDetails { - /// New shared link expiration date. Might be missing due to historical data gap. - pub new_value: Option, - /// Previous shared link expiration date. Might be missing due to historical data gap. - pub previous_value: Option, +pub struct SharedLinkSettingsAllowDownloadEnabledDetails { + /// Shared content access level. + pub shared_content_access_level: crate::types::sharing::AccessLevel, + /// Shared content link. + pub shared_content_link: Option, } -impl SharedLinkChangeExpiryDetails { - pub fn with_new_value(mut self, value: crate::types::common::DropboxTimestamp) -> Self { - self.new_value = Some(value); - self +impl SharedLinkSettingsAllowDownloadEnabledDetails { + pub fn new(shared_content_access_level: crate::types::sharing::AccessLevel) -> Self { + SharedLinkSettingsAllowDownloadEnabledDetails { + shared_content_access_level, + shared_content_link: None, + } } - pub fn with_previous_value(mut self, value: crate::types::common::DropboxTimestamp) -> Self { - self.previous_value = Some(value); + pub fn with_shared_content_link(mut self, value: String) -> Self { + self.shared_content_link = Some(value); self } } -const SHARED_LINK_CHANGE_EXPIRY_DETAILS_FIELDS: &[&str] = &["new_value", - "previous_value"]; -impl SharedLinkChangeExpiryDetails { - // no _opt deserializer +const SHARED_LINK_SETTINGS_ALLOW_DOWNLOAD_ENABLED_DETAILS_FIELDS: &[&str] = &["shared_content_access_level", + "shared_content_link"]; +impl SharedLinkSettingsAllowDownloadEnabledDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - ) -> Result { - let mut field_new_value = None; - let mut field_previous_value = None; + optional: bool, + ) -> Result, V::Error> { + let mut field_shared_content_access_level = None; + let mut field_shared_content_link = None; + let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { + nothing = false; match key { - "new_value" => { - if field_new_value.is_some() { - return Err(::serde::de::Error::duplicate_field("new_value")); + "shared_content_access_level" => { + if field_shared_content_access_level.is_some() { + return Err(::serde::de::Error::duplicate_field("shared_content_access_level")); } - field_new_value = Some(map.next_value()?); + field_shared_content_access_level = Some(map.next_value()?); } - "previous_value" => { - if field_previous_value.is_some() { - return Err(::serde::de::Error::duplicate_field("previous_value")); + "shared_content_link" => { + if field_shared_content_link.is_some() { + return Err(::serde::de::Error::duplicate_field("shared_content_link")); } - field_previous_value = Some(map.next_value()?); + field_shared_content_link = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -94707,11 +116972,14 @@ impl SharedLinkChangeExpiryDetails { } } } - let result = SharedLinkChangeExpiryDetails { - new_value: field_new_value.and_then(Option::flatten), - previous_value: field_previous_value.and_then(Option::flatten), + if optional && nothing { + return Ok(None); + } + let result = SharedLinkSettingsAllowDownloadEnabledDetails { + shared_content_access_level: field_shared_content_access_level.ok_or_else(|| ::serde::de::Error::missing_field("shared_content_access_level"))?, + shared_content_link: field_shared_content_link.and_then(Option::flatten), }; - Ok(result) + Ok(Some(result)) } pub(crate) fn internal_serialize( @@ -94719,39 +116987,37 @@ impl SharedLinkChangeExpiryDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - if let Some(val) = &self.new_value { - s.serialize_field("new_value", val)?; - } - if let Some(val) = &self.previous_value { - s.serialize_field("previous_value", val)?; + s.serialize_field("shared_content_access_level", &self.shared_content_access_level)?; + if let Some(val) = &self.shared_content_link { + s.serialize_field("shared_content_link", val)?; } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for SharedLinkChangeExpiryDetails { +impl<'de> ::serde::de::Deserialize<'de> for SharedLinkSettingsAllowDownloadEnabledDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SharedLinkChangeExpiryDetails; + type Value = SharedLinkSettingsAllowDownloadEnabledDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SharedLinkChangeExpiryDetails struct") + f.write_str("a SharedLinkSettingsAllowDownloadEnabledDetails struct") } fn visit_map>(self, map: V) -> Result { - SharedLinkChangeExpiryDetails::internal_deserialize(map) + SharedLinkSettingsAllowDownloadEnabledDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("SharedLinkChangeExpiryDetails", SHARED_LINK_CHANGE_EXPIRY_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("SharedLinkSettingsAllowDownloadEnabledDetails", SHARED_LINK_SETTINGS_ALLOW_DOWNLOAD_ENABLED_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SharedLinkChangeExpiryDetails { +impl ::serde::ser::Serialize for SharedLinkSettingsAllowDownloadEnabledDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SharedLinkChangeExpiryDetails", 2)?; + let mut s = serializer.serialize_struct("SharedLinkSettingsAllowDownloadEnabledDetails", 2)?; self.internal_serialize::(&mut s)?; s.end() } @@ -94759,30 +117025,30 @@ impl ::serde::ser::Serialize for SharedLinkChangeExpiryDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SharedLinkChangeExpiryType { +pub struct SharedLinkSettingsAllowDownloadEnabledType { pub description: String, } -impl SharedLinkChangeExpiryType { +impl SharedLinkSettingsAllowDownloadEnabledType { pub fn new(description: String) -> Self { - SharedLinkChangeExpiryType { + SharedLinkSettingsAllowDownloadEnabledType { description, } } } -const SHARED_LINK_CHANGE_EXPIRY_TYPE_FIELDS: &[&str] = &["description"]; -impl SharedLinkChangeExpiryType { +const SHARED_LINK_SETTINGS_ALLOW_DOWNLOAD_ENABLED_TYPE_FIELDS: &[&str] = &["description"]; +impl SharedLinkSettingsAllowDownloadEnabledType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -94803,7 +117069,7 @@ impl SharedLinkChangeExpiryType { if optional && nothing { return Ok(None); } - let result = SharedLinkChangeExpiryType { + let result = SharedLinkSettingsAllowDownloadEnabledType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -94819,83 +117085,113 @@ impl SharedLinkChangeExpiryType { } } -impl<'de> ::serde::de::Deserialize<'de> for SharedLinkChangeExpiryType { +impl<'de> ::serde::de::Deserialize<'de> for SharedLinkSettingsAllowDownloadEnabledType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SharedLinkChangeExpiryType; + type Value = SharedLinkSettingsAllowDownloadEnabledType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SharedLinkChangeExpiryType struct") + f.write_str("a SharedLinkSettingsAllowDownloadEnabledType struct") } fn visit_map>(self, map: V) -> Result { - SharedLinkChangeExpiryType::internal_deserialize(map) + SharedLinkSettingsAllowDownloadEnabledType::internal_deserialize(map) } } - deserializer.deserialize_struct("SharedLinkChangeExpiryType", SHARED_LINK_CHANGE_EXPIRY_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("SharedLinkSettingsAllowDownloadEnabledType", SHARED_LINK_SETTINGS_ALLOW_DOWNLOAD_ENABLED_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SharedLinkChangeExpiryType { +impl ::serde::ser::Serialize for SharedLinkSettingsAllowDownloadEnabledType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SharedLinkChangeExpiryType", 1)?; + let mut s = serializer.serialize_struct("SharedLinkSettingsAllowDownloadEnabledType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Changed visibility of shared link. +/// Changed the audience of the shared link. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SharedLinkChangeVisibilityDetails { - /// New shared link visibility. - pub new_value: SharedLinkVisibility, - /// Previous shared link visibility. Might be missing due to historical data gap. - pub previous_value: Option, +pub struct SharedLinkSettingsChangeAudienceDetails { + /// Shared content access level. + pub shared_content_access_level: crate::types::sharing::AccessLevel, + /// New link audience value. + pub new_value: crate::types::sharing::LinkAudience, + /// Shared content link. + pub shared_content_link: Option, + /// Previous link audience value. + pub previous_value: Option, } -impl SharedLinkChangeVisibilityDetails { - pub fn new(new_value: SharedLinkVisibility) -> Self { - SharedLinkChangeVisibilityDetails { +impl SharedLinkSettingsChangeAudienceDetails { + pub fn new( + shared_content_access_level: crate::types::sharing::AccessLevel, + new_value: crate::types::sharing::LinkAudience, + ) -> Self { + SharedLinkSettingsChangeAudienceDetails { + shared_content_access_level, new_value, + shared_content_link: None, previous_value: None, } } - pub fn with_previous_value(mut self, value: SharedLinkVisibility) -> Self { + pub fn with_shared_content_link(mut self, value: String) -> Self { + self.shared_content_link = Some(value); + self + } + + pub fn with_previous_value(mut self, value: crate::types::sharing::LinkAudience) -> Self { self.previous_value = Some(value); self } } -const SHARED_LINK_CHANGE_VISIBILITY_DETAILS_FIELDS: &[&str] = &["new_value", - "previous_value"]; -impl SharedLinkChangeVisibilityDetails { +const SHARED_LINK_SETTINGS_CHANGE_AUDIENCE_DETAILS_FIELDS: &[&str] = &["shared_content_access_level", + "new_value", + "shared_content_link", + "previous_value"]; +impl SharedLinkSettingsChangeAudienceDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { + let mut field_shared_content_access_level = None; let mut field_new_value = None; + let mut field_shared_content_link = None; let mut field_previous_value = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { + "shared_content_access_level" => { + if field_shared_content_access_level.is_some() { + return Err(::serde::de::Error::duplicate_field("shared_content_access_level")); + } + field_shared_content_access_level = Some(map.next_value()?); + } "new_value" => { if field_new_value.is_some() { return Err(::serde::de::Error::duplicate_field("new_value")); } field_new_value = Some(map.next_value()?); } + "shared_content_link" => { + if field_shared_content_link.is_some() { + return Err(::serde::de::Error::duplicate_field("shared_content_link")); + } + field_shared_content_link = Some(map.next_value()?); + } "previous_value" => { if field_previous_value.is_some() { return Err(::serde::de::Error::duplicate_field("previous_value")); @@ -94911,8 +117207,10 @@ impl SharedLinkChangeVisibilityDetails { if optional && nothing { return Ok(None); } - let result = SharedLinkChangeVisibilityDetails { + let result = SharedLinkSettingsChangeAudienceDetails { + shared_content_access_level: field_shared_content_access_level.ok_or_else(|| ::serde::de::Error::missing_field("shared_content_access_level"))?, new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, + shared_content_link: field_shared_content_link.and_then(Option::flatten), previous_value: field_previous_value.and_then(Option::flatten), }; Ok(Some(result)) @@ -94923,7 +117221,11 @@ impl SharedLinkChangeVisibilityDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; + s.serialize_field("shared_content_access_level", &self.shared_content_access_level)?; s.serialize_field("new_value", &self.new_value)?; + if let Some(val) = &self.shared_content_link { + s.serialize_field("shared_content_link", val)?; + } if let Some(val) = &self.previous_value { s.serialize_field("previous_value", val)?; } @@ -94931,29 +117233,29 @@ impl SharedLinkChangeVisibilityDetails { } } -impl<'de> ::serde::de::Deserialize<'de> for SharedLinkChangeVisibilityDetails { +impl<'de> ::serde::de::Deserialize<'de> for SharedLinkSettingsChangeAudienceDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SharedLinkChangeVisibilityDetails; + type Value = SharedLinkSettingsChangeAudienceDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SharedLinkChangeVisibilityDetails struct") + f.write_str("a SharedLinkSettingsChangeAudienceDetails struct") } fn visit_map>(self, map: V) -> Result { - SharedLinkChangeVisibilityDetails::internal_deserialize(map) + SharedLinkSettingsChangeAudienceDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("SharedLinkChangeVisibilityDetails", SHARED_LINK_CHANGE_VISIBILITY_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("SharedLinkSettingsChangeAudienceDetails", SHARED_LINK_SETTINGS_CHANGE_AUDIENCE_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SharedLinkChangeVisibilityDetails { +impl ::serde::ser::Serialize for SharedLinkSettingsChangeAudienceDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SharedLinkChangeVisibilityDetails", 2)?; + let mut s = serializer.serialize_struct("SharedLinkSettingsChangeAudienceDetails", 4)?; self.internal_serialize::(&mut s)?; s.end() } @@ -94961,30 +117263,30 @@ impl ::serde::ser::Serialize for SharedLinkChangeVisibilityDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SharedLinkChangeVisibilityType { +pub struct SharedLinkSettingsChangeAudienceType { pub description: String, } -impl SharedLinkChangeVisibilityType { +impl SharedLinkSettingsChangeAudienceType { pub fn new(description: String) -> Self { - SharedLinkChangeVisibilityType { + SharedLinkSettingsChangeAudienceType { description, } } } -const SHARED_LINK_CHANGE_VISIBILITY_TYPE_FIELDS: &[&str] = &["description"]; -impl SharedLinkChangeVisibilityType { +const SHARED_LINK_SETTINGS_CHANGE_AUDIENCE_TYPE_FIELDS: &[&str] = &["description"]; +impl SharedLinkSettingsChangeAudienceType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -95005,7 +117307,7 @@ impl SharedLinkChangeVisibilityType { if optional && nothing { return Ok(None); } - let result = SharedLinkChangeVisibilityType { + let result = SharedLinkSettingsChangeAudienceType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -95021,63 +117323,120 @@ impl SharedLinkChangeVisibilityType { } } -impl<'de> ::serde::de::Deserialize<'de> for SharedLinkChangeVisibilityType { +impl<'de> ::serde::de::Deserialize<'de> for SharedLinkSettingsChangeAudienceType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SharedLinkChangeVisibilityType; + type Value = SharedLinkSettingsChangeAudienceType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SharedLinkChangeVisibilityType struct") + f.write_str("a SharedLinkSettingsChangeAudienceType struct") } fn visit_map>(self, map: V) -> Result { - SharedLinkChangeVisibilityType::internal_deserialize(map) + SharedLinkSettingsChangeAudienceType::internal_deserialize(map) } } - deserializer.deserialize_struct("SharedLinkChangeVisibilityType", SHARED_LINK_CHANGE_VISIBILITY_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("SharedLinkSettingsChangeAudienceType", SHARED_LINK_SETTINGS_CHANGE_AUDIENCE_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SharedLinkChangeVisibilityType { +impl ::serde::ser::Serialize for SharedLinkSettingsChangeAudienceType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SharedLinkChangeVisibilityType", 1)?; + let mut s = serializer.serialize_struct("SharedLinkSettingsChangeAudienceType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Added file/folder to Dropbox from shared link. -#[derive(Debug, Clone, PartialEq, Eq, Default)] +/// Changed the expiration date of the shared link. +#[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SharedLinkCopyDetails { - /// Shared link owner details. Might be missing due to historical data gap. - pub shared_link_owner: Option, +pub struct SharedLinkSettingsChangeExpirationDetails { + /// Shared content access level. + pub shared_content_access_level: crate::types::sharing::AccessLevel, + /// Shared content link. + pub shared_content_link: Option, + /// New shared content link expiration date. Might be missing due to historical data gap. + pub new_value: Option, + /// Previous shared content link expiration date. Might be missing due to historical data gap. + pub previous_value: Option, } -impl SharedLinkCopyDetails { - pub fn with_shared_link_owner(mut self, value: UserLogInfo) -> Self { - self.shared_link_owner = Some(value); +impl SharedLinkSettingsChangeExpirationDetails { + pub fn new(shared_content_access_level: crate::types::sharing::AccessLevel) -> Self { + SharedLinkSettingsChangeExpirationDetails { + shared_content_access_level, + shared_content_link: None, + new_value: None, + previous_value: None, + } + } + + pub fn with_shared_content_link(mut self, value: String) -> Self { + self.shared_content_link = Some(value); + self + } + + pub fn with_new_value(mut self, value: crate::types::common::DropboxTimestamp) -> Self { + self.new_value = Some(value); + self + } + + pub fn with_previous_value(mut self, value: crate::types::common::DropboxTimestamp) -> Self { + self.previous_value = Some(value); self } } -const SHARED_LINK_COPY_DETAILS_FIELDS: &[&str] = &["shared_link_owner"]; -impl SharedLinkCopyDetails { - // no _opt deserializer +const SHARED_LINK_SETTINGS_CHANGE_EXPIRATION_DETAILS_FIELDS: &[&str] = &["shared_content_access_level", + "shared_content_link", + "new_value", + "previous_value"]; +impl SharedLinkSettingsChangeExpirationDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - ) -> Result { - let mut field_shared_link_owner = None; + optional: bool, + ) -> Result, V::Error> { + let mut field_shared_content_access_level = None; + let mut field_shared_content_link = None; + let mut field_new_value = None; + let mut field_previous_value = None; + let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { + nothing = false; match key { - "shared_link_owner" => { - if field_shared_link_owner.is_some() { - return Err(::serde::de::Error::duplicate_field("shared_link_owner")); + "shared_content_access_level" => { + if field_shared_content_access_level.is_some() { + return Err(::serde::de::Error::duplicate_field("shared_content_access_level")); + } + field_shared_content_access_level = Some(map.next_value()?); + } + "shared_content_link" => { + if field_shared_content_link.is_some() { + return Err(::serde::de::Error::duplicate_field("shared_content_link")); + } + field_shared_content_link = Some(map.next_value()?); + } + "new_value" => { + if field_new_value.is_some() { + return Err(::serde::de::Error::duplicate_field("new_value")); + } + field_new_value = Some(map.next_value()?); + } + "previous_value" => { + if field_previous_value.is_some() { + return Err(::serde::de::Error::duplicate_field("previous_value")); } - field_shared_link_owner = Some(map.next_value()?); + field_previous_value = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -95085,10 +117444,16 @@ impl SharedLinkCopyDetails { } } } - let result = SharedLinkCopyDetails { - shared_link_owner: field_shared_link_owner.and_then(Option::flatten), + if optional && nothing { + return Ok(None); + } + let result = SharedLinkSettingsChangeExpirationDetails { + shared_content_access_level: field_shared_content_access_level.ok_or_else(|| ::serde::de::Error::missing_field("shared_content_access_level"))?, + shared_content_link: field_shared_content_link.and_then(Option::flatten), + new_value: field_new_value.and_then(Option::flatten), + previous_value: field_previous_value.and_then(Option::flatten), }; - Ok(result) + Ok(Some(result)) } pub(crate) fn internal_serialize( @@ -95096,36 +117461,43 @@ impl SharedLinkCopyDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - if let Some(val) = &self.shared_link_owner { - s.serialize_field("shared_link_owner", val)?; + s.serialize_field("shared_content_access_level", &self.shared_content_access_level)?; + if let Some(val) = &self.shared_content_link { + s.serialize_field("shared_content_link", val)?; + } + if let Some(val) = &self.new_value { + s.serialize_field("new_value", val)?; + } + if let Some(val) = &self.previous_value { + s.serialize_field("previous_value", val)?; } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for SharedLinkCopyDetails { +impl<'de> ::serde::de::Deserialize<'de> for SharedLinkSettingsChangeExpirationDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SharedLinkCopyDetails; + type Value = SharedLinkSettingsChangeExpirationDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SharedLinkCopyDetails struct") + f.write_str("a SharedLinkSettingsChangeExpirationDetails struct") } fn visit_map>(self, map: V) -> Result { - SharedLinkCopyDetails::internal_deserialize(map) + SharedLinkSettingsChangeExpirationDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("SharedLinkCopyDetails", SHARED_LINK_COPY_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("SharedLinkSettingsChangeExpirationDetails", SHARED_LINK_SETTINGS_CHANGE_EXPIRATION_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SharedLinkCopyDetails { +impl ::serde::ser::Serialize for SharedLinkSettingsChangeExpirationDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SharedLinkCopyDetails", 1)?; + let mut s = serializer.serialize_struct("SharedLinkSettingsChangeExpirationDetails", 4)?; self.internal_serialize::(&mut s)?; s.end() } @@ -95133,30 +117505,30 @@ impl ::serde::ser::Serialize for SharedLinkCopyDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SharedLinkCopyType { +pub struct SharedLinkSettingsChangeExpirationType { pub description: String, } -impl SharedLinkCopyType { +impl SharedLinkSettingsChangeExpirationType { pub fn new(description: String) -> Self { - SharedLinkCopyType { + SharedLinkSettingsChangeExpirationType { description, } } } -const SHARED_LINK_COPY_TYPE_FIELDS: &[&str] = &["description"]; -impl SharedLinkCopyType { +const SHARED_LINK_SETTINGS_CHANGE_EXPIRATION_TYPE_FIELDS: &[&str] = &["description"]; +impl SharedLinkSettingsChangeExpirationType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -95177,7 +117549,7 @@ impl SharedLinkCopyType { if optional && nothing { return Ok(None); } - let result = SharedLinkCopyType { + let result = SharedLinkSettingsChangeExpirationType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -95193,63 +117565,88 @@ impl SharedLinkCopyType { } } -impl<'de> ::serde::de::Deserialize<'de> for SharedLinkCopyType { +impl<'de> ::serde::de::Deserialize<'de> for SharedLinkSettingsChangeExpirationType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SharedLinkCopyType; + type Value = SharedLinkSettingsChangeExpirationType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SharedLinkCopyType struct") + f.write_str("a SharedLinkSettingsChangeExpirationType struct") } fn visit_map>(self, map: V) -> Result { - SharedLinkCopyType::internal_deserialize(map) + SharedLinkSettingsChangeExpirationType::internal_deserialize(map) } } - deserializer.deserialize_struct("SharedLinkCopyType", SHARED_LINK_COPY_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("SharedLinkSettingsChangeExpirationType", SHARED_LINK_SETTINGS_CHANGE_EXPIRATION_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SharedLinkCopyType { +impl ::serde::ser::Serialize for SharedLinkSettingsChangeExpirationType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SharedLinkCopyType", 1)?; + let mut s = serializer.serialize_struct("SharedLinkSettingsChangeExpirationType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Created shared link. -#[derive(Debug, Clone, PartialEq, Eq, Default)] +/// Changed the password of the shared link. +#[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SharedLinkCreateDetails { - /// Defines who can access the shared link. Might be missing due to historical data gap. - pub shared_link_access_level: Option, +pub struct SharedLinkSettingsChangePasswordDetails { + /// Shared content access level. + pub shared_content_access_level: crate::types::sharing::AccessLevel, + /// Shared content link. + pub shared_content_link: Option, } -impl SharedLinkCreateDetails { - pub fn with_shared_link_access_level(mut self, value: SharedLinkAccessLevel) -> Self { - self.shared_link_access_level = Some(value); +impl SharedLinkSettingsChangePasswordDetails { + pub fn new(shared_content_access_level: crate::types::sharing::AccessLevel) -> Self { + SharedLinkSettingsChangePasswordDetails { + shared_content_access_level, + shared_content_link: None, + } + } + + pub fn with_shared_content_link(mut self, value: String) -> Self { + self.shared_content_link = Some(value); self } } -const SHARED_LINK_CREATE_DETAILS_FIELDS: &[&str] = &["shared_link_access_level"]; -impl SharedLinkCreateDetails { - // no _opt deserializer +const SHARED_LINK_SETTINGS_CHANGE_PASSWORD_DETAILS_FIELDS: &[&str] = &["shared_content_access_level", + "shared_content_link"]; +impl SharedLinkSettingsChangePasswordDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - ) -> Result { - let mut field_shared_link_access_level = None; + optional: bool, + ) -> Result, V::Error> { + let mut field_shared_content_access_level = None; + let mut field_shared_content_link = None; + let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { + nothing = false; match key { - "shared_link_access_level" => { - if field_shared_link_access_level.is_some() { - return Err(::serde::de::Error::duplicate_field("shared_link_access_level")); + "shared_content_access_level" => { + if field_shared_content_access_level.is_some() { + return Err(::serde::de::Error::duplicate_field("shared_content_access_level")); } - field_shared_link_access_level = Some(map.next_value()?); + field_shared_content_access_level = Some(map.next_value()?); + } + "shared_content_link" => { + if field_shared_content_link.is_some() { + return Err(::serde::de::Error::duplicate_field("shared_content_link")); + } + field_shared_content_link = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -95257,10 +117654,14 @@ impl SharedLinkCreateDetails { } } } - let result = SharedLinkCreateDetails { - shared_link_access_level: field_shared_link_access_level.and_then(Option::flatten), + if optional && nothing { + return Ok(None); + } + let result = SharedLinkSettingsChangePasswordDetails { + shared_content_access_level: field_shared_content_access_level.ok_or_else(|| ::serde::de::Error::missing_field("shared_content_access_level"))?, + shared_content_link: field_shared_content_link.and_then(Option::flatten), }; - Ok(result) + Ok(Some(result)) } pub(crate) fn internal_serialize( @@ -95268,36 +117669,37 @@ impl SharedLinkCreateDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - if let Some(val) = &self.shared_link_access_level { - s.serialize_field("shared_link_access_level", val)?; + s.serialize_field("shared_content_access_level", &self.shared_content_access_level)?; + if let Some(val) = &self.shared_content_link { + s.serialize_field("shared_content_link", val)?; } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for SharedLinkCreateDetails { +impl<'de> ::serde::de::Deserialize<'de> for SharedLinkSettingsChangePasswordDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SharedLinkCreateDetails; + type Value = SharedLinkSettingsChangePasswordDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SharedLinkCreateDetails struct") + f.write_str("a SharedLinkSettingsChangePasswordDetails struct") } fn visit_map>(self, map: V) -> Result { - SharedLinkCreateDetails::internal_deserialize(map) + SharedLinkSettingsChangePasswordDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("SharedLinkCreateDetails", SHARED_LINK_CREATE_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("SharedLinkSettingsChangePasswordDetails", SHARED_LINK_SETTINGS_CHANGE_PASSWORD_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SharedLinkCreateDetails { +impl ::serde::ser::Serialize for SharedLinkSettingsChangePasswordDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SharedLinkCreateDetails", 1)?; + let mut s = serializer.serialize_struct("SharedLinkSettingsChangePasswordDetails", 2)?; self.internal_serialize::(&mut s)?; s.end() } @@ -95305,30 +117707,30 @@ impl ::serde::ser::Serialize for SharedLinkCreateDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SharedLinkCreateType { +pub struct SharedLinkSettingsChangePasswordType { pub description: String, } -impl SharedLinkCreateType { +impl SharedLinkSettingsChangePasswordType { pub fn new(description: String) -> Self { - SharedLinkCreateType { + SharedLinkSettingsChangePasswordType { description, } } } -const SHARED_LINK_CREATE_TYPE_FIELDS: &[&str] = &["description"]; -impl SharedLinkCreateType { +const SHARED_LINK_SETTINGS_CHANGE_PASSWORD_TYPE_FIELDS: &[&str] = &["description"]; +impl SharedLinkSettingsChangePasswordType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -95349,7 +117751,7 @@ impl SharedLinkCreateType { if optional && nothing { return Ok(None); } - let result = SharedLinkCreateType { + let result = SharedLinkSettingsChangePasswordType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -95365,63 +117767,104 @@ impl SharedLinkCreateType { } } -impl<'de> ::serde::de::Deserialize<'de> for SharedLinkCreateType { +impl<'de> ::serde::de::Deserialize<'de> for SharedLinkSettingsChangePasswordType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SharedLinkCreateType; + type Value = SharedLinkSettingsChangePasswordType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SharedLinkCreateType struct") + f.write_str("a SharedLinkSettingsChangePasswordType struct") } fn visit_map>(self, map: V) -> Result { - SharedLinkCreateType::internal_deserialize(map) + SharedLinkSettingsChangePasswordType::internal_deserialize(map) } } - deserializer.deserialize_struct("SharedLinkCreateType", SHARED_LINK_CREATE_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("SharedLinkSettingsChangePasswordType", SHARED_LINK_SETTINGS_CHANGE_PASSWORD_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SharedLinkCreateType { +impl ::serde::ser::Serialize for SharedLinkSettingsChangePasswordType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SharedLinkCreateType", 1)?; + let mut s = serializer.serialize_struct("SharedLinkSettingsChangePasswordType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Removed shared link. -#[derive(Debug, Clone, PartialEq, Eq, Default)] +/// Removed the expiration date from the shared link. +#[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SharedLinkDisableDetails { - /// Shared link owner details. Might be missing due to historical data gap. - pub shared_link_owner: Option, +pub struct SharedLinkSettingsRemoveExpirationDetails { + /// Shared content access level. + pub shared_content_access_level: crate::types::sharing::AccessLevel, + /// Shared content link. + pub shared_content_link: Option, + /// Previous shared link expiration date. Might be missing due to historical data gap. + pub previous_value: Option, } -impl SharedLinkDisableDetails { - pub fn with_shared_link_owner(mut self, value: UserLogInfo) -> Self { - self.shared_link_owner = Some(value); +impl SharedLinkSettingsRemoveExpirationDetails { + pub fn new(shared_content_access_level: crate::types::sharing::AccessLevel) -> Self { + SharedLinkSettingsRemoveExpirationDetails { + shared_content_access_level, + shared_content_link: None, + previous_value: None, + } + } + + pub fn with_shared_content_link(mut self, value: String) -> Self { + self.shared_content_link = Some(value); + self + } + + pub fn with_previous_value(mut self, value: crate::types::common::DropboxTimestamp) -> Self { + self.previous_value = Some(value); self } } -const SHARED_LINK_DISABLE_DETAILS_FIELDS: &[&str] = &["shared_link_owner"]; -impl SharedLinkDisableDetails { - // no _opt deserializer +const SHARED_LINK_SETTINGS_REMOVE_EXPIRATION_DETAILS_FIELDS: &[&str] = &["shared_content_access_level", + "shared_content_link", + "previous_value"]; +impl SharedLinkSettingsRemoveExpirationDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - ) -> Result { - let mut field_shared_link_owner = None; + optional: bool, + ) -> Result, V::Error> { + let mut field_shared_content_access_level = None; + let mut field_shared_content_link = None; + let mut field_previous_value = None; + let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { + nothing = false; match key { - "shared_link_owner" => { - if field_shared_link_owner.is_some() { - return Err(::serde::de::Error::duplicate_field("shared_link_owner")); + "shared_content_access_level" => { + if field_shared_content_access_level.is_some() { + return Err(::serde::de::Error::duplicate_field("shared_content_access_level")); } - field_shared_link_owner = Some(map.next_value()?); + field_shared_content_access_level = Some(map.next_value()?); + } + "shared_content_link" => { + if field_shared_content_link.is_some() { + return Err(::serde::de::Error::duplicate_field("shared_content_link")); + } + field_shared_content_link = Some(map.next_value()?); + } + "previous_value" => { + if field_previous_value.is_some() { + return Err(::serde::de::Error::duplicate_field("previous_value")); + } + field_previous_value = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -95429,10 +117872,15 @@ impl SharedLinkDisableDetails { } } } - let result = SharedLinkDisableDetails { - shared_link_owner: field_shared_link_owner.and_then(Option::flatten), + if optional && nothing { + return Ok(None); + } + let result = SharedLinkSettingsRemoveExpirationDetails { + shared_content_access_level: field_shared_content_access_level.ok_or_else(|| ::serde::de::Error::missing_field("shared_content_access_level"))?, + shared_content_link: field_shared_content_link.and_then(Option::flatten), + previous_value: field_previous_value.and_then(Option::flatten), }; - Ok(result) + Ok(Some(result)) } pub(crate) fn internal_serialize( @@ -95440,36 +117888,40 @@ impl SharedLinkDisableDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - if let Some(val) = &self.shared_link_owner { - s.serialize_field("shared_link_owner", val)?; + s.serialize_field("shared_content_access_level", &self.shared_content_access_level)?; + if let Some(val) = &self.shared_content_link { + s.serialize_field("shared_content_link", val)?; + } + if let Some(val) = &self.previous_value { + s.serialize_field("previous_value", val)?; } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for SharedLinkDisableDetails { +impl<'de> ::serde::de::Deserialize<'de> for SharedLinkSettingsRemoveExpirationDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SharedLinkDisableDetails; + type Value = SharedLinkSettingsRemoveExpirationDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SharedLinkDisableDetails struct") + f.write_str("a SharedLinkSettingsRemoveExpirationDetails struct") } fn visit_map>(self, map: V) -> Result { - SharedLinkDisableDetails::internal_deserialize(map) + SharedLinkSettingsRemoveExpirationDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("SharedLinkDisableDetails", SHARED_LINK_DISABLE_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("SharedLinkSettingsRemoveExpirationDetails", SHARED_LINK_SETTINGS_REMOVE_EXPIRATION_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SharedLinkDisableDetails { +impl ::serde::ser::Serialize for SharedLinkSettingsRemoveExpirationDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SharedLinkDisableDetails", 1)?; + let mut s = serializer.serialize_struct("SharedLinkSettingsRemoveExpirationDetails", 3)?; self.internal_serialize::(&mut s)?; s.end() } @@ -95477,30 +117929,30 @@ impl ::serde::ser::Serialize for SharedLinkDisableDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SharedLinkDisableType { +pub struct SharedLinkSettingsRemoveExpirationType { pub description: String, } -impl SharedLinkDisableType { +impl SharedLinkSettingsRemoveExpirationType { pub fn new(description: String) -> Self { - SharedLinkDisableType { + SharedLinkSettingsRemoveExpirationType { description, } } } -const SHARED_LINK_DISABLE_TYPE_FIELDS: &[&str] = &["description"]; -impl SharedLinkDisableType { +const SHARED_LINK_SETTINGS_REMOVE_EXPIRATION_TYPE_FIELDS: &[&str] = &["description"]; +impl SharedLinkSettingsRemoveExpirationType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -95521,7 +117973,7 @@ impl SharedLinkDisableType { if optional && nothing { return Ok(None); } - let result = SharedLinkDisableType { + let result = SharedLinkSettingsRemoveExpirationType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -95537,63 +117989,88 @@ impl SharedLinkDisableType { } } -impl<'de> ::serde::de::Deserialize<'de> for SharedLinkDisableType { +impl<'de> ::serde::de::Deserialize<'de> for SharedLinkSettingsRemoveExpirationType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SharedLinkDisableType; + type Value = SharedLinkSettingsRemoveExpirationType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SharedLinkDisableType struct") + f.write_str("a SharedLinkSettingsRemoveExpirationType struct") } fn visit_map>(self, map: V) -> Result { - SharedLinkDisableType::internal_deserialize(map) + SharedLinkSettingsRemoveExpirationType::internal_deserialize(map) } } - deserializer.deserialize_struct("SharedLinkDisableType", SHARED_LINK_DISABLE_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("SharedLinkSettingsRemoveExpirationType", SHARED_LINK_SETTINGS_REMOVE_EXPIRATION_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SharedLinkDisableType { +impl ::serde::ser::Serialize for SharedLinkSettingsRemoveExpirationType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SharedLinkDisableType", 1)?; + let mut s = serializer.serialize_struct("SharedLinkSettingsRemoveExpirationType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Downloaded file/folder from shared link. -#[derive(Debug, Clone, PartialEq, Eq, Default)] +/// Removed the password from the shared link. +#[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SharedLinkDownloadDetails { - /// Shared link owner details. Might be missing due to historical data gap. - pub shared_link_owner: Option, +pub struct SharedLinkSettingsRemovePasswordDetails { + /// Shared content access level. + pub shared_content_access_level: crate::types::sharing::AccessLevel, + /// Shared content link. + pub shared_content_link: Option, } -impl SharedLinkDownloadDetails { - pub fn with_shared_link_owner(mut self, value: UserLogInfo) -> Self { - self.shared_link_owner = Some(value); +impl SharedLinkSettingsRemovePasswordDetails { + pub fn new(shared_content_access_level: crate::types::sharing::AccessLevel) -> Self { + SharedLinkSettingsRemovePasswordDetails { + shared_content_access_level, + shared_content_link: None, + } + } + + pub fn with_shared_content_link(mut self, value: String) -> Self { + self.shared_content_link = Some(value); self } } -const SHARED_LINK_DOWNLOAD_DETAILS_FIELDS: &[&str] = &["shared_link_owner"]; -impl SharedLinkDownloadDetails { - // no _opt deserializer +const SHARED_LINK_SETTINGS_REMOVE_PASSWORD_DETAILS_FIELDS: &[&str] = &["shared_content_access_level", + "shared_content_link"]; +impl SharedLinkSettingsRemovePasswordDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - ) -> Result { - let mut field_shared_link_owner = None; + optional: bool, + ) -> Result, V::Error> { + let mut field_shared_content_access_level = None; + let mut field_shared_content_link = None; + let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { + nothing = false; match key { - "shared_link_owner" => { - if field_shared_link_owner.is_some() { - return Err(::serde::de::Error::duplicate_field("shared_link_owner")); + "shared_content_access_level" => { + if field_shared_content_access_level.is_some() { + return Err(::serde::de::Error::duplicate_field("shared_content_access_level")); } - field_shared_link_owner = Some(map.next_value()?); + field_shared_content_access_level = Some(map.next_value()?); + } + "shared_content_link" => { + if field_shared_content_link.is_some() { + return Err(::serde::de::Error::duplicate_field("shared_content_link")); + } + field_shared_content_link = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -95601,10 +118078,14 @@ impl SharedLinkDownloadDetails { } } } - let result = SharedLinkDownloadDetails { - shared_link_owner: field_shared_link_owner.and_then(Option::flatten), + if optional && nothing { + return Ok(None); + } + let result = SharedLinkSettingsRemovePasswordDetails { + shared_content_access_level: field_shared_content_access_level.ok_or_else(|| ::serde::de::Error::missing_field("shared_content_access_level"))?, + shared_content_link: field_shared_content_link.and_then(Option::flatten), }; - Ok(result) + Ok(Some(result)) } pub(crate) fn internal_serialize( @@ -95612,36 +118093,37 @@ impl SharedLinkDownloadDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - if let Some(val) = &self.shared_link_owner { - s.serialize_field("shared_link_owner", val)?; + s.serialize_field("shared_content_access_level", &self.shared_content_access_level)?; + if let Some(val) = &self.shared_content_link { + s.serialize_field("shared_content_link", val)?; } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for SharedLinkDownloadDetails { +impl<'de> ::serde::de::Deserialize<'de> for SharedLinkSettingsRemovePasswordDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SharedLinkDownloadDetails; + type Value = SharedLinkSettingsRemovePasswordDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SharedLinkDownloadDetails struct") + f.write_str("a SharedLinkSettingsRemovePasswordDetails struct") } fn visit_map>(self, map: V) -> Result { - SharedLinkDownloadDetails::internal_deserialize(map) + SharedLinkSettingsRemovePasswordDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("SharedLinkDownloadDetails", SHARED_LINK_DOWNLOAD_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("SharedLinkSettingsRemovePasswordDetails", SHARED_LINK_SETTINGS_REMOVE_PASSWORD_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SharedLinkDownloadDetails { +impl ::serde::ser::Serialize for SharedLinkSettingsRemovePasswordDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SharedLinkDownloadDetails", 1)?; + let mut s = serializer.serialize_struct("SharedLinkSettingsRemovePasswordDetails", 2)?; self.internal_serialize::(&mut s)?; s.end() } @@ -95649,30 +118131,30 @@ impl ::serde::ser::Serialize for SharedLinkDownloadDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SharedLinkDownloadType { +pub struct SharedLinkSettingsRemovePasswordType { pub description: String, } -impl SharedLinkDownloadType { +impl SharedLinkSettingsRemovePasswordType { pub fn new(description: String) -> Self { - SharedLinkDownloadType { + SharedLinkSettingsRemovePasswordType { description, } } } -const SHARED_LINK_DOWNLOAD_TYPE_FIELDS: &[&str] = &["description"]; -impl SharedLinkDownloadType { +const SHARED_LINK_SETTINGS_REMOVE_PASSWORD_TYPE_FIELDS: &[&str] = &["description"]; +impl SharedLinkSettingsRemovePasswordType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -95693,7 +118175,7 @@ impl SharedLinkDownloadType { if optional && nothing { return Ok(None); } - let result = SharedLinkDownloadType { + let result = SharedLinkSettingsRemovePasswordType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -95709,63 +118191,78 @@ impl SharedLinkDownloadType { } } -impl<'de> ::serde::de::Deserialize<'de> for SharedLinkDownloadType { +impl<'de> ::serde::de::Deserialize<'de> for SharedLinkSettingsRemovePasswordType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SharedLinkDownloadType; + type Value = SharedLinkSettingsRemovePasswordType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SharedLinkDownloadType struct") + f.write_str("a SharedLinkSettingsRemovePasswordType struct") } fn visit_map>(self, map: V) -> Result { - SharedLinkDownloadType::internal_deserialize(map) + SharedLinkSettingsRemovePasswordType::internal_deserialize(map) } } - deserializer.deserialize_struct("SharedLinkDownloadType", SHARED_LINK_DOWNLOAD_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("SharedLinkSettingsRemovePasswordType", SHARED_LINK_SETTINGS_REMOVE_PASSWORD_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SharedLinkDownloadType { +impl ::serde::ser::Serialize for SharedLinkSettingsRemovePasswordType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SharedLinkDownloadType", 1)?; + let mut s = serializer.serialize_struct("SharedLinkSettingsRemovePasswordType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Removed shared link expiration date. +/// Added members as audience of shared link. #[derive(Debug, Clone, PartialEq, Eq, Default)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SharedLinkRemoveExpiryDetails { - /// Previous shared link expiration date. Might be missing due to historical data gap. - pub previous_value: Option, +pub struct SharedLinkShareDetails { + /// Shared link owner details. Might be missing due to historical data gap. + pub shared_link_owner: Option, + /// Users without a Dropbox account that were added as shared link audience. + pub external_users: Option>, } -impl SharedLinkRemoveExpiryDetails { - pub fn with_previous_value(mut self, value: crate::types::common::DropboxTimestamp) -> Self { - self.previous_value = Some(value); +impl SharedLinkShareDetails { + pub fn with_shared_link_owner(mut self, value: UserLogInfo) -> Self { + self.shared_link_owner = Some(value); + self + } + + pub fn with_external_users(mut self, value: Vec) -> Self { + self.external_users = Some(value); self } } -const SHARED_LINK_REMOVE_EXPIRY_DETAILS_FIELDS: &[&str] = &["previous_value"]; -impl SharedLinkRemoveExpiryDetails { +const SHARED_LINK_SHARE_DETAILS_FIELDS: &[&str] = &["shared_link_owner", + "external_users"]; +impl SharedLinkShareDetails { // no _opt deserializer pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - ) -> Result { - let mut field_previous_value = None; + ) -> Result { + let mut field_shared_link_owner = None; + let mut field_external_users = None; while let Some(key) = map.next_key::<&str>()? { match key { - "previous_value" => { - if field_previous_value.is_some() { - return Err(::serde::de::Error::duplicate_field("previous_value")); + "shared_link_owner" => { + if field_shared_link_owner.is_some() { + return Err(::serde::de::Error::duplicate_field("shared_link_owner")); } - field_previous_value = Some(map.next_value()?); + field_shared_link_owner = Some(map.next_value()?); + } + "external_users" => { + if field_external_users.is_some() { + return Err(::serde::de::Error::duplicate_field("external_users")); + } + field_external_users = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -95773,8 +118270,9 @@ impl SharedLinkRemoveExpiryDetails { } } } - let result = SharedLinkRemoveExpiryDetails { - previous_value: field_previous_value.and_then(Option::flatten), + let result = SharedLinkShareDetails { + shared_link_owner: field_shared_link_owner.and_then(Option::flatten), + external_users: field_external_users.and_then(Option::flatten), }; Ok(result) } @@ -95784,36 +118282,39 @@ impl SharedLinkRemoveExpiryDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - if let Some(val) = &self.previous_value { - s.serialize_field("previous_value", val)?; + if let Some(val) = &self.shared_link_owner { + s.serialize_field("shared_link_owner", val)?; + } + if let Some(val) = &self.external_users { + s.serialize_field("external_users", val)?; } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for SharedLinkRemoveExpiryDetails { +impl<'de> ::serde::de::Deserialize<'de> for SharedLinkShareDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SharedLinkRemoveExpiryDetails; + type Value = SharedLinkShareDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SharedLinkRemoveExpiryDetails struct") + f.write_str("a SharedLinkShareDetails struct") } fn visit_map>(self, map: V) -> Result { - SharedLinkRemoveExpiryDetails::internal_deserialize(map) + SharedLinkShareDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("SharedLinkRemoveExpiryDetails", SHARED_LINK_REMOVE_EXPIRY_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("SharedLinkShareDetails", SHARED_LINK_SHARE_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SharedLinkRemoveExpiryDetails { +impl ::serde::ser::Serialize for SharedLinkShareDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SharedLinkRemoveExpiryDetails", 1)?; + let mut s = serializer.serialize_struct("SharedLinkShareDetails", 2)?; self.internal_serialize::(&mut s)?; s.end() } @@ -95821,30 +118322,30 @@ impl ::serde::ser::Serialize for SharedLinkRemoveExpiryDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SharedLinkRemoveExpiryType { +pub struct SharedLinkShareType { pub description: String, } -impl SharedLinkRemoveExpiryType { +impl SharedLinkShareType { pub fn new(description: String) -> Self { - SharedLinkRemoveExpiryType { + SharedLinkShareType { description, } } } -const SHARED_LINK_REMOVE_EXPIRY_TYPE_FIELDS: &[&str] = &["description"]; -impl SharedLinkRemoveExpiryType { +const SHARED_LINK_SHARE_TYPE_FIELDS: &[&str] = &["description"]; +impl SharedLinkShareType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -95865,7 +118366,7 @@ impl SharedLinkRemoveExpiryType { if optional && nothing { return Ok(None); } - let result = SharedLinkRemoveExpiryType { + let result = SharedLinkShareType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -95881,104 +118382,63 @@ impl SharedLinkRemoveExpiryType { } } -impl<'de> ::serde::de::Deserialize<'de> for SharedLinkRemoveExpiryType { +impl<'de> ::serde::de::Deserialize<'de> for SharedLinkShareType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SharedLinkRemoveExpiryType; + type Value = SharedLinkShareType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SharedLinkRemoveExpiryType struct") + f.write_str("a SharedLinkShareType struct") } fn visit_map>(self, map: V) -> Result { - SharedLinkRemoveExpiryType::internal_deserialize(map) + SharedLinkShareType::internal_deserialize(map) } } - deserializer.deserialize_struct("SharedLinkRemoveExpiryType", SHARED_LINK_REMOVE_EXPIRY_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("SharedLinkShareType", SHARED_LINK_SHARE_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SharedLinkRemoveExpiryType { +impl ::serde::ser::Serialize for SharedLinkShareType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SharedLinkRemoveExpiryType", 1)?; + let mut s = serializer.serialize_struct("SharedLinkShareType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Added an expiration date to the shared link. -#[derive(Debug, Clone, PartialEq, Eq)] +/// Opened shared link. +#[derive(Debug, Clone, PartialEq, Eq, Default)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SharedLinkSettingsAddExpirationDetails { - /// Shared content access level. - pub shared_content_access_level: crate::types::sharing::AccessLevel, - /// Shared content link. - pub shared_content_link: Option, - /// New shared content link expiration date. Might be missing due to historical data gap. - pub new_value: Option, +pub struct SharedLinkViewDetails { + /// Shared link owner details. Might be missing due to historical data gap. + pub shared_link_owner: Option, } -impl SharedLinkSettingsAddExpirationDetails { - pub fn new(shared_content_access_level: crate::types::sharing::AccessLevel) -> Self { - SharedLinkSettingsAddExpirationDetails { - shared_content_access_level, - shared_content_link: None, - new_value: None, - } - } - - pub fn with_shared_content_link(mut self, value: String) -> Self { - self.shared_content_link = Some(value); - self - } - - pub fn with_new_value(mut self, value: crate::types::common::DropboxTimestamp) -> Self { - self.new_value = Some(value); +impl SharedLinkViewDetails { + pub fn with_shared_link_owner(mut self, value: UserLogInfo) -> Self { + self.shared_link_owner = Some(value); self } } -const SHARED_LINK_SETTINGS_ADD_EXPIRATION_DETAILS_FIELDS: &[&str] = &["shared_content_access_level", - "shared_content_link", - "new_value"]; -impl SharedLinkSettingsAddExpirationDetails { +const SHARED_LINK_VIEW_DETAILS_FIELDS: &[&str] = &["shared_link_owner"]; +impl SharedLinkViewDetails { + // no _opt deserializer pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( - map: V, - ) -> Result { - Self::internal_deserialize_opt(map, false).map(Option::unwrap) - } - - pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - optional: bool, - ) -> Result, V::Error> { - let mut field_shared_content_access_level = None; - let mut field_shared_content_link = None; - let mut field_new_value = None; - let mut nothing = true; + ) -> Result { + let mut field_shared_link_owner = None; while let Some(key) = map.next_key::<&str>()? { - nothing = false; match key { - "shared_content_access_level" => { - if field_shared_content_access_level.is_some() { - return Err(::serde::de::Error::duplicate_field("shared_content_access_level")); - } - field_shared_content_access_level = Some(map.next_value()?); - } - "shared_content_link" => { - if field_shared_content_link.is_some() { - return Err(::serde::de::Error::duplicate_field("shared_content_link")); - } - field_shared_content_link = Some(map.next_value()?); - } - "new_value" => { - if field_new_value.is_some() { - return Err(::serde::de::Error::duplicate_field("new_value")); + "shared_link_owner" => { + if field_shared_link_owner.is_some() { + return Err(::serde::de::Error::duplicate_field("shared_link_owner")); } - field_new_value = Some(map.next_value()?); + field_shared_link_owner = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -95986,15 +118446,10 @@ impl SharedLinkSettingsAddExpirationDetails { } } } - if optional && nothing { - return Ok(None); - } - let result = SharedLinkSettingsAddExpirationDetails { - shared_content_access_level: field_shared_content_access_level.ok_or_else(|| ::serde::de::Error::missing_field("shared_content_access_level"))?, - shared_content_link: field_shared_content_link.and_then(Option::flatten), - new_value: field_new_value.and_then(Option::flatten), + let result = SharedLinkViewDetails { + shared_link_owner: field_shared_link_owner.and_then(Option::flatten), }; - Ok(Some(result)) + Ok(result) } pub(crate) fn internal_serialize( @@ -96002,40 +118457,36 @@ impl SharedLinkSettingsAddExpirationDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("shared_content_access_level", &self.shared_content_access_level)?; - if let Some(val) = &self.shared_content_link { - s.serialize_field("shared_content_link", val)?; - } - if let Some(val) = &self.new_value { - s.serialize_field("new_value", val)?; + if let Some(val) = &self.shared_link_owner { + s.serialize_field("shared_link_owner", val)?; } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for SharedLinkSettingsAddExpirationDetails { +impl<'de> ::serde::de::Deserialize<'de> for SharedLinkViewDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SharedLinkSettingsAddExpirationDetails; + type Value = SharedLinkViewDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SharedLinkSettingsAddExpirationDetails struct") + f.write_str("a SharedLinkViewDetails struct") } fn visit_map>(self, map: V) -> Result { - SharedLinkSettingsAddExpirationDetails::internal_deserialize(map) + SharedLinkViewDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("SharedLinkSettingsAddExpirationDetails", SHARED_LINK_SETTINGS_ADD_EXPIRATION_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("SharedLinkViewDetails", SHARED_LINK_VIEW_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SharedLinkSettingsAddExpirationDetails { +impl ::serde::ser::Serialize for SharedLinkViewDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SharedLinkSettingsAddExpirationDetails", 3)?; + let mut s = serializer.serialize_struct("SharedLinkViewDetails", 1)?; self.internal_serialize::(&mut s)?; s.end() } @@ -96043,30 +118494,30 @@ impl ::serde::ser::Serialize for SharedLinkSettingsAddExpirationDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SharedLinkSettingsAddExpirationType { +pub struct SharedLinkViewType { pub description: String, } -impl SharedLinkSettingsAddExpirationType { +impl SharedLinkViewType { pub fn new(description: String) -> Self { - SharedLinkSettingsAddExpirationType { + SharedLinkViewType { description, } } } -const SHARED_LINK_SETTINGS_ADD_EXPIRATION_TYPE_FIELDS: &[&str] = &["description"]; -impl SharedLinkSettingsAddExpirationType { +const SHARED_LINK_VIEW_TYPE_FIELDS: &[&str] = &["description"]; +impl SharedLinkViewType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -96087,7 +118538,7 @@ impl SharedLinkSettingsAddExpirationType { if optional && nothing { return Ok(None); } - let result = SharedLinkSettingsAddExpirationType { + let result = SharedLinkViewType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -96103,172 +118554,186 @@ impl SharedLinkSettingsAddExpirationType { } } -impl<'de> ::serde::de::Deserialize<'de> for SharedLinkSettingsAddExpirationType { +impl<'de> ::serde::de::Deserialize<'de> for SharedLinkViewType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SharedLinkSettingsAddExpirationType; + type Value = SharedLinkViewType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SharedLinkSettingsAddExpirationType struct") + f.write_str("a SharedLinkViewType struct") } fn visit_map>(self, map: V) -> Result { - SharedLinkSettingsAddExpirationType::internal_deserialize(map) + SharedLinkViewType::internal_deserialize(map) } } - deserializer.deserialize_struct("SharedLinkSettingsAddExpirationType", SHARED_LINK_SETTINGS_ADD_EXPIRATION_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("SharedLinkViewType", SHARED_LINK_VIEW_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SharedLinkSettingsAddExpirationType { +impl ::serde::ser::Serialize for SharedLinkViewType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SharedLinkSettingsAddExpirationType", 1)?; + let mut s = serializer.serialize_struct("SharedLinkViewType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Added a password to the shared link. +/// Defines who has access to a shared link. #[derive(Debug, Clone, PartialEq, Eq)] -#[non_exhaustive] // structs may have more fields added in the future. -pub struct SharedLinkSettingsAddPasswordDetails { - /// Shared content access level. - pub shared_content_access_level: crate::types::sharing::AccessLevel, - /// Shared content link. - pub shared_content_link: Option, +#[non_exhaustive] // variants may be added in the future +pub enum SharedLinkVisibility { + NoOne, + Password, + Public, + TeamOnly, + /// Catch-all used for unrecognized values returned from the server. Encountering this value + /// typically indicates that this SDK version is out of date. + Other, } -impl SharedLinkSettingsAddPasswordDetails { - pub fn new(shared_content_access_level: crate::types::sharing::AccessLevel) -> Self { - SharedLinkSettingsAddPasswordDetails { - shared_content_access_level, - shared_content_link: None, +impl<'de> ::serde::de::Deserialize<'de> for SharedLinkVisibility { + fn deserialize>(deserializer: D) -> Result { + // union deserializer + use serde::de::{self, MapAccess, Visitor}; + struct EnumVisitor; + impl<'de> Visitor<'de> for EnumVisitor { + type Value = SharedLinkVisibility; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a SharedLinkVisibility structure") + } + fn visit_map>(self, mut map: V) -> Result { + let tag: &str = match map.next_key()? { + Some(".tag") => map.next_value()?, + _ => return Err(de::Error::missing_field(".tag")) + }; + let value = match tag { + "no_one" => SharedLinkVisibility::NoOne, + "password" => SharedLinkVisibility::Password, + "public" => SharedLinkVisibility::Public, + "team_only" => SharedLinkVisibility::TeamOnly, + _ => SharedLinkVisibility::Other, + }; + crate::eat_json_fields(&mut map)?; + Ok(value) + } } - } - - pub fn with_shared_content_link(mut self, value: String) -> Self { - self.shared_content_link = Some(value); - self + const VARIANTS: &[&str] = &["no_one", + "password", + "public", + "team_only", + "other"]; + deserializer.deserialize_struct("SharedLinkVisibility", VARIANTS, EnumVisitor) } } -const SHARED_LINK_SETTINGS_ADD_PASSWORD_DETAILS_FIELDS: &[&str] = &["shared_content_access_level", - "shared_content_link"]; -impl SharedLinkSettingsAddPasswordDetails { - pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( - map: V, - ) -> Result { - Self::internal_deserialize_opt(map, false).map(Option::unwrap) - } - - pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( - mut map: V, - optional: bool, - ) -> Result, V::Error> { - let mut field_shared_content_access_level = None; - let mut field_shared_content_link = None; - let mut nothing = true; - while let Some(key) = map.next_key::<&str>()? { - nothing = false; - match key { - "shared_content_access_level" => { - if field_shared_content_access_level.is_some() { - return Err(::serde::de::Error::duplicate_field("shared_content_access_level")); - } - field_shared_content_access_level = Some(map.next_value()?); - } - "shared_content_link" => { - if field_shared_content_link.is_some() { - return Err(::serde::de::Error::duplicate_field("shared_content_link")); - } - field_shared_content_link = Some(map.next_value()?); - } - _ => { - // unknown field allowed and ignored - map.next_value::<::serde_json::Value>()?; - } +impl ::serde::ser::Serialize for SharedLinkVisibility { + fn serialize(&self, serializer: S) -> Result { + // union serializer + use serde::ser::SerializeStruct; + match self { + SharedLinkVisibility::NoOne => { + // unit + let mut s = serializer.serialize_struct("SharedLinkVisibility", 1)?; + s.serialize_field(".tag", "no_one")?; + s.end() } + SharedLinkVisibility::Password => { + // unit + let mut s = serializer.serialize_struct("SharedLinkVisibility", 1)?; + s.serialize_field(".tag", "password")?; + s.end() + } + SharedLinkVisibility::Public => { + // unit + let mut s = serializer.serialize_struct("SharedLinkVisibility", 1)?; + s.serialize_field(".tag", "public")?; + s.end() + } + SharedLinkVisibility::TeamOnly => { + // unit + let mut s = serializer.serialize_struct("SharedLinkVisibility", 1)?; + s.serialize_field(".tag", "team_only")?; + s.end() + } + SharedLinkVisibility::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) } - if optional && nothing { - return Ok(None); - } - let result = SharedLinkSettingsAddPasswordDetails { - shared_content_access_level: field_shared_content_access_level.ok_or_else(|| ::serde::de::Error::missing_field("shared_content_access_level"))?, - shared_content_link: field_shared_content_link.and_then(Option::flatten), - }; - Ok(Some(result)) } +} - pub(crate) fn internal_serialize( - &self, - s: &mut S::SerializeStruct, - ) -> Result<(), S::Error> { - use serde::ser::SerializeStruct; - s.serialize_field("shared_content_access_level", &self.shared_content_access_level)?; - if let Some(val) = &self.shared_content_link { - s.serialize_field("shared_content_link", val)?; - } - Ok(()) +/// Opened shared Paper doc. +#[derive(Debug, Clone, PartialEq, Eq, Default)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct SharedNoteOpenedDetails { +} + +const SHARED_NOTE_OPENED_DETAILS_FIELDS: &[&str] = &[]; +impl SharedNoteOpenedDetails { + // no _opt deserializer + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + ) -> Result { + // ignore any fields found; none are presently recognized + crate::eat_json_fields(&mut map)?; + Ok(SharedNoteOpenedDetails {}) } } -impl<'de> ::serde::de::Deserialize<'de> for SharedLinkSettingsAddPasswordDetails { +impl<'de> ::serde::de::Deserialize<'de> for SharedNoteOpenedDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SharedLinkSettingsAddPasswordDetails; + type Value = SharedNoteOpenedDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SharedLinkSettingsAddPasswordDetails struct") + f.write_str("a SharedNoteOpenedDetails struct") } fn visit_map>(self, map: V) -> Result { - SharedLinkSettingsAddPasswordDetails::internal_deserialize(map) + SharedNoteOpenedDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("SharedLinkSettingsAddPasswordDetails", SHARED_LINK_SETTINGS_ADD_PASSWORD_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("SharedNoteOpenedDetails", SHARED_NOTE_OPENED_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SharedLinkSettingsAddPasswordDetails { +impl ::serde::ser::Serialize for SharedNoteOpenedDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SharedLinkSettingsAddPasswordDetails", 2)?; - self.internal_serialize::(&mut s)?; - s.end() + serializer.serialize_struct("SharedNoteOpenedDetails", 0)?.end() } } #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SharedLinkSettingsAddPasswordType { +pub struct SharedNoteOpenedType { pub description: String, } -impl SharedLinkSettingsAddPasswordType { +impl SharedNoteOpenedType { pub fn new(description: String) -> Self { - SharedLinkSettingsAddPasswordType { + SharedNoteOpenedType { description, } } } -const SHARED_LINK_SETTINGS_ADD_PASSWORD_TYPE_FIELDS: &[&str] = &["description"]; -impl SharedLinkSettingsAddPasswordType { +const SHARED_NOTE_OPENED_TYPE_FIELDS: &[&str] = &["description"]; +impl SharedNoteOpenedType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -96289,7 +118754,7 @@ impl SharedLinkSettingsAddPasswordType { if optional && nothing { return Ok(None); } - let result = SharedLinkSettingsAddPasswordType { + let result = SharedNoteOpenedType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -96305,88 +118770,88 @@ impl SharedLinkSettingsAddPasswordType { } } -impl<'de> ::serde::de::Deserialize<'de> for SharedLinkSettingsAddPasswordType { +impl<'de> ::serde::de::Deserialize<'de> for SharedNoteOpenedType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SharedLinkSettingsAddPasswordType; + type Value = SharedNoteOpenedType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SharedLinkSettingsAddPasswordType struct") + f.write_str("a SharedNoteOpenedType struct") } fn visit_map>(self, map: V) -> Result { - SharedLinkSettingsAddPasswordType::internal_deserialize(map) + SharedNoteOpenedType::internal_deserialize(map) } } - deserializer.deserialize_struct("SharedLinkSettingsAddPasswordType", SHARED_LINK_SETTINGS_ADD_PASSWORD_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("SharedNoteOpenedType", SHARED_NOTE_OPENED_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SharedLinkSettingsAddPasswordType { +impl ::serde::ser::Serialize for SharedNoteOpenedType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SharedLinkSettingsAddPasswordType", 1)?; + let mut s = serializer.serialize_struct("SharedNoteOpenedType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Disabled downloads. +/// Changed whether team members can join shared folders owned outside team. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SharedLinkSettingsAllowDownloadDisabledDetails { - /// Shared content access level. - pub shared_content_access_level: crate::types::sharing::AccessLevel, - /// Shared content link. - pub shared_content_link: Option, +pub struct SharingChangeFolderJoinPolicyDetails { + /// New external join policy. + pub new_value: SharingFolderJoinPolicy, + /// Previous external join policy. Might be missing due to historical data gap. + pub previous_value: Option, } -impl SharedLinkSettingsAllowDownloadDisabledDetails { - pub fn new(shared_content_access_level: crate::types::sharing::AccessLevel) -> Self { - SharedLinkSettingsAllowDownloadDisabledDetails { - shared_content_access_level, - shared_content_link: None, +impl SharingChangeFolderJoinPolicyDetails { + pub fn new(new_value: SharingFolderJoinPolicy) -> Self { + SharingChangeFolderJoinPolicyDetails { + new_value, + previous_value: None, } } - pub fn with_shared_content_link(mut self, value: String) -> Self { - self.shared_content_link = Some(value); + pub fn with_previous_value(mut self, value: SharingFolderJoinPolicy) -> Self { + self.previous_value = Some(value); self } } -const SHARED_LINK_SETTINGS_ALLOW_DOWNLOAD_DISABLED_DETAILS_FIELDS: &[&str] = &["shared_content_access_level", - "shared_content_link"]; -impl SharedLinkSettingsAllowDownloadDisabledDetails { +const SHARING_CHANGE_FOLDER_JOIN_POLICY_DETAILS_FIELDS: &[&str] = &["new_value", + "previous_value"]; +impl SharingChangeFolderJoinPolicyDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_shared_content_access_level = None; - let mut field_shared_content_link = None; + ) -> Result, V::Error> { + let mut field_new_value = None; + let mut field_previous_value = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "shared_content_access_level" => { - if field_shared_content_access_level.is_some() { - return Err(::serde::de::Error::duplicate_field("shared_content_access_level")); + "new_value" => { + if field_new_value.is_some() { + return Err(::serde::de::Error::duplicate_field("new_value")); } - field_shared_content_access_level = Some(map.next_value()?); + field_new_value = Some(map.next_value()?); } - "shared_content_link" => { - if field_shared_content_link.is_some() { - return Err(::serde::de::Error::duplicate_field("shared_content_link")); + "previous_value" => { + if field_previous_value.is_some() { + return Err(::serde::de::Error::duplicate_field("previous_value")); } - field_shared_content_link = Some(map.next_value()?); + field_previous_value = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -96397,9 +118862,9 @@ impl SharedLinkSettingsAllowDownloadDisabledDetails { if optional && nothing { return Ok(None); } - let result = SharedLinkSettingsAllowDownloadDisabledDetails { - shared_content_access_level: field_shared_content_access_level.ok_or_else(|| ::serde::de::Error::missing_field("shared_content_access_level"))?, - shared_content_link: field_shared_content_link.and_then(Option::flatten), + let result = SharingChangeFolderJoinPolicyDetails { + new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, + previous_value: field_previous_value.and_then(Option::flatten), }; Ok(Some(result)) } @@ -96409,37 +118874,37 @@ impl SharedLinkSettingsAllowDownloadDisabledDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("shared_content_access_level", &self.shared_content_access_level)?; - if let Some(val) = &self.shared_content_link { - s.serialize_field("shared_content_link", val)?; + s.serialize_field("new_value", &self.new_value)?; + if let Some(val) = &self.previous_value { + s.serialize_field("previous_value", val)?; } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for SharedLinkSettingsAllowDownloadDisabledDetails { +impl<'de> ::serde::de::Deserialize<'de> for SharingChangeFolderJoinPolicyDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SharedLinkSettingsAllowDownloadDisabledDetails; + type Value = SharingChangeFolderJoinPolicyDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SharedLinkSettingsAllowDownloadDisabledDetails struct") + f.write_str("a SharingChangeFolderJoinPolicyDetails struct") } fn visit_map>(self, map: V) -> Result { - SharedLinkSettingsAllowDownloadDisabledDetails::internal_deserialize(map) + SharingChangeFolderJoinPolicyDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("SharedLinkSettingsAllowDownloadDisabledDetails", SHARED_LINK_SETTINGS_ALLOW_DOWNLOAD_DISABLED_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("SharingChangeFolderJoinPolicyDetails", SHARING_CHANGE_FOLDER_JOIN_POLICY_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SharedLinkSettingsAllowDownloadDisabledDetails { +impl ::serde::ser::Serialize for SharingChangeFolderJoinPolicyDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SharedLinkSettingsAllowDownloadDisabledDetails", 2)?; + let mut s = serializer.serialize_struct("SharingChangeFolderJoinPolicyDetails", 2)?; self.internal_serialize::(&mut s)?; s.end() } @@ -96447,30 +118912,30 @@ impl ::serde::ser::Serialize for SharedLinkSettingsAllowDownloadDisabledDetails #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SharedLinkSettingsAllowDownloadDisabledType { +pub struct SharingChangeFolderJoinPolicyType { pub description: String, } -impl SharedLinkSettingsAllowDownloadDisabledType { +impl SharingChangeFolderJoinPolicyType { pub fn new(description: String) -> Self { - SharedLinkSettingsAllowDownloadDisabledType { + SharingChangeFolderJoinPolicyType { description, } } } -const SHARED_LINK_SETTINGS_ALLOW_DOWNLOAD_DISABLED_TYPE_FIELDS: &[&str] = &["description"]; -impl SharedLinkSettingsAllowDownloadDisabledType { +const SHARING_CHANGE_FOLDER_JOIN_POLICY_TYPE_FIELDS: &[&str] = &["description"]; +impl SharingChangeFolderJoinPolicyType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -96491,7 +118956,7 @@ impl SharedLinkSettingsAllowDownloadDisabledType { if optional && nothing { return Ok(None); } - let result = SharedLinkSettingsAllowDownloadDisabledType { + let result = SharingChangeFolderJoinPolicyType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -96507,88 +118972,88 @@ impl SharedLinkSettingsAllowDownloadDisabledType { } } -impl<'de> ::serde::de::Deserialize<'de> for SharedLinkSettingsAllowDownloadDisabledType { +impl<'de> ::serde::de::Deserialize<'de> for SharingChangeFolderJoinPolicyType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SharedLinkSettingsAllowDownloadDisabledType; + type Value = SharingChangeFolderJoinPolicyType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SharedLinkSettingsAllowDownloadDisabledType struct") + f.write_str("a SharingChangeFolderJoinPolicyType struct") } fn visit_map>(self, map: V) -> Result { - SharedLinkSettingsAllowDownloadDisabledType::internal_deserialize(map) + SharingChangeFolderJoinPolicyType::internal_deserialize(map) } } - deserializer.deserialize_struct("SharedLinkSettingsAllowDownloadDisabledType", SHARED_LINK_SETTINGS_ALLOW_DOWNLOAD_DISABLED_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("SharingChangeFolderJoinPolicyType", SHARING_CHANGE_FOLDER_JOIN_POLICY_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SharedLinkSettingsAllowDownloadDisabledType { +impl ::serde::ser::Serialize for SharingChangeFolderJoinPolicyType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SharedLinkSettingsAllowDownloadDisabledType", 1)?; + let mut s = serializer.serialize_struct("SharingChangeFolderJoinPolicyType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Enabled downloads. +/// Changed the allow remove or change expiration policy for the links shared outside of the team. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SharedLinkSettingsAllowDownloadEnabledDetails { - /// Shared content access level. - pub shared_content_access_level: crate::types::sharing::AccessLevel, - /// Shared content link. - pub shared_content_link: Option, +pub struct SharingChangeLinkAllowChangeExpirationPolicyDetails { + /// To. + pub new_value: EnforceLinkPasswordPolicy, + /// From. + pub previous_value: Option, } -impl SharedLinkSettingsAllowDownloadEnabledDetails { - pub fn new(shared_content_access_level: crate::types::sharing::AccessLevel) -> Self { - SharedLinkSettingsAllowDownloadEnabledDetails { - shared_content_access_level, - shared_content_link: None, +impl SharingChangeLinkAllowChangeExpirationPolicyDetails { + pub fn new(new_value: EnforceLinkPasswordPolicy) -> Self { + SharingChangeLinkAllowChangeExpirationPolicyDetails { + new_value, + previous_value: None, } } - pub fn with_shared_content_link(mut self, value: String) -> Self { - self.shared_content_link = Some(value); + pub fn with_previous_value(mut self, value: EnforceLinkPasswordPolicy) -> Self { + self.previous_value = Some(value); self } } -const SHARED_LINK_SETTINGS_ALLOW_DOWNLOAD_ENABLED_DETAILS_FIELDS: &[&str] = &["shared_content_access_level", - "shared_content_link"]; -impl SharedLinkSettingsAllowDownloadEnabledDetails { +const SHARING_CHANGE_LINK_ALLOW_CHANGE_EXPIRATION_POLICY_DETAILS_FIELDS: &[&str] = &["new_value", + "previous_value"]; +impl SharingChangeLinkAllowChangeExpirationPolicyDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_shared_content_access_level = None; - let mut field_shared_content_link = None; + ) -> Result, V::Error> { + let mut field_new_value = None; + let mut field_previous_value = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "shared_content_access_level" => { - if field_shared_content_access_level.is_some() { - return Err(::serde::de::Error::duplicate_field("shared_content_access_level")); + "new_value" => { + if field_new_value.is_some() { + return Err(::serde::de::Error::duplicate_field("new_value")); } - field_shared_content_access_level = Some(map.next_value()?); + field_new_value = Some(map.next_value()?); } - "shared_content_link" => { - if field_shared_content_link.is_some() { - return Err(::serde::de::Error::duplicate_field("shared_content_link")); + "previous_value" => { + if field_previous_value.is_some() { + return Err(::serde::de::Error::duplicate_field("previous_value")); } - field_shared_content_link = Some(map.next_value()?); + field_previous_value = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -96599,9 +119064,9 @@ impl SharedLinkSettingsAllowDownloadEnabledDetails { if optional && nothing { return Ok(None); } - let result = SharedLinkSettingsAllowDownloadEnabledDetails { - shared_content_access_level: field_shared_content_access_level.ok_or_else(|| ::serde::de::Error::missing_field("shared_content_access_level"))?, - shared_content_link: field_shared_content_link.and_then(Option::flatten), + let result = SharingChangeLinkAllowChangeExpirationPolicyDetails { + new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, + previous_value: field_previous_value.and_then(Option::flatten), }; Ok(Some(result)) } @@ -96611,37 +119076,37 @@ impl SharedLinkSettingsAllowDownloadEnabledDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("shared_content_access_level", &self.shared_content_access_level)?; - if let Some(val) = &self.shared_content_link { - s.serialize_field("shared_content_link", val)?; + s.serialize_field("new_value", &self.new_value)?; + if let Some(val) = &self.previous_value { + s.serialize_field("previous_value", val)?; } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for SharedLinkSettingsAllowDownloadEnabledDetails { +impl<'de> ::serde::de::Deserialize<'de> for SharingChangeLinkAllowChangeExpirationPolicyDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SharedLinkSettingsAllowDownloadEnabledDetails; + type Value = SharingChangeLinkAllowChangeExpirationPolicyDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SharedLinkSettingsAllowDownloadEnabledDetails struct") + f.write_str("a SharingChangeLinkAllowChangeExpirationPolicyDetails struct") } fn visit_map>(self, map: V) -> Result { - SharedLinkSettingsAllowDownloadEnabledDetails::internal_deserialize(map) + SharingChangeLinkAllowChangeExpirationPolicyDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("SharedLinkSettingsAllowDownloadEnabledDetails", SHARED_LINK_SETTINGS_ALLOW_DOWNLOAD_ENABLED_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("SharingChangeLinkAllowChangeExpirationPolicyDetails", SHARING_CHANGE_LINK_ALLOW_CHANGE_EXPIRATION_POLICY_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SharedLinkSettingsAllowDownloadEnabledDetails { +impl ::serde::ser::Serialize for SharingChangeLinkAllowChangeExpirationPolicyDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SharedLinkSettingsAllowDownloadEnabledDetails", 2)?; + let mut s = serializer.serialize_struct("SharingChangeLinkAllowChangeExpirationPolicyDetails", 2)?; self.internal_serialize::(&mut s)?; s.end() } @@ -96649,30 +119114,30 @@ impl ::serde::ser::Serialize for SharedLinkSettingsAllowDownloadEnabledDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SharedLinkSettingsAllowDownloadEnabledType { +pub struct SharingChangeLinkAllowChangeExpirationPolicyType { pub description: String, } -impl SharedLinkSettingsAllowDownloadEnabledType { +impl SharingChangeLinkAllowChangeExpirationPolicyType { pub fn new(description: String) -> Self { - SharedLinkSettingsAllowDownloadEnabledType { + SharingChangeLinkAllowChangeExpirationPolicyType { description, } } } -const SHARED_LINK_SETTINGS_ALLOW_DOWNLOAD_ENABLED_TYPE_FIELDS: &[&str] = &["description"]; -impl SharedLinkSettingsAllowDownloadEnabledType { +const SHARING_CHANGE_LINK_ALLOW_CHANGE_EXPIRATION_POLICY_TYPE_FIELDS: &[&str] = &["description"]; +impl SharingChangeLinkAllowChangeExpirationPolicyType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -96693,7 +119158,7 @@ impl SharedLinkSettingsAllowDownloadEnabledType { if optional && nothing { return Ok(None); } - let result = SharedLinkSettingsAllowDownloadEnabledType { + let result = SharingChangeLinkAllowChangeExpirationPolicyType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -96709,113 +119174,83 @@ impl SharedLinkSettingsAllowDownloadEnabledType { } } -impl<'de> ::serde::de::Deserialize<'de> for SharedLinkSettingsAllowDownloadEnabledType { +impl<'de> ::serde::de::Deserialize<'de> for SharingChangeLinkAllowChangeExpirationPolicyType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SharedLinkSettingsAllowDownloadEnabledType; + type Value = SharingChangeLinkAllowChangeExpirationPolicyType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SharedLinkSettingsAllowDownloadEnabledType struct") + f.write_str("a SharingChangeLinkAllowChangeExpirationPolicyType struct") } fn visit_map>(self, map: V) -> Result { - SharedLinkSettingsAllowDownloadEnabledType::internal_deserialize(map) + SharingChangeLinkAllowChangeExpirationPolicyType::internal_deserialize(map) } } - deserializer.deserialize_struct("SharedLinkSettingsAllowDownloadEnabledType", SHARED_LINK_SETTINGS_ALLOW_DOWNLOAD_ENABLED_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("SharingChangeLinkAllowChangeExpirationPolicyType", SHARING_CHANGE_LINK_ALLOW_CHANGE_EXPIRATION_POLICY_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SharedLinkSettingsAllowDownloadEnabledType { +impl ::serde::ser::Serialize for SharingChangeLinkAllowChangeExpirationPolicyType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SharedLinkSettingsAllowDownloadEnabledType", 1)?; + let mut s = serializer.serialize_struct("SharingChangeLinkAllowChangeExpirationPolicyType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Changed the audience of the shared link. +/// Changed the default expiration for the links shared outside of the team. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SharedLinkSettingsChangeAudienceDetails { - /// Shared content access level. - pub shared_content_access_level: crate::types::sharing::AccessLevel, - /// New link audience value. - pub new_value: crate::types::sharing::LinkAudience, - /// Shared content link. - pub shared_content_link: Option, - /// Previous link audience value. - pub previous_value: Option, +pub struct SharingChangeLinkDefaultExpirationPolicyDetails { + /// To. + pub new_value: DefaultLinkExpirationDaysPolicy, + /// From. + pub previous_value: Option, } -impl SharedLinkSettingsChangeAudienceDetails { - pub fn new( - shared_content_access_level: crate::types::sharing::AccessLevel, - new_value: crate::types::sharing::LinkAudience, - ) -> Self { - SharedLinkSettingsChangeAudienceDetails { - shared_content_access_level, +impl SharingChangeLinkDefaultExpirationPolicyDetails { + pub fn new(new_value: DefaultLinkExpirationDaysPolicy) -> Self { + SharingChangeLinkDefaultExpirationPolicyDetails { new_value, - shared_content_link: None, previous_value: None, } } - pub fn with_shared_content_link(mut self, value: String) -> Self { - self.shared_content_link = Some(value); - self - } - - pub fn with_previous_value(mut self, value: crate::types::sharing::LinkAudience) -> Self { + pub fn with_previous_value(mut self, value: DefaultLinkExpirationDaysPolicy) -> Self { self.previous_value = Some(value); self } } -const SHARED_LINK_SETTINGS_CHANGE_AUDIENCE_DETAILS_FIELDS: &[&str] = &["shared_content_access_level", - "new_value", - "shared_content_link", - "previous_value"]; -impl SharedLinkSettingsChangeAudienceDetails { +const SHARING_CHANGE_LINK_DEFAULT_EXPIRATION_POLICY_DETAILS_FIELDS: &[&str] = &["new_value", + "previous_value"]; +impl SharingChangeLinkDefaultExpirationPolicyDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_shared_content_access_level = None; + ) -> Result, V::Error> { let mut field_new_value = None; - let mut field_shared_content_link = None; let mut field_previous_value = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "shared_content_access_level" => { - if field_shared_content_access_level.is_some() { - return Err(::serde::de::Error::duplicate_field("shared_content_access_level")); - } - field_shared_content_access_level = Some(map.next_value()?); - } "new_value" => { if field_new_value.is_some() { return Err(::serde::de::Error::duplicate_field("new_value")); } field_new_value = Some(map.next_value()?); } - "shared_content_link" => { - if field_shared_content_link.is_some() { - return Err(::serde::de::Error::duplicate_field("shared_content_link")); - } - field_shared_content_link = Some(map.next_value()?); - } "previous_value" => { if field_previous_value.is_some() { return Err(::serde::de::Error::duplicate_field("previous_value")); @@ -96831,10 +119266,8 @@ impl SharedLinkSettingsChangeAudienceDetails { if optional && nothing { return Ok(None); } - let result = SharedLinkSettingsChangeAudienceDetails { - shared_content_access_level: field_shared_content_access_level.ok_or_else(|| ::serde::de::Error::missing_field("shared_content_access_level"))?, + let result = SharingChangeLinkDefaultExpirationPolicyDetails { new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, - shared_content_link: field_shared_content_link.and_then(Option::flatten), previous_value: field_previous_value.and_then(Option::flatten), }; Ok(Some(result)) @@ -96845,11 +119278,7 @@ impl SharedLinkSettingsChangeAudienceDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("shared_content_access_level", &self.shared_content_access_level)?; s.serialize_field("new_value", &self.new_value)?; - if let Some(val) = &self.shared_content_link { - s.serialize_field("shared_content_link", val)?; - } if let Some(val) = &self.previous_value { s.serialize_field("previous_value", val)?; } @@ -96857,29 +119286,29 @@ impl SharedLinkSettingsChangeAudienceDetails { } } -impl<'de> ::serde::de::Deserialize<'de> for SharedLinkSettingsChangeAudienceDetails { +impl<'de> ::serde::de::Deserialize<'de> for SharingChangeLinkDefaultExpirationPolicyDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SharedLinkSettingsChangeAudienceDetails; + type Value = SharingChangeLinkDefaultExpirationPolicyDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SharedLinkSettingsChangeAudienceDetails struct") + f.write_str("a SharingChangeLinkDefaultExpirationPolicyDetails struct") } fn visit_map>(self, map: V) -> Result { - SharedLinkSettingsChangeAudienceDetails::internal_deserialize(map) + SharingChangeLinkDefaultExpirationPolicyDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("SharedLinkSettingsChangeAudienceDetails", SHARED_LINK_SETTINGS_CHANGE_AUDIENCE_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("SharingChangeLinkDefaultExpirationPolicyDetails", SHARING_CHANGE_LINK_DEFAULT_EXPIRATION_POLICY_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SharedLinkSettingsChangeAudienceDetails { +impl ::serde::ser::Serialize for SharingChangeLinkDefaultExpirationPolicyDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SharedLinkSettingsChangeAudienceDetails", 4)?; + let mut s = serializer.serialize_struct("SharingChangeLinkDefaultExpirationPolicyDetails", 2)?; self.internal_serialize::(&mut s)?; s.end() } @@ -96887,30 +119316,30 @@ impl ::serde::ser::Serialize for SharedLinkSettingsChangeAudienceDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SharedLinkSettingsChangeAudienceType { +pub struct SharingChangeLinkDefaultExpirationPolicyType { pub description: String, } -impl SharedLinkSettingsChangeAudienceType { +impl SharingChangeLinkDefaultExpirationPolicyType { pub fn new(description: String) -> Self { - SharedLinkSettingsChangeAudienceType { + SharingChangeLinkDefaultExpirationPolicyType { description, } } } -const SHARED_LINK_SETTINGS_CHANGE_AUDIENCE_TYPE_FIELDS: &[&str] = &["description"]; -impl SharedLinkSettingsChangeAudienceType { +const SHARING_CHANGE_LINK_DEFAULT_EXPIRATION_POLICY_TYPE_FIELDS: &[&str] = &["description"]; +impl SharingChangeLinkDefaultExpirationPolicyType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -96931,7 +119360,7 @@ impl SharedLinkSettingsChangeAudienceType { if optional && nothing { return Ok(None); } - let result = SharedLinkSettingsChangeAudienceType { + let result = SharingChangeLinkDefaultExpirationPolicyType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -96947,109 +119376,77 @@ impl SharedLinkSettingsChangeAudienceType { } } -impl<'de> ::serde::de::Deserialize<'de> for SharedLinkSettingsChangeAudienceType { +impl<'de> ::serde::de::Deserialize<'de> for SharingChangeLinkDefaultExpirationPolicyType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SharedLinkSettingsChangeAudienceType; + type Value = SharingChangeLinkDefaultExpirationPolicyType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SharedLinkSettingsChangeAudienceType struct") + f.write_str("a SharingChangeLinkDefaultExpirationPolicyType struct") } fn visit_map>(self, map: V) -> Result { - SharedLinkSettingsChangeAudienceType::internal_deserialize(map) + SharingChangeLinkDefaultExpirationPolicyType::internal_deserialize(map) } } - deserializer.deserialize_struct("SharedLinkSettingsChangeAudienceType", SHARED_LINK_SETTINGS_CHANGE_AUDIENCE_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("SharingChangeLinkDefaultExpirationPolicyType", SHARING_CHANGE_LINK_DEFAULT_EXPIRATION_POLICY_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SharedLinkSettingsChangeAudienceType { +impl ::serde::ser::Serialize for SharingChangeLinkDefaultExpirationPolicyType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SharedLinkSettingsChangeAudienceType", 1)?; + let mut s = serializer.serialize_struct("SharingChangeLinkDefaultExpirationPolicyType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Changed the expiration date of the shared link. +/// Changed the password requirement for the links shared outside of the team. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SharedLinkSettingsChangeExpirationDetails { - /// Shared content access level. - pub shared_content_access_level: crate::types::sharing::AccessLevel, - /// Shared content link. - pub shared_content_link: Option, - /// New shared content link expiration date. Might be missing due to historical data gap. - pub new_value: Option, - /// Previous shared content link expiration date. Might be missing due to historical data gap. - pub previous_value: Option, +pub struct SharingChangeLinkEnforcePasswordPolicyDetails { + /// To. + pub new_value: ChangeLinkExpirationPolicy, + /// From. + pub previous_value: Option, } -impl SharedLinkSettingsChangeExpirationDetails { - pub fn new(shared_content_access_level: crate::types::sharing::AccessLevel) -> Self { - SharedLinkSettingsChangeExpirationDetails { - shared_content_access_level, - shared_content_link: None, - new_value: None, +impl SharingChangeLinkEnforcePasswordPolicyDetails { + pub fn new(new_value: ChangeLinkExpirationPolicy) -> Self { + SharingChangeLinkEnforcePasswordPolicyDetails { + new_value, previous_value: None, } } - pub fn with_shared_content_link(mut self, value: String) -> Self { - self.shared_content_link = Some(value); - self - } - - pub fn with_new_value(mut self, value: crate::types::common::DropboxTimestamp) -> Self { - self.new_value = Some(value); - self - } - - pub fn with_previous_value(mut self, value: crate::types::common::DropboxTimestamp) -> Self { + pub fn with_previous_value(mut self, value: ChangeLinkExpirationPolicy) -> Self { self.previous_value = Some(value); self } } -const SHARED_LINK_SETTINGS_CHANGE_EXPIRATION_DETAILS_FIELDS: &[&str] = &["shared_content_access_level", - "shared_content_link", - "new_value", - "previous_value"]; -impl SharedLinkSettingsChangeExpirationDetails { +const SHARING_CHANGE_LINK_ENFORCE_PASSWORD_POLICY_DETAILS_FIELDS: &[&str] = &["new_value", + "previous_value"]; +impl SharingChangeLinkEnforcePasswordPolicyDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_shared_content_access_level = None; - let mut field_shared_content_link = None; + ) -> Result, V::Error> { let mut field_new_value = None; let mut field_previous_value = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "shared_content_access_level" => { - if field_shared_content_access_level.is_some() { - return Err(::serde::de::Error::duplicate_field("shared_content_access_level")); - } - field_shared_content_access_level = Some(map.next_value()?); - } - "shared_content_link" => { - if field_shared_content_link.is_some() { - return Err(::serde::de::Error::duplicate_field("shared_content_link")); - } - field_shared_content_link = Some(map.next_value()?); - } "new_value" => { if field_new_value.is_some() { return Err(::serde::de::Error::duplicate_field("new_value")); @@ -97071,10 +119468,8 @@ impl SharedLinkSettingsChangeExpirationDetails { if optional && nothing { return Ok(None); } - let result = SharedLinkSettingsChangeExpirationDetails { - shared_content_access_level: field_shared_content_access_level.ok_or_else(|| ::serde::de::Error::missing_field("shared_content_access_level"))?, - shared_content_link: field_shared_content_link.and_then(Option::flatten), - new_value: field_new_value.and_then(Option::flatten), + let result = SharingChangeLinkEnforcePasswordPolicyDetails { + new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, previous_value: field_previous_value.and_then(Option::flatten), }; Ok(Some(result)) @@ -97085,13 +119480,7 @@ impl SharedLinkSettingsChangeExpirationDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("shared_content_access_level", &self.shared_content_access_level)?; - if let Some(val) = &self.shared_content_link { - s.serialize_field("shared_content_link", val)?; - } - if let Some(val) = &self.new_value { - s.serialize_field("new_value", val)?; - } + s.serialize_field("new_value", &self.new_value)?; if let Some(val) = &self.previous_value { s.serialize_field("previous_value", val)?; } @@ -97099,29 +119488,29 @@ impl SharedLinkSettingsChangeExpirationDetails { } } -impl<'de> ::serde::de::Deserialize<'de> for SharedLinkSettingsChangeExpirationDetails { +impl<'de> ::serde::de::Deserialize<'de> for SharingChangeLinkEnforcePasswordPolicyDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SharedLinkSettingsChangeExpirationDetails; + type Value = SharingChangeLinkEnforcePasswordPolicyDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SharedLinkSettingsChangeExpirationDetails struct") + f.write_str("a SharingChangeLinkEnforcePasswordPolicyDetails struct") } fn visit_map>(self, map: V) -> Result { - SharedLinkSettingsChangeExpirationDetails::internal_deserialize(map) + SharingChangeLinkEnforcePasswordPolicyDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("SharedLinkSettingsChangeExpirationDetails", SHARED_LINK_SETTINGS_CHANGE_EXPIRATION_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("SharingChangeLinkEnforcePasswordPolicyDetails", SHARING_CHANGE_LINK_ENFORCE_PASSWORD_POLICY_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SharedLinkSettingsChangeExpirationDetails { +impl ::serde::ser::Serialize for SharingChangeLinkEnforcePasswordPolicyDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SharedLinkSettingsChangeExpirationDetails", 4)?; + let mut s = serializer.serialize_struct("SharingChangeLinkEnforcePasswordPolicyDetails", 2)?; self.internal_serialize::(&mut s)?; s.end() } @@ -97129,30 +119518,30 @@ impl ::serde::ser::Serialize for SharedLinkSettingsChangeExpirationDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SharedLinkSettingsChangeExpirationType { +pub struct SharingChangeLinkEnforcePasswordPolicyType { pub description: String, } -impl SharedLinkSettingsChangeExpirationType { +impl SharingChangeLinkEnforcePasswordPolicyType { pub fn new(description: String) -> Self { - SharedLinkSettingsChangeExpirationType { + SharingChangeLinkEnforcePasswordPolicyType { description, } } } -const SHARED_LINK_SETTINGS_CHANGE_EXPIRATION_TYPE_FIELDS: &[&str] = &["description"]; -impl SharedLinkSettingsChangeExpirationType { +const SHARING_CHANGE_LINK_ENFORCE_PASSWORD_POLICY_TYPE_FIELDS: &[&str] = &["description"]; +impl SharingChangeLinkEnforcePasswordPolicyType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -97173,7 +119562,7 @@ impl SharedLinkSettingsChangeExpirationType { if optional && nothing { return Ok(None); } - let result = SharedLinkSettingsChangeExpirationType { + let result = SharingChangeLinkEnforcePasswordPolicyType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -97189,88 +119578,89 @@ impl SharedLinkSettingsChangeExpirationType { } } -impl<'de> ::serde::de::Deserialize<'de> for SharedLinkSettingsChangeExpirationType { +impl<'de> ::serde::de::Deserialize<'de> for SharingChangeLinkEnforcePasswordPolicyType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SharedLinkSettingsChangeExpirationType; + type Value = SharingChangeLinkEnforcePasswordPolicyType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SharedLinkSettingsChangeExpirationType struct") + f.write_str("a SharingChangeLinkEnforcePasswordPolicyType struct") } fn visit_map>(self, map: V) -> Result { - SharedLinkSettingsChangeExpirationType::internal_deserialize(map) + SharingChangeLinkEnforcePasswordPolicyType::internal_deserialize(map) } } - deserializer.deserialize_struct("SharedLinkSettingsChangeExpirationType", SHARED_LINK_SETTINGS_CHANGE_EXPIRATION_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("SharingChangeLinkEnforcePasswordPolicyType", SHARING_CHANGE_LINK_ENFORCE_PASSWORD_POLICY_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SharedLinkSettingsChangeExpirationType { +impl ::serde::ser::Serialize for SharingChangeLinkEnforcePasswordPolicyType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SharedLinkSettingsChangeExpirationType", 1)?; + let mut s = serializer.serialize_struct("SharingChangeLinkEnforcePasswordPolicyType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Changed the password of the shared link. +/// Changed whether members can share links outside team, and if links are accessible only by team +/// members or anyone by default. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SharedLinkSettingsChangePasswordDetails { - /// Shared content access level. - pub shared_content_access_level: crate::types::sharing::AccessLevel, - /// Shared content link. - pub shared_content_link: Option, +pub struct SharingChangeLinkPolicyDetails { + /// New external link accessibility policy. + pub new_value: SharingLinkPolicy, + /// Previous external link accessibility policy. Might be missing due to historical data gap. + pub previous_value: Option, } -impl SharedLinkSettingsChangePasswordDetails { - pub fn new(shared_content_access_level: crate::types::sharing::AccessLevel) -> Self { - SharedLinkSettingsChangePasswordDetails { - shared_content_access_level, - shared_content_link: None, +impl SharingChangeLinkPolicyDetails { + pub fn new(new_value: SharingLinkPolicy) -> Self { + SharingChangeLinkPolicyDetails { + new_value, + previous_value: None, } } - pub fn with_shared_content_link(mut self, value: String) -> Self { - self.shared_content_link = Some(value); + pub fn with_previous_value(mut self, value: SharingLinkPolicy) -> Self { + self.previous_value = Some(value); self } } -const SHARED_LINK_SETTINGS_CHANGE_PASSWORD_DETAILS_FIELDS: &[&str] = &["shared_content_access_level", - "shared_content_link"]; -impl SharedLinkSettingsChangePasswordDetails { +const SHARING_CHANGE_LINK_POLICY_DETAILS_FIELDS: &[&str] = &["new_value", + "previous_value"]; +impl SharingChangeLinkPolicyDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_shared_content_access_level = None; - let mut field_shared_content_link = None; + ) -> Result, V::Error> { + let mut field_new_value = None; + let mut field_previous_value = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "shared_content_access_level" => { - if field_shared_content_access_level.is_some() { - return Err(::serde::de::Error::duplicate_field("shared_content_access_level")); + "new_value" => { + if field_new_value.is_some() { + return Err(::serde::de::Error::duplicate_field("new_value")); } - field_shared_content_access_level = Some(map.next_value()?); + field_new_value = Some(map.next_value()?); } - "shared_content_link" => { - if field_shared_content_link.is_some() { - return Err(::serde::de::Error::duplicate_field("shared_content_link")); + "previous_value" => { + if field_previous_value.is_some() { + return Err(::serde::de::Error::duplicate_field("previous_value")); } - field_shared_content_link = Some(map.next_value()?); + field_previous_value = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -97281,9 +119671,9 @@ impl SharedLinkSettingsChangePasswordDetails { if optional && nothing { return Ok(None); } - let result = SharedLinkSettingsChangePasswordDetails { - shared_content_access_level: field_shared_content_access_level.ok_or_else(|| ::serde::de::Error::missing_field("shared_content_access_level"))?, - shared_content_link: field_shared_content_link.and_then(Option::flatten), + let result = SharingChangeLinkPolicyDetails { + new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, + previous_value: field_previous_value.and_then(Option::flatten), }; Ok(Some(result)) } @@ -97293,37 +119683,37 @@ impl SharedLinkSettingsChangePasswordDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("shared_content_access_level", &self.shared_content_access_level)?; - if let Some(val) = &self.shared_content_link { - s.serialize_field("shared_content_link", val)?; + s.serialize_field("new_value", &self.new_value)?; + if let Some(val) = &self.previous_value { + s.serialize_field("previous_value", val)?; } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for SharedLinkSettingsChangePasswordDetails { +impl<'de> ::serde::de::Deserialize<'de> for SharingChangeLinkPolicyDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SharedLinkSettingsChangePasswordDetails; + type Value = SharingChangeLinkPolicyDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SharedLinkSettingsChangePasswordDetails struct") + f.write_str("a SharingChangeLinkPolicyDetails struct") } fn visit_map>(self, map: V) -> Result { - SharedLinkSettingsChangePasswordDetails::internal_deserialize(map) + SharingChangeLinkPolicyDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("SharedLinkSettingsChangePasswordDetails", SHARED_LINK_SETTINGS_CHANGE_PASSWORD_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("SharingChangeLinkPolicyDetails", SHARING_CHANGE_LINK_POLICY_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SharedLinkSettingsChangePasswordDetails { +impl ::serde::ser::Serialize for SharingChangeLinkPolicyDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SharedLinkSettingsChangePasswordDetails", 2)?; + let mut s = serializer.serialize_struct("SharingChangeLinkPolicyDetails", 2)?; self.internal_serialize::(&mut s)?; s.end() } @@ -97331,30 +119721,30 @@ impl ::serde::ser::Serialize for SharedLinkSettingsChangePasswordDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SharedLinkSettingsChangePasswordType { +pub struct SharingChangeLinkPolicyType { pub description: String, } -impl SharedLinkSettingsChangePasswordType { +impl SharingChangeLinkPolicyType { pub fn new(description: String) -> Self { - SharedLinkSettingsChangePasswordType { + SharingChangeLinkPolicyType { description, } } } -const SHARED_LINK_SETTINGS_CHANGE_PASSWORD_TYPE_FIELDS: &[&str] = &["description"]; -impl SharedLinkSettingsChangePasswordType { +const SHARING_CHANGE_LINK_POLICY_TYPE_FIELDS: &[&str] = &["description"]; +impl SharingChangeLinkPolicyType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -97375,7 +119765,7 @@ impl SharedLinkSettingsChangePasswordType { if optional && nothing { return Ok(None); } - let result = SharedLinkSettingsChangePasswordType { + let result = SharingChangeLinkPolicyType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -97391,98 +119781,82 @@ impl SharedLinkSettingsChangePasswordType { } } -impl<'de> ::serde::de::Deserialize<'de> for SharedLinkSettingsChangePasswordType { +impl<'de> ::serde::de::Deserialize<'de> for SharingChangeLinkPolicyType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SharedLinkSettingsChangePasswordType; + type Value = SharingChangeLinkPolicyType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SharedLinkSettingsChangePasswordType struct") + f.write_str("a SharingChangeLinkPolicyType struct") } fn visit_map>(self, map: V) -> Result { - SharedLinkSettingsChangePasswordType::internal_deserialize(map) + SharingChangeLinkPolicyType::internal_deserialize(map) } } - deserializer.deserialize_struct("SharedLinkSettingsChangePasswordType", SHARED_LINK_SETTINGS_CHANGE_PASSWORD_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("SharingChangeLinkPolicyType", SHARING_CHANGE_LINK_POLICY_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SharedLinkSettingsChangePasswordType { +impl ::serde::ser::Serialize for SharingChangeLinkPolicyType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SharedLinkSettingsChangePasswordType", 1)?; + let mut s = serializer.serialize_struct("SharingChangeLinkPolicyType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Removed the expiration date from the shared link. +/// Changed whether members can share files/folders outside team. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SharedLinkSettingsRemoveExpirationDetails { - /// Shared content access level. - pub shared_content_access_level: crate::types::sharing::AccessLevel, - /// Shared content link. - pub shared_content_link: Option, - /// Previous shared link expiration date. Might be missing due to historical data gap. - pub previous_value: Option, +pub struct SharingChangeMemberPolicyDetails { + /// New external invite policy. + pub new_value: SharingMemberPolicy, + /// Previous external invite policy. Might be missing due to historical data gap. + pub previous_value: Option, } -impl SharedLinkSettingsRemoveExpirationDetails { - pub fn new(shared_content_access_level: crate::types::sharing::AccessLevel) -> Self { - SharedLinkSettingsRemoveExpirationDetails { - shared_content_access_level, - shared_content_link: None, +impl SharingChangeMemberPolicyDetails { + pub fn new(new_value: SharingMemberPolicy) -> Self { + SharingChangeMemberPolicyDetails { + new_value, previous_value: None, } } - pub fn with_shared_content_link(mut self, value: String) -> Self { - self.shared_content_link = Some(value); - self - } - - pub fn with_previous_value(mut self, value: crate::types::common::DropboxTimestamp) -> Self { + pub fn with_previous_value(mut self, value: SharingMemberPolicy) -> Self { self.previous_value = Some(value); self } } -const SHARED_LINK_SETTINGS_REMOVE_EXPIRATION_DETAILS_FIELDS: &[&str] = &["shared_content_access_level", - "shared_content_link", - "previous_value"]; -impl SharedLinkSettingsRemoveExpirationDetails { +const SHARING_CHANGE_MEMBER_POLICY_DETAILS_FIELDS: &[&str] = &["new_value", + "previous_value"]; +impl SharingChangeMemberPolicyDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_shared_content_access_level = None; - let mut field_shared_content_link = None; + ) -> Result, V::Error> { + let mut field_new_value = None; let mut field_previous_value = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "shared_content_access_level" => { - if field_shared_content_access_level.is_some() { - return Err(::serde::de::Error::duplicate_field("shared_content_access_level")); - } - field_shared_content_access_level = Some(map.next_value()?); - } - "shared_content_link" => { - if field_shared_content_link.is_some() { - return Err(::serde::de::Error::duplicate_field("shared_content_link")); + "new_value" => { + if field_new_value.is_some() { + return Err(::serde::de::Error::duplicate_field("new_value")); } - field_shared_content_link = Some(map.next_value()?); + field_new_value = Some(map.next_value()?); } "previous_value" => { if field_previous_value.is_some() { @@ -97499,9 +119873,8 @@ impl SharedLinkSettingsRemoveExpirationDetails { if optional && nothing { return Ok(None); } - let result = SharedLinkSettingsRemoveExpirationDetails { - shared_content_access_level: field_shared_content_access_level.ok_or_else(|| ::serde::de::Error::missing_field("shared_content_access_level"))?, - shared_content_link: field_shared_content_link.and_then(Option::flatten), + let result = SharingChangeMemberPolicyDetails { + new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, previous_value: field_previous_value.and_then(Option::flatten), }; Ok(Some(result)) @@ -97512,10 +119885,7 @@ impl SharedLinkSettingsRemoveExpirationDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("shared_content_access_level", &self.shared_content_access_level)?; - if let Some(val) = &self.shared_content_link { - s.serialize_field("shared_content_link", val)?; - } + s.serialize_field("new_value", &self.new_value)?; if let Some(val) = &self.previous_value { s.serialize_field("previous_value", val)?; } @@ -97523,29 +119893,29 @@ impl SharedLinkSettingsRemoveExpirationDetails { } } -impl<'de> ::serde::de::Deserialize<'de> for SharedLinkSettingsRemoveExpirationDetails { +impl<'de> ::serde::de::Deserialize<'de> for SharingChangeMemberPolicyDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SharedLinkSettingsRemoveExpirationDetails; + type Value = SharingChangeMemberPolicyDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SharedLinkSettingsRemoveExpirationDetails struct") + f.write_str("a SharingChangeMemberPolicyDetails struct") } fn visit_map>(self, map: V) -> Result { - SharedLinkSettingsRemoveExpirationDetails::internal_deserialize(map) + SharingChangeMemberPolicyDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("SharedLinkSettingsRemoveExpirationDetails", SHARED_LINK_SETTINGS_REMOVE_EXPIRATION_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("SharingChangeMemberPolicyDetails", SHARING_CHANGE_MEMBER_POLICY_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SharedLinkSettingsRemoveExpirationDetails { +impl ::serde::ser::Serialize for SharingChangeMemberPolicyDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SharedLinkSettingsRemoveExpirationDetails", 3)?; + let mut s = serializer.serialize_struct("SharingChangeMemberPolicyDetails", 2)?; self.internal_serialize::(&mut s)?; s.end() } @@ -97553,30 +119923,30 @@ impl ::serde::ser::Serialize for SharedLinkSettingsRemoveExpirationDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SharedLinkSettingsRemoveExpirationType { +pub struct SharingChangeMemberPolicyType { pub description: String, } -impl SharedLinkSettingsRemoveExpirationType { +impl SharingChangeMemberPolicyType { pub fn new(description: String) -> Self { - SharedLinkSettingsRemoveExpirationType { + SharingChangeMemberPolicyType { description, } } } -const SHARED_LINK_SETTINGS_REMOVE_EXPIRATION_TYPE_FIELDS: &[&str] = &["description"]; -impl SharedLinkSettingsRemoveExpirationType { +const SHARING_CHANGE_MEMBER_POLICY_TYPE_FIELDS: &[&str] = &["description"]; +impl SharingChangeMemberPolicyType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -97597,7 +119967,7 @@ impl SharedLinkSettingsRemoveExpirationType { if optional && nothing { return Ok(None); } - let result = SharedLinkSettingsRemoveExpirationType { + let result = SharingChangeMemberPolicyType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -97613,88 +119983,282 @@ impl SharedLinkSettingsRemoveExpirationType { } } -impl<'de> ::serde::de::Deserialize<'de> for SharedLinkSettingsRemoveExpirationType { +impl<'de> ::serde::de::Deserialize<'de> for SharingChangeMemberPolicyType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SharedLinkSettingsRemoveExpirationType; + type Value = SharingChangeMemberPolicyType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SharedLinkSettingsRemoveExpirationType struct") + f.write_str("a SharingChangeMemberPolicyType struct") } fn visit_map>(self, map: V) -> Result { - SharedLinkSettingsRemoveExpirationType::internal_deserialize(map) + SharingChangeMemberPolicyType::internal_deserialize(map) } } - deserializer.deserialize_struct("SharedLinkSettingsRemoveExpirationType", SHARED_LINK_SETTINGS_REMOVE_EXPIRATION_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("SharingChangeMemberPolicyType", SHARING_CHANGE_MEMBER_POLICY_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SharedLinkSettingsRemoveExpirationType { +impl ::serde::ser::Serialize for SharingChangeMemberPolicyType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SharedLinkSettingsRemoveExpirationType", 1)?; + let mut s = serializer.serialize_struct("SharingChangeMemberPolicyType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Removed the password from the shared link. +/// Policy for controlling if team members can join shared folders owned by non team members. #[derive(Debug, Clone, PartialEq, Eq)] -#[non_exhaustive] // structs may have more fields added in the future. -pub struct SharedLinkSettingsRemovePasswordDetails { - /// Shared content access level. - pub shared_content_access_level: crate::types::sharing::AccessLevel, - /// Shared content link. - pub shared_content_link: Option, +#[non_exhaustive] // variants may be added in the future +pub enum SharingFolderJoinPolicy { + FromAnyone, + FromTeamOnly, + /// Catch-all used for unrecognized values returned from the server. Encountering this value + /// typically indicates that this SDK version is out of date. + Other, } -impl SharedLinkSettingsRemovePasswordDetails { - pub fn new(shared_content_access_level: crate::types::sharing::AccessLevel) -> Self { - SharedLinkSettingsRemovePasswordDetails { - shared_content_access_level, - shared_content_link: None, +impl<'de> ::serde::de::Deserialize<'de> for SharingFolderJoinPolicy { + fn deserialize>(deserializer: D) -> Result { + // union deserializer + use serde::de::{self, MapAccess, Visitor}; + struct EnumVisitor; + impl<'de> Visitor<'de> for EnumVisitor { + type Value = SharingFolderJoinPolicy; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a SharingFolderJoinPolicy structure") + } + fn visit_map>(self, mut map: V) -> Result { + let tag: &str = match map.next_key()? { + Some(".tag") => map.next_value()?, + _ => return Err(de::Error::missing_field(".tag")) + }; + let value = match tag { + "from_anyone" => SharingFolderJoinPolicy::FromAnyone, + "from_team_only" => SharingFolderJoinPolicy::FromTeamOnly, + _ => SharingFolderJoinPolicy::Other, + }; + crate::eat_json_fields(&mut map)?; + Ok(value) + } } + const VARIANTS: &[&str] = &["from_anyone", + "from_team_only", + "other"]; + deserializer.deserialize_struct("SharingFolderJoinPolicy", VARIANTS, EnumVisitor) } +} - pub fn with_shared_content_link(mut self, value: String) -> Self { - self.shared_content_link = Some(value); - self +impl ::serde::ser::Serialize for SharingFolderJoinPolicy { + fn serialize(&self, serializer: S) -> Result { + // union serializer + use serde::ser::SerializeStruct; + match self { + SharingFolderJoinPolicy::FromAnyone => { + // unit + let mut s = serializer.serialize_struct("SharingFolderJoinPolicy", 1)?; + s.serialize_field(".tag", "from_anyone")?; + s.end() + } + SharingFolderJoinPolicy::FromTeamOnly => { + // unit + let mut s = serializer.serialize_struct("SharingFolderJoinPolicy", 1)?; + s.serialize_field(".tag", "from_team_only")?; + s.end() + } + SharingFolderJoinPolicy::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) + } } } -const SHARED_LINK_SETTINGS_REMOVE_PASSWORD_DETAILS_FIELDS: &[&str] = &["shared_content_access_level", - "shared_content_link"]; -impl SharedLinkSettingsRemovePasswordDetails { - pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( - map: V, - ) -> Result { - Self::internal_deserialize_opt(map, false).map(Option::unwrap) +/// Policy for controlling if team members can share links externally +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // variants may be added in the future +pub enum SharingLinkPolicy { + DefaultNoOne, + DefaultPrivate, + DefaultPublic, + OnlyPrivate, + /// Catch-all used for unrecognized values returned from the server. Encountering this value + /// typically indicates that this SDK version is out of date. + Other, +} + +impl<'de> ::serde::de::Deserialize<'de> for SharingLinkPolicy { + fn deserialize>(deserializer: D) -> Result { + // union deserializer + use serde::de::{self, MapAccess, Visitor}; + struct EnumVisitor; + impl<'de> Visitor<'de> for EnumVisitor { + type Value = SharingLinkPolicy; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a SharingLinkPolicy structure") + } + fn visit_map>(self, mut map: V) -> Result { + let tag: &str = match map.next_key()? { + Some(".tag") => map.next_value()?, + _ => return Err(de::Error::missing_field(".tag")) + }; + let value = match tag { + "default_no_one" => SharingLinkPolicy::DefaultNoOne, + "default_private" => SharingLinkPolicy::DefaultPrivate, + "default_public" => SharingLinkPolicy::DefaultPublic, + "only_private" => SharingLinkPolicy::OnlyPrivate, + _ => SharingLinkPolicy::Other, + }; + crate::eat_json_fields(&mut map)?; + Ok(value) + } + } + const VARIANTS: &[&str] = &["default_no_one", + "default_private", + "default_public", + "only_private", + "other"]; + deserializer.deserialize_struct("SharingLinkPolicy", VARIANTS, EnumVisitor) } +} - pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( +impl ::serde::ser::Serialize for SharingLinkPolicy { + fn serialize(&self, serializer: S) -> Result { + // union serializer + use serde::ser::SerializeStruct; + match self { + SharingLinkPolicy::DefaultNoOne => { + // unit + let mut s = serializer.serialize_struct("SharingLinkPolicy", 1)?; + s.serialize_field(".tag", "default_no_one")?; + s.end() + } + SharingLinkPolicy::DefaultPrivate => { + // unit + let mut s = serializer.serialize_struct("SharingLinkPolicy", 1)?; + s.serialize_field(".tag", "default_private")?; + s.end() + } + SharingLinkPolicy::DefaultPublic => { + // unit + let mut s = serializer.serialize_struct("SharingLinkPolicy", 1)?; + s.serialize_field(".tag", "default_public")?; + s.end() + } + SharingLinkPolicy::OnlyPrivate => { + // unit + let mut s = serializer.serialize_struct("SharingLinkPolicy", 1)?; + s.serialize_field(".tag", "only_private")?; + s.end() + } + SharingLinkPolicy::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) + } + } +} + +/// External sharing policy +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // variants may be added in the future +pub enum SharingMemberPolicy { + Allow, + Forbid, + ForbidWithExclusions, + /// Catch-all used for unrecognized values returned from the server. Encountering this value + /// typically indicates that this SDK version is out of date. + Other, +} + +impl<'de> ::serde::de::Deserialize<'de> for SharingMemberPolicy { + fn deserialize>(deserializer: D) -> Result { + // union deserializer + use serde::de::{self, MapAccess, Visitor}; + struct EnumVisitor; + impl<'de> Visitor<'de> for EnumVisitor { + type Value = SharingMemberPolicy; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a SharingMemberPolicy structure") + } + fn visit_map>(self, mut map: V) -> Result { + let tag: &str = match map.next_key()? { + Some(".tag") => map.next_value()?, + _ => return Err(de::Error::missing_field(".tag")) + }; + let value = match tag { + "allow" => SharingMemberPolicy::Allow, + "forbid" => SharingMemberPolicy::Forbid, + "forbid_with_exclusions" => SharingMemberPolicy::ForbidWithExclusions, + _ => SharingMemberPolicy::Other, + }; + crate::eat_json_fields(&mut map)?; + Ok(value) + } + } + const VARIANTS: &[&str] = &["allow", + "forbid", + "forbid_with_exclusions", + "other"]; + deserializer.deserialize_struct("SharingMemberPolicy", VARIANTS, EnumVisitor) + } +} + +impl ::serde::ser::Serialize for SharingMemberPolicy { + fn serialize(&self, serializer: S) -> Result { + // union serializer + use serde::ser::SerializeStruct; + match self { + SharingMemberPolicy::Allow => { + // unit + let mut s = serializer.serialize_struct("SharingMemberPolicy", 1)?; + s.serialize_field(".tag", "allow")?; + s.end() + } + SharingMemberPolicy::Forbid => { + // unit + let mut s = serializer.serialize_struct("SharingMemberPolicy", 1)?; + s.serialize_field(".tag", "forbid")?; + s.end() + } + SharingMemberPolicy::ForbidWithExclusions => { + // unit + let mut s = serializer.serialize_struct("SharingMemberPolicy", 1)?; + s.serialize_field(".tag", "forbid_with_exclusions")?; + s.end() + } + SharingMemberPolicy::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) + } + } +} + +/// Disabled downloads for link. +#[derive(Debug, Clone, PartialEq, Eq, Default)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct ShmodelDisableDownloadsDetails { + /// Shared link owner details. Might be missing due to historical data gap. + pub shared_link_owner: Option, +} + +impl ShmodelDisableDownloadsDetails { + pub fn with_shared_link_owner(mut self, value: UserLogInfo) -> Self { + self.shared_link_owner = Some(value); + self + } +} + +const SHMODEL_DISABLE_DOWNLOADS_DETAILS_FIELDS: &[&str] = &["shared_link_owner"]; +impl ShmodelDisableDownloadsDetails { + // no _opt deserializer + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - optional: bool, - ) -> Result, V::Error> { - let mut field_shared_content_access_level = None; - let mut field_shared_content_link = None; - let mut nothing = true; + ) -> Result { + let mut field_shared_link_owner = None; while let Some(key) = map.next_key::<&str>()? { - nothing = false; match key { - "shared_content_access_level" => { - if field_shared_content_access_level.is_some() { - return Err(::serde::de::Error::duplicate_field("shared_content_access_level")); - } - field_shared_content_access_level = Some(map.next_value()?); - } - "shared_content_link" => { - if field_shared_content_link.is_some() { - return Err(::serde::de::Error::duplicate_field("shared_content_link")); + "shared_link_owner" => { + if field_shared_link_owner.is_some() { + return Err(::serde::de::Error::duplicate_field("shared_link_owner")); } - field_shared_content_link = Some(map.next_value()?); + field_shared_link_owner = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -97702,14 +120266,10 @@ impl SharedLinkSettingsRemovePasswordDetails { } } } - if optional && nothing { - return Ok(None); - } - let result = SharedLinkSettingsRemovePasswordDetails { - shared_content_access_level: field_shared_content_access_level.ok_or_else(|| ::serde::de::Error::missing_field("shared_content_access_level"))?, - shared_content_link: field_shared_content_link.and_then(Option::flatten), + let result = ShmodelDisableDownloadsDetails { + shared_link_owner: field_shared_link_owner.and_then(Option::flatten), }; - Ok(Some(result)) + Ok(result) } pub(crate) fn internal_serialize( @@ -97717,37 +120277,36 @@ impl SharedLinkSettingsRemovePasswordDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("shared_content_access_level", &self.shared_content_access_level)?; - if let Some(val) = &self.shared_content_link { - s.serialize_field("shared_content_link", val)?; + if let Some(val) = &self.shared_link_owner { + s.serialize_field("shared_link_owner", val)?; } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for SharedLinkSettingsRemovePasswordDetails { +impl<'de> ::serde::de::Deserialize<'de> for ShmodelDisableDownloadsDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SharedLinkSettingsRemovePasswordDetails; + type Value = ShmodelDisableDownloadsDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SharedLinkSettingsRemovePasswordDetails struct") + f.write_str("a ShmodelDisableDownloadsDetails struct") } fn visit_map>(self, map: V) -> Result { - SharedLinkSettingsRemovePasswordDetails::internal_deserialize(map) + ShmodelDisableDownloadsDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("SharedLinkSettingsRemovePasswordDetails", SHARED_LINK_SETTINGS_REMOVE_PASSWORD_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("ShmodelDisableDownloadsDetails", SHMODEL_DISABLE_DOWNLOADS_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SharedLinkSettingsRemovePasswordDetails { +impl ::serde::ser::Serialize for ShmodelDisableDownloadsDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SharedLinkSettingsRemovePasswordDetails", 2)?; + let mut s = serializer.serialize_struct("ShmodelDisableDownloadsDetails", 1)?; self.internal_serialize::(&mut s)?; s.end() } @@ -97755,30 +120314,30 @@ impl ::serde::ser::Serialize for SharedLinkSettingsRemovePasswordDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SharedLinkSettingsRemovePasswordType { +pub struct ShmodelDisableDownloadsType { pub description: String, } -impl SharedLinkSettingsRemovePasswordType { +impl ShmodelDisableDownloadsType { pub fn new(description: String) -> Self { - SharedLinkSettingsRemovePasswordType { + ShmodelDisableDownloadsType { description, } } } -const SHARED_LINK_SETTINGS_REMOVE_PASSWORD_TYPE_FIELDS: &[&str] = &["description"]; -impl SharedLinkSettingsRemovePasswordType { +const SHMODEL_DISABLE_DOWNLOADS_TYPE_FIELDS: &[&str] = &["description"]; +impl ShmodelDisableDownloadsType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -97799,7 +120358,7 @@ impl SharedLinkSettingsRemovePasswordType { if optional && nothing { return Ok(None); } - let result = SharedLinkSettingsRemovePasswordType { + let result = ShmodelDisableDownloadsType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -97815,65 +120374,56 @@ impl SharedLinkSettingsRemovePasswordType { } } -impl<'de> ::serde::de::Deserialize<'de> for SharedLinkSettingsRemovePasswordType { +impl<'de> ::serde::de::Deserialize<'de> for ShmodelDisableDownloadsType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SharedLinkSettingsRemovePasswordType; + type Value = ShmodelDisableDownloadsType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SharedLinkSettingsRemovePasswordType struct") + f.write_str("a ShmodelDisableDownloadsType struct") } fn visit_map>(self, map: V) -> Result { - SharedLinkSettingsRemovePasswordType::internal_deserialize(map) + ShmodelDisableDownloadsType::internal_deserialize(map) } } - deserializer.deserialize_struct("SharedLinkSettingsRemovePasswordType", SHARED_LINK_SETTINGS_REMOVE_PASSWORD_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("ShmodelDisableDownloadsType", SHMODEL_DISABLE_DOWNLOADS_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SharedLinkSettingsRemovePasswordType { +impl ::serde::ser::Serialize for ShmodelDisableDownloadsType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SharedLinkSettingsRemovePasswordType", 1)?; + let mut s = serializer.serialize_struct("ShmodelDisableDownloadsType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Added members as audience of shared link. +/// Enabled downloads for link. #[derive(Debug, Clone, PartialEq, Eq, Default)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SharedLinkShareDetails { +pub struct ShmodelEnableDownloadsDetails { /// Shared link owner details. Might be missing due to historical data gap. pub shared_link_owner: Option, - /// Users without a Dropbox account that were added as shared link audience. - pub external_users: Option>, } -impl SharedLinkShareDetails { +impl ShmodelEnableDownloadsDetails { pub fn with_shared_link_owner(mut self, value: UserLogInfo) -> Self { self.shared_link_owner = Some(value); self } - - pub fn with_external_users(mut self, value: Vec) -> Self { - self.external_users = Some(value); - self - } } -const SHARED_LINK_SHARE_DETAILS_FIELDS: &[&str] = &["shared_link_owner", - "external_users"]; -impl SharedLinkShareDetails { +const SHMODEL_ENABLE_DOWNLOADS_DETAILS_FIELDS: &[&str] = &["shared_link_owner"]; +impl ShmodelEnableDownloadsDetails { // no _opt deserializer pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - ) -> Result { + ) -> Result { let mut field_shared_link_owner = None; - let mut field_external_users = None; while let Some(key) = map.next_key::<&str>()? { match key { "shared_link_owner" => { @@ -97882,21 +120432,14 @@ impl SharedLinkShareDetails { } field_shared_link_owner = Some(map.next_value()?); } - "external_users" => { - if field_external_users.is_some() { - return Err(::serde::de::Error::duplicate_field("external_users")); - } - field_external_users = Some(map.next_value()?); - } _ => { // unknown field allowed and ignored map.next_value::<::serde_json::Value>()?; } } } - let result = SharedLinkShareDetails { + let result = ShmodelEnableDownloadsDetails { shared_link_owner: field_shared_link_owner.and_then(Option::flatten), - external_users: field_external_users.and_then(Option::flatten), }; Ok(result) } @@ -97909,36 +120452,33 @@ impl SharedLinkShareDetails { if let Some(val) = &self.shared_link_owner { s.serialize_field("shared_link_owner", val)?; } - if let Some(val) = &self.external_users { - s.serialize_field("external_users", val)?; - } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for SharedLinkShareDetails { +impl<'de> ::serde::de::Deserialize<'de> for ShmodelEnableDownloadsDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SharedLinkShareDetails; + type Value = ShmodelEnableDownloadsDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SharedLinkShareDetails struct") + f.write_str("a ShmodelEnableDownloadsDetails struct") } fn visit_map>(self, map: V) -> Result { - SharedLinkShareDetails::internal_deserialize(map) + ShmodelEnableDownloadsDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("SharedLinkShareDetails", SHARED_LINK_SHARE_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("ShmodelEnableDownloadsDetails", SHMODEL_ENABLE_DOWNLOADS_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SharedLinkShareDetails { +impl ::serde::ser::Serialize for ShmodelEnableDownloadsDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SharedLinkShareDetails", 2)?; + let mut s = serializer.serialize_struct("ShmodelEnableDownloadsDetails", 1)?; self.internal_serialize::(&mut s)?; s.end() } @@ -97946,30 +120486,30 @@ impl ::serde::ser::Serialize for SharedLinkShareDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SharedLinkShareType { +pub struct ShmodelEnableDownloadsType { pub description: String, } -impl SharedLinkShareType { +impl ShmodelEnableDownloadsType { pub fn new(description: String) -> Self { - SharedLinkShareType { + ShmodelEnableDownloadsType { description, } } } -const SHARED_LINK_SHARE_TYPE_FIELDS: &[&str] = &["description"]; -impl SharedLinkShareType { +const SHMODEL_ENABLE_DOWNLOADS_TYPE_FIELDS: &[&str] = &["description"]; +impl ShmodelEnableDownloadsType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -97990,7 +120530,7 @@ impl SharedLinkShareType { if optional && nothing { return Ok(None); } - let result = SharedLinkShareType { + let result = ShmodelEnableDownloadsType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -98006,142 +120546,104 @@ impl SharedLinkShareType { } } -impl<'de> ::serde::de::Deserialize<'de> for SharedLinkShareType { +impl<'de> ::serde::de::Deserialize<'de> for ShmodelEnableDownloadsType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SharedLinkShareType; + type Value = ShmodelEnableDownloadsType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SharedLinkShareType struct") + f.write_str("a ShmodelEnableDownloadsType struct") } fn visit_map>(self, map: V) -> Result { - SharedLinkShareType::internal_deserialize(map) + ShmodelEnableDownloadsType::internal_deserialize(map) } } - deserializer.deserialize_struct("SharedLinkShareType", SHARED_LINK_SHARE_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("ShmodelEnableDownloadsType", SHMODEL_ENABLE_DOWNLOADS_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SharedLinkShareType { +impl ::serde::ser::Serialize for ShmodelEnableDownloadsType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SharedLinkShareType", 1)?; + let mut s = serializer.serialize_struct("ShmodelEnableDownloadsType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Opened shared link. +/// Shared link with group. #[derive(Debug, Clone, PartialEq, Eq, Default)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SharedLinkViewDetails { - /// Shared link owner details. Might be missing due to historical data gap. - pub shared_link_owner: Option, -} - -impl SharedLinkViewDetails { - pub fn with_shared_link_owner(mut self, value: UserLogInfo) -> Self { - self.shared_link_owner = Some(value); - self - } +pub struct ShmodelGroupShareDetails { } -const SHARED_LINK_VIEW_DETAILS_FIELDS: &[&str] = &["shared_link_owner"]; -impl SharedLinkViewDetails { +const SHMODEL_GROUP_SHARE_DETAILS_FIELDS: &[&str] = &[]; +impl ShmodelGroupShareDetails { // no _opt deserializer pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - ) -> Result { - let mut field_shared_link_owner = None; - while let Some(key) = map.next_key::<&str>()? { - match key { - "shared_link_owner" => { - if field_shared_link_owner.is_some() { - return Err(::serde::de::Error::duplicate_field("shared_link_owner")); - } - field_shared_link_owner = Some(map.next_value()?); - } - _ => { - // unknown field allowed and ignored - map.next_value::<::serde_json::Value>()?; - } - } - } - let result = SharedLinkViewDetails { - shared_link_owner: field_shared_link_owner.and_then(Option::flatten), - }; - Ok(result) - } - - pub(crate) fn internal_serialize( - &self, - s: &mut S::SerializeStruct, - ) -> Result<(), S::Error> { - use serde::ser::SerializeStruct; - if let Some(val) = &self.shared_link_owner { - s.serialize_field("shared_link_owner", val)?; - } - Ok(()) + ) -> Result { + // ignore any fields found; none are presently recognized + crate::eat_json_fields(&mut map)?; + Ok(ShmodelGroupShareDetails {}) } } -impl<'de> ::serde::de::Deserialize<'de> for SharedLinkViewDetails { +impl<'de> ::serde::de::Deserialize<'de> for ShmodelGroupShareDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SharedLinkViewDetails; + type Value = ShmodelGroupShareDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SharedLinkViewDetails struct") + f.write_str("a ShmodelGroupShareDetails struct") } fn visit_map>(self, map: V) -> Result { - SharedLinkViewDetails::internal_deserialize(map) + ShmodelGroupShareDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("SharedLinkViewDetails", SHARED_LINK_VIEW_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("ShmodelGroupShareDetails", SHMODEL_GROUP_SHARE_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SharedLinkViewDetails { +impl ::serde::ser::Serialize for ShmodelGroupShareDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SharedLinkViewDetails", 1)?; - self.internal_serialize::(&mut s)?; - s.end() + serializer.serialize_struct("ShmodelGroupShareDetails", 0)?.end() } } #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SharedLinkViewType { +pub struct ShmodelGroupShareType { pub description: String, } -impl SharedLinkViewType { +impl ShmodelGroupShareType { pub fn new(description: String) -> Self { - SharedLinkViewType { + ShmodelGroupShareType { description, } } } -const SHARED_LINK_VIEW_TYPE_FIELDS: &[&str] = &["description"]; -impl SharedLinkViewType { +const SHMODEL_GROUP_SHARE_TYPE_FIELDS: &[&str] = &["description"]; +impl ShmodelGroupShareType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -98162,7 +120664,7 @@ impl SharedLinkViewType { if optional && nothing { return Ok(None); } - let result = SharedLinkViewType { + let result = ShmodelGroupShareType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -98178,186 +120680,152 @@ impl SharedLinkViewType { } } -impl<'de> ::serde::de::Deserialize<'de> for SharedLinkViewType { +impl<'de> ::serde::de::Deserialize<'de> for ShmodelGroupShareType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SharedLinkViewType; + type Value = ShmodelGroupShareType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SharedLinkViewType struct") + f.write_str("a ShmodelGroupShareType struct") } fn visit_map>(self, map: V) -> Result { - SharedLinkViewType::internal_deserialize(map) + ShmodelGroupShareType::internal_deserialize(map) } } - deserializer.deserialize_struct("SharedLinkViewType", SHARED_LINK_VIEW_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("ShmodelGroupShareType", SHMODEL_GROUP_SHARE_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SharedLinkViewType { +impl ::serde::ser::Serialize for ShmodelGroupShareType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SharedLinkViewType", 1)?; + let mut s = serializer.serialize_struct("ShmodelGroupShareType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Defines who has access to a shared link. +/// Granted access to showcase. #[derive(Debug, Clone, PartialEq, Eq)] -#[non_exhaustive] // variants may be added in the future -pub enum SharedLinkVisibility { - NoOne, - Password, - Public, - TeamOnly, - /// Catch-all used for unrecognized values returned from the server. Encountering this value - /// typically indicates that this SDK version is out of date. - Other, +#[non_exhaustive] // structs may have more fields added in the future. +pub struct ShowcaseAccessGrantedDetails { + /// Event unique identifier. + pub event_uuid: String, } -impl<'de> ::serde::de::Deserialize<'de> for SharedLinkVisibility { - fn deserialize>(deserializer: D) -> Result { - // union deserializer - use serde::de::{self, MapAccess, Visitor}; - struct EnumVisitor; - impl<'de> Visitor<'de> for EnumVisitor { - type Value = SharedLinkVisibility; - fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SharedLinkVisibility structure") - } - fn visit_map>(self, mut map: V) -> Result { - let tag: &str = match map.next_key()? { - Some(".tag") => map.next_value()?, - _ => return Err(de::Error::missing_field(".tag")) - }; - let value = match tag { - "no_one" => SharedLinkVisibility::NoOne, - "password" => SharedLinkVisibility::Password, - "public" => SharedLinkVisibility::Public, - "team_only" => SharedLinkVisibility::TeamOnly, - _ => SharedLinkVisibility::Other, - }; - crate::eat_json_fields(&mut map)?; - Ok(value) - } +impl ShowcaseAccessGrantedDetails { + pub fn new(event_uuid: String) -> Self { + ShowcaseAccessGrantedDetails { + event_uuid, } - const VARIANTS: &[&str] = &["no_one", - "password", - "public", - "team_only", - "other"]; - deserializer.deserialize_struct("SharedLinkVisibility", VARIANTS, EnumVisitor) } } -impl ::serde::ser::Serialize for SharedLinkVisibility { - fn serialize(&self, serializer: S) -> Result { - // union serializer - use serde::ser::SerializeStruct; - match self { - SharedLinkVisibility::NoOne => { - // unit - let mut s = serializer.serialize_struct("SharedLinkVisibility", 1)?; - s.serialize_field(".tag", "no_one")?; - s.end() - } - SharedLinkVisibility::Password => { - // unit - let mut s = serializer.serialize_struct("SharedLinkVisibility", 1)?; - s.serialize_field(".tag", "password")?; - s.end() - } - SharedLinkVisibility::Public => { - // unit - let mut s = serializer.serialize_struct("SharedLinkVisibility", 1)?; - s.serialize_field(".tag", "public")?; - s.end() - } - SharedLinkVisibility::TeamOnly => { - // unit - let mut s = serializer.serialize_struct("SharedLinkVisibility", 1)?; - s.serialize_field(".tag", "team_only")?; - s.end() +const SHOWCASE_ACCESS_GRANTED_DETAILS_FIELDS: &[&str] = &["event_uuid"]; +impl ShowcaseAccessGrantedDetails { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_event_uuid = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "event_uuid" => { + if field_event_uuid.is_some() { + return Err(::serde::de::Error::duplicate_field("event_uuid")); + } + field_event_uuid = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } } - SharedLinkVisibility::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) } + if optional && nothing { + return Ok(None); + } + let result = ShowcaseAccessGrantedDetails { + event_uuid: field_event_uuid.ok_or_else(|| ::serde::de::Error::missing_field("event_uuid"))?, + }; + Ok(Some(result)) } -} - -/// Opened shared Paper doc. -#[derive(Debug, Clone, PartialEq, Eq, Default)] -#[non_exhaustive] // structs may have more fields added in the future. -pub struct SharedNoteOpenedDetails { -} -const SHARED_NOTE_OPENED_DETAILS_FIELDS: &[&str] = &[]; -impl SharedNoteOpenedDetails { - // no _opt deserializer - pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( - mut map: V, - ) -> Result { - // ignore any fields found; none are presently recognized - crate::eat_json_fields(&mut map)?; - Ok(SharedNoteOpenedDetails {}) + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("event_uuid", &self.event_uuid)?; + Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for SharedNoteOpenedDetails { +impl<'de> ::serde::de::Deserialize<'de> for ShowcaseAccessGrantedDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SharedNoteOpenedDetails; + type Value = ShowcaseAccessGrantedDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SharedNoteOpenedDetails struct") + f.write_str("a ShowcaseAccessGrantedDetails struct") } fn visit_map>(self, map: V) -> Result { - SharedNoteOpenedDetails::internal_deserialize(map) + ShowcaseAccessGrantedDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("SharedNoteOpenedDetails", SHARED_NOTE_OPENED_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("ShowcaseAccessGrantedDetails", SHOWCASE_ACCESS_GRANTED_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SharedNoteOpenedDetails { +impl ::serde::ser::Serialize for ShowcaseAccessGrantedDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - serializer.serialize_struct("SharedNoteOpenedDetails", 0)?.end() + let mut s = serializer.serialize_struct("ShowcaseAccessGrantedDetails", 1)?; + self.internal_serialize::(&mut s)?; + s.end() } } #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SharedNoteOpenedType { +pub struct ShowcaseAccessGrantedType { pub description: String, } -impl SharedNoteOpenedType { +impl ShowcaseAccessGrantedType { pub fn new(description: String) -> Self { - SharedNoteOpenedType { + ShowcaseAccessGrantedType { description, } } } -const SHARED_NOTE_OPENED_TYPE_FIELDS: &[&str] = &["description"]; -impl SharedNoteOpenedType { +const SHOWCASE_ACCESS_GRANTED_TYPE_FIELDS: &[&str] = &["description"]; +impl ShowcaseAccessGrantedType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -98378,7 +120846,7 @@ impl SharedNoteOpenedType { if optional && nothing { return Ok(None); } - let result = SharedNoteOpenedType { + let result = ShowcaseAccessGrantedType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -98394,88 +120862,72 @@ impl SharedNoteOpenedType { } } -impl<'de> ::serde::de::Deserialize<'de> for SharedNoteOpenedType { +impl<'de> ::serde::de::Deserialize<'de> for ShowcaseAccessGrantedType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SharedNoteOpenedType; + type Value = ShowcaseAccessGrantedType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SharedNoteOpenedType struct") + f.write_str("a ShowcaseAccessGrantedType struct") } fn visit_map>(self, map: V) -> Result { - SharedNoteOpenedType::internal_deserialize(map) + ShowcaseAccessGrantedType::internal_deserialize(map) } } - deserializer.deserialize_struct("SharedNoteOpenedType", SHARED_NOTE_OPENED_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("ShowcaseAccessGrantedType", SHOWCASE_ACCESS_GRANTED_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SharedNoteOpenedType { +impl ::serde::ser::Serialize for ShowcaseAccessGrantedType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SharedNoteOpenedType", 1)?; + let mut s = serializer.serialize_struct("ShowcaseAccessGrantedType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Changed whether team members can join shared folders owned outside team. +/// Added member to showcase. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SharingChangeFolderJoinPolicyDetails { - /// New external join policy. - pub new_value: SharingFolderJoinPolicy, - /// Previous external join policy. Might be missing due to historical data gap. - pub previous_value: Option, +pub struct ShowcaseAddMemberDetails { + /// Event unique identifier. + pub event_uuid: String, } -impl SharingChangeFolderJoinPolicyDetails { - pub fn new(new_value: SharingFolderJoinPolicy) -> Self { - SharingChangeFolderJoinPolicyDetails { - new_value, - previous_value: None, +impl ShowcaseAddMemberDetails { + pub fn new(event_uuid: String) -> Self { + ShowcaseAddMemberDetails { + event_uuid, } } - - pub fn with_previous_value(mut self, value: SharingFolderJoinPolicy) -> Self { - self.previous_value = Some(value); - self - } } -const SHARING_CHANGE_FOLDER_JOIN_POLICY_DETAILS_FIELDS: &[&str] = &["new_value", - "previous_value"]; -impl SharingChangeFolderJoinPolicyDetails { +const SHOWCASE_ADD_MEMBER_DETAILS_FIELDS: &[&str] = &["event_uuid"]; +impl ShowcaseAddMemberDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_new_value = None; - let mut field_previous_value = None; + ) -> Result, V::Error> { + let mut field_event_uuid = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "new_value" => { - if field_new_value.is_some() { - return Err(::serde::de::Error::duplicate_field("new_value")); - } - field_new_value = Some(map.next_value()?); - } - "previous_value" => { - if field_previous_value.is_some() { - return Err(::serde::de::Error::duplicate_field("previous_value")); + "event_uuid" => { + if field_event_uuid.is_some() { + return Err(::serde::de::Error::duplicate_field("event_uuid")); } - field_previous_value = Some(map.next_value()?); + field_event_uuid = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -98486,9 +120938,8 @@ impl SharingChangeFolderJoinPolicyDetails { if optional && nothing { return Ok(None); } - let result = SharingChangeFolderJoinPolicyDetails { - new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, - previous_value: field_previous_value.and_then(Option::flatten), + let result = ShowcaseAddMemberDetails { + event_uuid: field_event_uuid.ok_or_else(|| ::serde::de::Error::missing_field("event_uuid"))?, }; Ok(Some(result)) } @@ -98498,37 +120949,34 @@ impl SharingChangeFolderJoinPolicyDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("new_value", &self.new_value)?; - if let Some(val) = &self.previous_value { - s.serialize_field("previous_value", val)?; - } + s.serialize_field("event_uuid", &self.event_uuid)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for SharingChangeFolderJoinPolicyDetails { +impl<'de> ::serde::de::Deserialize<'de> for ShowcaseAddMemberDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SharingChangeFolderJoinPolicyDetails; + type Value = ShowcaseAddMemberDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SharingChangeFolderJoinPolicyDetails struct") + f.write_str("a ShowcaseAddMemberDetails struct") } fn visit_map>(self, map: V) -> Result { - SharingChangeFolderJoinPolicyDetails::internal_deserialize(map) + ShowcaseAddMemberDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("SharingChangeFolderJoinPolicyDetails", SHARING_CHANGE_FOLDER_JOIN_POLICY_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("ShowcaseAddMemberDetails", SHOWCASE_ADD_MEMBER_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SharingChangeFolderJoinPolicyDetails { +impl ::serde::ser::Serialize for ShowcaseAddMemberDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SharingChangeFolderJoinPolicyDetails", 2)?; + let mut s = serializer.serialize_struct("ShowcaseAddMemberDetails", 1)?; self.internal_serialize::(&mut s)?; s.end() } @@ -98536,30 +120984,30 @@ impl ::serde::ser::Serialize for SharingChangeFolderJoinPolicyDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SharingChangeFolderJoinPolicyType { +pub struct ShowcaseAddMemberType { pub description: String, } -impl SharingChangeFolderJoinPolicyType { +impl ShowcaseAddMemberType { pub fn new(description: String) -> Self { - SharingChangeFolderJoinPolicyType { + ShowcaseAddMemberType { description, } } } -const SHARING_CHANGE_FOLDER_JOIN_POLICY_TYPE_FIELDS: &[&str] = &["description"]; -impl SharingChangeFolderJoinPolicyType { +const SHOWCASE_ADD_MEMBER_TYPE_FIELDS: &[&str] = &["description"]; +impl ShowcaseAddMemberType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -98580,7 +121028,7 @@ impl SharingChangeFolderJoinPolicyType { if optional && nothing { return Ok(None); } - let result = SharingChangeFolderJoinPolicyType { + let result = ShowcaseAddMemberType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -98596,88 +121044,72 @@ impl SharingChangeFolderJoinPolicyType { } } -impl<'de> ::serde::de::Deserialize<'de> for SharingChangeFolderJoinPolicyType { +impl<'de> ::serde::de::Deserialize<'de> for ShowcaseAddMemberType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SharingChangeFolderJoinPolicyType; + type Value = ShowcaseAddMemberType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SharingChangeFolderJoinPolicyType struct") + f.write_str("a ShowcaseAddMemberType struct") } fn visit_map>(self, map: V) -> Result { - SharingChangeFolderJoinPolicyType::internal_deserialize(map) + ShowcaseAddMemberType::internal_deserialize(map) } } - deserializer.deserialize_struct("SharingChangeFolderJoinPolicyType", SHARING_CHANGE_FOLDER_JOIN_POLICY_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("ShowcaseAddMemberType", SHOWCASE_ADD_MEMBER_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SharingChangeFolderJoinPolicyType { +impl ::serde::ser::Serialize for ShowcaseAddMemberType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SharingChangeFolderJoinPolicyType", 1)?; + let mut s = serializer.serialize_struct("ShowcaseAddMemberType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Changed the allow remove or change expiration policy for the links shared outside of the team. +/// Archived showcase. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SharingChangeLinkAllowChangeExpirationPolicyDetails { - /// To. - pub new_value: EnforceLinkPasswordPolicy, - /// From. - pub previous_value: Option, +pub struct ShowcaseArchivedDetails { + /// Event unique identifier. + pub event_uuid: String, } -impl SharingChangeLinkAllowChangeExpirationPolicyDetails { - pub fn new(new_value: EnforceLinkPasswordPolicy) -> Self { - SharingChangeLinkAllowChangeExpirationPolicyDetails { - new_value, - previous_value: None, +impl ShowcaseArchivedDetails { + pub fn new(event_uuid: String) -> Self { + ShowcaseArchivedDetails { + event_uuid, } } - - pub fn with_previous_value(mut self, value: EnforceLinkPasswordPolicy) -> Self { - self.previous_value = Some(value); - self - } } -const SHARING_CHANGE_LINK_ALLOW_CHANGE_EXPIRATION_POLICY_DETAILS_FIELDS: &[&str] = &["new_value", - "previous_value"]; -impl SharingChangeLinkAllowChangeExpirationPolicyDetails { +const SHOWCASE_ARCHIVED_DETAILS_FIELDS: &[&str] = &["event_uuid"]; +impl ShowcaseArchivedDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_new_value = None; - let mut field_previous_value = None; + ) -> Result, V::Error> { + let mut field_event_uuid = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "new_value" => { - if field_new_value.is_some() { - return Err(::serde::de::Error::duplicate_field("new_value")); - } - field_new_value = Some(map.next_value()?); - } - "previous_value" => { - if field_previous_value.is_some() { - return Err(::serde::de::Error::duplicate_field("previous_value")); + "event_uuid" => { + if field_event_uuid.is_some() { + return Err(::serde::de::Error::duplicate_field("event_uuid")); } - field_previous_value = Some(map.next_value()?); + field_event_uuid = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -98688,9 +121120,8 @@ impl SharingChangeLinkAllowChangeExpirationPolicyDetails { if optional && nothing { return Ok(None); } - let result = SharingChangeLinkAllowChangeExpirationPolicyDetails { - new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, - previous_value: field_previous_value.and_then(Option::flatten), + let result = ShowcaseArchivedDetails { + event_uuid: field_event_uuid.ok_or_else(|| ::serde::de::Error::missing_field("event_uuid"))?, }; Ok(Some(result)) } @@ -98700,37 +121131,34 @@ impl SharingChangeLinkAllowChangeExpirationPolicyDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("new_value", &self.new_value)?; - if let Some(val) = &self.previous_value { - s.serialize_field("previous_value", val)?; - } + s.serialize_field("event_uuid", &self.event_uuid)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for SharingChangeLinkAllowChangeExpirationPolicyDetails { +impl<'de> ::serde::de::Deserialize<'de> for ShowcaseArchivedDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SharingChangeLinkAllowChangeExpirationPolicyDetails; + type Value = ShowcaseArchivedDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SharingChangeLinkAllowChangeExpirationPolicyDetails struct") + f.write_str("a ShowcaseArchivedDetails struct") } fn visit_map>(self, map: V) -> Result { - SharingChangeLinkAllowChangeExpirationPolicyDetails::internal_deserialize(map) + ShowcaseArchivedDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("SharingChangeLinkAllowChangeExpirationPolicyDetails", SHARING_CHANGE_LINK_ALLOW_CHANGE_EXPIRATION_POLICY_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("ShowcaseArchivedDetails", SHOWCASE_ARCHIVED_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SharingChangeLinkAllowChangeExpirationPolicyDetails { +impl ::serde::ser::Serialize for ShowcaseArchivedDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SharingChangeLinkAllowChangeExpirationPolicyDetails", 2)?; + let mut s = serializer.serialize_struct("ShowcaseArchivedDetails", 1)?; self.internal_serialize::(&mut s)?; s.end() } @@ -98738,30 +121166,30 @@ impl ::serde::ser::Serialize for SharingChangeLinkAllowChangeExpirationPolicyDet #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SharingChangeLinkAllowChangeExpirationPolicyType { +pub struct ShowcaseArchivedType { pub description: String, } -impl SharingChangeLinkAllowChangeExpirationPolicyType { +impl ShowcaseArchivedType { pub fn new(description: String) -> Self { - SharingChangeLinkAllowChangeExpirationPolicyType { + ShowcaseArchivedType { description, } } } -const SHARING_CHANGE_LINK_ALLOW_CHANGE_EXPIRATION_POLICY_TYPE_FIELDS: &[&str] = &["description"]; -impl SharingChangeLinkAllowChangeExpirationPolicyType { +const SHOWCASE_ARCHIVED_TYPE_FIELDS: &[&str] = &["description"]; +impl ShowcaseArchivedType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -98782,7 +121210,7 @@ impl SharingChangeLinkAllowChangeExpirationPolicyType { if optional && nothing { return Ok(None); } - let result = SharingChangeLinkAllowChangeExpirationPolicyType { + let result = ShowcaseArchivedType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -98798,71 +121226,66 @@ impl SharingChangeLinkAllowChangeExpirationPolicyType { } } -impl<'de> ::serde::de::Deserialize<'de> for SharingChangeLinkAllowChangeExpirationPolicyType { +impl<'de> ::serde::de::Deserialize<'de> for ShowcaseArchivedType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SharingChangeLinkAllowChangeExpirationPolicyType; + type Value = ShowcaseArchivedType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SharingChangeLinkAllowChangeExpirationPolicyType struct") + f.write_str("a ShowcaseArchivedType struct") } fn visit_map>(self, map: V) -> Result { - SharingChangeLinkAllowChangeExpirationPolicyType::internal_deserialize(map) + ShowcaseArchivedType::internal_deserialize(map) } } - deserializer.deserialize_struct("SharingChangeLinkAllowChangeExpirationPolicyType", SHARING_CHANGE_LINK_ALLOW_CHANGE_EXPIRATION_POLICY_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("ShowcaseArchivedType", SHOWCASE_ARCHIVED_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SharingChangeLinkAllowChangeExpirationPolicyType { +impl ::serde::ser::Serialize for ShowcaseArchivedType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SharingChangeLinkAllowChangeExpirationPolicyType", 1)?; + let mut s = serializer.serialize_struct("ShowcaseArchivedType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Changed the default expiration for the links shared outside of the team. +/// Enabled/disabled downloading files from Dropbox Showcase for team. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SharingChangeLinkDefaultExpirationPolicyDetails { - /// To. - pub new_value: DefaultLinkExpirationDaysPolicy, - /// From. - pub previous_value: Option, +pub struct ShowcaseChangeDownloadPolicyDetails { + /// New Dropbox Showcase download policy. + pub new_value: ShowcaseDownloadPolicy, + /// Previous Dropbox Showcase download policy. + pub previous_value: ShowcaseDownloadPolicy, } -impl SharingChangeLinkDefaultExpirationPolicyDetails { - pub fn new(new_value: DefaultLinkExpirationDaysPolicy) -> Self { - SharingChangeLinkDefaultExpirationPolicyDetails { +impl ShowcaseChangeDownloadPolicyDetails { + pub fn new(new_value: ShowcaseDownloadPolicy, previous_value: ShowcaseDownloadPolicy) -> Self { + ShowcaseChangeDownloadPolicyDetails { new_value, - previous_value: None, + previous_value, } } - - pub fn with_previous_value(mut self, value: DefaultLinkExpirationDaysPolicy) -> Self { - self.previous_value = Some(value); - self - } } -const SHARING_CHANGE_LINK_DEFAULT_EXPIRATION_POLICY_DETAILS_FIELDS: &[&str] = &["new_value", - "previous_value"]; -impl SharingChangeLinkDefaultExpirationPolicyDetails { +const SHOWCASE_CHANGE_DOWNLOAD_POLICY_DETAILS_FIELDS: &[&str] = &["new_value", + "previous_value"]; +impl ShowcaseChangeDownloadPolicyDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_new_value = None; let mut field_previous_value = None; let mut nothing = true; @@ -98890,9 +121313,9 @@ impl SharingChangeLinkDefaultExpirationPolicyDetails { if optional && nothing { return Ok(None); } - let result = SharingChangeLinkDefaultExpirationPolicyDetails { + let result = ShowcaseChangeDownloadPolicyDetails { new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, - previous_value: field_previous_value.and_then(Option::flatten), + previous_value: field_previous_value.ok_or_else(|| ::serde::de::Error::missing_field("previous_value"))?, }; Ok(Some(result)) } @@ -98903,36 +121326,34 @@ impl SharingChangeLinkDefaultExpirationPolicyDetails { ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; s.serialize_field("new_value", &self.new_value)?; - if let Some(val) = &self.previous_value { - s.serialize_field("previous_value", val)?; - } + s.serialize_field("previous_value", &self.previous_value)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for SharingChangeLinkDefaultExpirationPolicyDetails { +impl<'de> ::serde::de::Deserialize<'de> for ShowcaseChangeDownloadPolicyDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SharingChangeLinkDefaultExpirationPolicyDetails; + type Value = ShowcaseChangeDownloadPolicyDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SharingChangeLinkDefaultExpirationPolicyDetails struct") + f.write_str("a ShowcaseChangeDownloadPolicyDetails struct") } fn visit_map>(self, map: V) -> Result { - SharingChangeLinkDefaultExpirationPolicyDetails::internal_deserialize(map) + ShowcaseChangeDownloadPolicyDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("SharingChangeLinkDefaultExpirationPolicyDetails", SHARING_CHANGE_LINK_DEFAULT_EXPIRATION_POLICY_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("ShowcaseChangeDownloadPolicyDetails", SHOWCASE_CHANGE_DOWNLOAD_POLICY_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SharingChangeLinkDefaultExpirationPolicyDetails { +impl ::serde::ser::Serialize for ShowcaseChangeDownloadPolicyDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SharingChangeLinkDefaultExpirationPolicyDetails", 2)?; + let mut s = serializer.serialize_struct("ShowcaseChangeDownloadPolicyDetails", 2)?; self.internal_serialize::(&mut s)?; s.end() } @@ -98940,30 +121361,30 @@ impl ::serde::ser::Serialize for SharingChangeLinkDefaultExpirationPolicyDetails #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SharingChangeLinkDefaultExpirationPolicyType { +pub struct ShowcaseChangeDownloadPolicyType { pub description: String, } -impl SharingChangeLinkDefaultExpirationPolicyType { +impl ShowcaseChangeDownloadPolicyType { pub fn new(description: String) -> Self { - SharingChangeLinkDefaultExpirationPolicyType { + ShowcaseChangeDownloadPolicyType { description, } } } -const SHARING_CHANGE_LINK_DEFAULT_EXPIRATION_POLICY_TYPE_FIELDS: &[&str] = &["description"]; -impl SharingChangeLinkDefaultExpirationPolicyType { +const SHOWCASE_CHANGE_DOWNLOAD_POLICY_TYPE_FIELDS: &[&str] = &["description"]; +impl ShowcaseChangeDownloadPolicyType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -98984,7 +121405,7 @@ impl SharingChangeLinkDefaultExpirationPolicyType { if optional && nothing { return Ok(None); } - let result = SharingChangeLinkDefaultExpirationPolicyType { + let result = ShowcaseChangeDownloadPolicyType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -99000,71 +121421,66 @@ impl SharingChangeLinkDefaultExpirationPolicyType { } } -impl<'de> ::serde::de::Deserialize<'de> for SharingChangeLinkDefaultExpirationPolicyType { +impl<'de> ::serde::de::Deserialize<'de> for ShowcaseChangeDownloadPolicyType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SharingChangeLinkDefaultExpirationPolicyType; + type Value = ShowcaseChangeDownloadPolicyType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SharingChangeLinkDefaultExpirationPolicyType struct") + f.write_str("a ShowcaseChangeDownloadPolicyType struct") } fn visit_map>(self, map: V) -> Result { - SharingChangeLinkDefaultExpirationPolicyType::internal_deserialize(map) + ShowcaseChangeDownloadPolicyType::internal_deserialize(map) } } - deserializer.deserialize_struct("SharingChangeLinkDefaultExpirationPolicyType", SHARING_CHANGE_LINK_DEFAULT_EXPIRATION_POLICY_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("ShowcaseChangeDownloadPolicyType", SHOWCASE_CHANGE_DOWNLOAD_POLICY_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SharingChangeLinkDefaultExpirationPolicyType { +impl ::serde::ser::Serialize for ShowcaseChangeDownloadPolicyType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SharingChangeLinkDefaultExpirationPolicyType", 1)?; + let mut s = serializer.serialize_struct("ShowcaseChangeDownloadPolicyType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Changed the password requirement for the links shared outside of the team. +/// Enabled/disabled Dropbox Showcase for team. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SharingChangeLinkEnforcePasswordPolicyDetails { - /// To. - pub new_value: ChangeLinkExpirationPolicy, - /// From. - pub previous_value: Option, +pub struct ShowcaseChangeEnabledPolicyDetails { + /// New Dropbox Showcase policy. + pub new_value: ShowcaseEnabledPolicy, + /// Previous Dropbox Showcase policy. + pub previous_value: ShowcaseEnabledPolicy, } -impl SharingChangeLinkEnforcePasswordPolicyDetails { - pub fn new(new_value: ChangeLinkExpirationPolicy) -> Self { - SharingChangeLinkEnforcePasswordPolicyDetails { +impl ShowcaseChangeEnabledPolicyDetails { + pub fn new(new_value: ShowcaseEnabledPolicy, previous_value: ShowcaseEnabledPolicy) -> Self { + ShowcaseChangeEnabledPolicyDetails { new_value, - previous_value: None, + previous_value, } } - - pub fn with_previous_value(mut self, value: ChangeLinkExpirationPolicy) -> Self { - self.previous_value = Some(value); - self - } } -const SHARING_CHANGE_LINK_ENFORCE_PASSWORD_POLICY_DETAILS_FIELDS: &[&str] = &["new_value", - "previous_value"]; -impl SharingChangeLinkEnforcePasswordPolicyDetails { +const SHOWCASE_CHANGE_ENABLED_POLICY_DETAILS_FIELDS: &[&str] = &["new_value", + "previous_value"]; +impl ShowcaseChangeEnabledPolicyDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_new_value = None; let mut field_previous_value = None; let mut nothing = true; @@ -99092,9 +121508,9 @@ impl SharingChangeLinkEnforcePasswordPolicyDetails { if optional && nothing { return Ok(None); } - let result = SharingChangeLinkEnforcePasswordPolicyDetails { + let result = ShowcaseChangeEnabledPolicyDetails { new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, - previous_value: field_previous_value.and_then(Option::flatten), + previous_value: field_previous_value.ok_or_else(|| ::serde::de::Error::missing_field("previous_value"))?, }; Ok(Some(result)) } @@ -99105,36 +121521,34 @@ impl SharingChangeLinkEnforcePasswordPolicyDetails { ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; s.serialize_field("new_value", &self.new_value)?; - if let Some(val) = &self.previous_value { - s.serialize_field("previous_value", val)?; - } + s.serialize_field("previous_value", &self.previous_value)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for SharingChangeLinkEnforcePasswordPolicyDetails { +impl<'de> ::serde::de::Deserialize<'de> for ShowcaseChangeEnabledPolicyDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SharingChangeLinkEnforcePasswordPolicyDetails; + type Value = ShowcaseChangeEnabledPolicyDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SharingChangeLinkEnforcePasswordPolicyDetails struct") + f.write_str("a ShowcaseChangeEnabledPolicyDetails struct") } fn visit_map>(self, map: V) -> Result { - SharingChangeLinkEnforcePasswordPolicyDetails::internal_deserialize(map) + ShowcaseChangeEnabledPolicyDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("SharingChangeLinkEnforcePasswordPolicyDetails", SHARING_CHANGE_LINK_ENFORCE_PASSWORD_POLICY_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("ShowcaseChangeEnabledPolicyDetails", SHOWCASE_CHANGE_ENABLED_POLICY_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SharingChangeLinkEnforcePasswordPolicyDetails { +impl ::serde::ser::Serialize for ShowcaseChangeEnabledPolicyDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SharingChangeLinkEnforcePasswordPolicyDetails", 2)?; + let mut s = serializer.serialize_struct("ShowcaseChangeEnabledPolicyDetails", 2)?; self.internal_serialize::(&mut s)?; s.end() } @@ -99142,30 +121556,30 @@ impl ::serde::ser::Serialize for SharingChangeLinkEnforcePasswordPolicyDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SharingChangeLinkEnforcePasswordPolicyType { +pub struct ShowcaseChangeEnabledPolicyType { pub description: String, } -impl SharingChangeLinkEnforcePasswordPolicyType { +impl ShowcaseChangeEnabledPolicyType { pub fn new(description: String) -> Self { - SharingChangeLinkEnforcePasswordPolicyType { + ShowcaseChangeEnabledPolicyType { description, } } } -const SHARING_CHANGE_LINK_ENFORCE_PASSWORD_POLICY_TYPE_FIELDS: &[&str] = &["description"]; -impl SharingChangeLinkEnforcePasswordPolicyType { +const SHOWCASE_CHANGE_ENABLED_POLICY_TYPE_FIELDS: &[&str] = &["description"]; +impl ShowcaseChangeEnabledPolicyType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -99186,7 +121600,7 @@ impl SharingChangeLinkEnforcePasswordPolicyType { if optional && nothing { return Ok(None); } - let result = SharingChangeLinkEnforcePasswordPolicyType { + let result = ShowcaseChangeEnabledPolicyType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -99202,72 +121616,69 @@ impl SharingChangeLinkEnforcePasswordPolicyType { } } -impl<'de> ::serde::de::Deserialize<'de> for SharingChangeLinkEnforcePasswordPolicyType { +impl<'de> ::serde::de::Deserialize<'de> for ShowcaseChangeEnabledPolicyType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SharingChangeLinkEnforcePasswordPolicyType; + type Value = ShowcaseChangeEnabledPolicyType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SharingChangeLinkEnforcePasswordPolicyType struct") + f.write_str("a ShowcaseChangeEnabledPolicyType struct") } fn visit_map>(self, map: V) -> Result { - SharingChangeLinkEnforcePasswordPolicyType::internal_deserialize(map) + ShowcaseChangeEnabledPolicyType::internal_deserialize(map) } } - deserializer.deserialize_struct("SharingChangeLinkEnforcePasswordPolicyType", SHARING_CHANGE_LINK_ENFORCE_PASSWORD_POLICY_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("ShowcaseChangeEnabledPolicyType", SHOWCASE_CHANGE_ENABLED_POLICY_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SharingChangeLinkEnforcePasswordPolicyType { +impl ::serde::ser::Serialize for ShowcaseChangeEnabledPolicyType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SharingChangeLinkEnforcePasswordPolicyType", 1)?; + let mut s = serializer.serialize_struct("ShowcaseChangeEnabledPolicyType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Changed whether members can share links outside team, and if links are accessible only by team -/// members or anyone by default. +/// Enabled/disabled sharing Dropbox Showcase externally for team. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SharingChangeLinkPolicyDetails { - /// New external link accessibility policy. - pub new_value: SharingLinkPolicy, - /// Previous external link accessibility policy. Might be missing due to historical data gap. - pub previous_value: Option, +pub struct ShowcaseChangeExternalSharingPolicyDetails { + /// New Dropbox Showcase external sharing policy. + pub new_value: ShowcaseExternalSharingPolicy, + /// Previous Dropbox Showcase external sharing policy. + pub previous_value: ShowcaseExternalSharingPolicy, } -impl SharingChangeLinkPolicyDetails { - pub fn new(new_value: SharingLinkPolicy) -> Self { - SharingChangeLinkPolicyDetails { +impl ShowcaseChangeExternalSharingPolicyDetails { + pub fn new( + new_value: ShowcaseExternalSharingPolicy, + previous_value: ShowcaseExternalSharingPolicy, + ) -> Self { + ShowcaseChangeExternalSharingPolicyDetails { new_value, - previous_value: None, + previous_value, } } - - pub fn with_previous_value(mut self, value: SharingLinkPolicy) -> Self { - self.previous_value = Some(value); - self - } } -const SHARING_CHANGE_LINK_POLICY_DETAILS_FIELDS: &[&str] = &["new_value", - "previous_value"]; -impl SharingChangeLinkPolicyDetails { +const SHOWCASE_CHANGE_EXTERNAL_SHARING_POLICY_DETAILS_FIELDS: &[&str] = &["new_value", + "previous_value"]; +impl ShowcaseChangeExternalSharingPolicyDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_new_value = None; let mut field_previous_value = None; let mut nothing = true; @@ -99295,9 +121706,9 @@ impl SharingChangeLinkPolicyDetails { if optional && nothing { return Ok(None); } - let result = SharingChangeLinkPolicyDetails { + let result = ShowcaseChangeExternalSharingPolicyDetails { new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, - previous_value: field_previous_value.and_then(Option::flatten), + previous_value: field_previous_value.ok_or_else(|| ::serde::de::Error::missing_field("previous_value"))?, }; Ok(Some(result)) } @@ -99308,36 +121719,34 @@ impl SharingChangeLinkPolicyDetails { ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; s.serialize_field("new_value", &self.new_value)?; - if let Some(val) = &self.previous_value { - s.serialize_field("previous_value", val)?; - } + s.serialize_field("previous_value", &self.previous_value)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for SharingChangeLinkPolicyDetails { +impl<'de> ::serde::de::Deserialize<'de> for ShowcaseChangeExternalSharingPolicyDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SharingChangeLinkPolicyDetails; + type Value = ShowcaseChangeExternalSharingPolicyDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SharingChangeLinkPolicyDetails struct") + f.write_str("a ShowcaseChangeExternalSharingPolicyDetails struct") } fn visit_map>(self, map: V) -> Result { - SharingChangeLinkPolicyDetails::internal_deserialize(map) + ShowcaseChangeExternalSharingPolicyDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("SharingChangeLinkPolicyDetails", SHARING_CHANGE_LINK_POLICY_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("ShowcaseChangeExternalSharingPolicyDetails", SHOWCASE_CHANGE_EXTERNAL_SHARING_POLICY_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SharingChangeLinkPolicyDetails { +impl ::serde::ser::Serialize for ShowcaseChangeExternalSharingPolicyDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SharingChangeLinkPolicyDetails", 2)?; + let mut s = serializer.serialize_struct("ShowcaseChangeExternalSharingPolicyDetails", 2)?; self.internal_serialize::(&mut s)?; s.end() } @@ -99345,30 +121754,30 @@ impl ::serde::ser::Serialize for SharingChangeLinkPolicyDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SharingChangeLinkPolicyType { +pub struct ShowcaseChangeExternalSharingPolicyType { pub description: String, } -impl SharingChangeLinkPolicyType { +impl ShowcaseChangeExternalSharingPolicyType { pub fn new(description: String) -> Self { - SharingChangeLinkPolicyType { + ShowcaseChangeExternalSharingPolicyType { description, } } } -const SHARING_CHANGE_LINK_POLICY_TYPE_FIELDS: &[&str] = &["description"]; -impl SharingChangeLinkPolicyType { +const SHOWCASE_CHANGE_EXTERNAL_SHARING_POLICY_TYPE_FIELDS: &[&str] = &["description"]; +impl ShowcaseChangeExternalSharingPolicyType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -99389,7 +121798,7 @@ impl SharingChangeLinkPolicyType { if optional && nothing { return Ok(None); } - let result = SharingChangeLinkPolicyType { + let result = ShowcaseChangeExternalSharingPolicyType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -99405,88 +121814,72 @@ impl SharingChangeLinkPolicyType { } } -impl<'de> ::serde::de::Deserialize<'de> for SharingChangeLinkPolicyType { +impl<'de> ::serde::de::Deserialize<'de> for ShowcaseChangeExternalSharingPolicyType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SharingChangeLinkPolicyType; + type Value = ShowcaseChangeExternalSharingPolicyType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SharingChangeLinkPolicyType struct") + f.write_str("a ShowcaseChangeExternalSharingPolicyType struct") } fn visit_map>(self, map: V) -> Result { - SharingChangeLinkPolicyType::internal_deserialize(map) + ShowcaseChangeExternalSharingPolicyType::internal_deserialize(map) } } - deserializer.deserialize_struct("SharingChangeLinkPolicyType", SHARING_CHANGE_LINK_POLICY_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("ShowcaseChangeExternalSharingPolicyType", SHOWCASE_CHANGE_EXTERNAL_SHARING_POLICY_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SharingChangeLinkPolicyType { +impl ::serde::ser::Serialize for ShowcaseChangeExternalSharingPolicyType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SharingChangeLinkPolicyType", 1)?; + let mut s = serializer.serialize_struct("ShowcaseChangeExternalSharingPolicyType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Changed whether members can share files/folders outside team. +/// Created showcase. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SharingChangeMemberPolicyDetails { - /// New external invite policy. - pub new_value: SharingMemberPolicy, - /// Previous external invite policy. Might be missing due to historical data gap. - pub previous_value: Option, +pub struct ShowcaseCreatedDetails { + /// Event unique identifier. + pub event_uuid: String, } -impl SharingChangeMemberPolicyDetails { - pub fn new(new_value: SharingMemberPolicy) -> Self { - SharingChangeMemberPolicyDetails { - new_value, - previous_value: None, +impl ShowcaseCreatedDetails { + pub fn new(event_uuid: String) -> Self { + ShowcaseCreatedDetails { + event_uuid, } } - - pub fn with_previous_value(mut self, value: SharingMemberPolicy) -> Self { - self.previous_value = Some(value); - self - } } -const SHARING_CHANGE_MEMBER_POLICY_DETAILS_FIELDS: &[&str] = &["new_value", - "previous_value"]; -impl SharingChangeMemberPolicyDetails { +const SHOWCASE_CREATED_DETAILS_FIELDS: &[&str] = &["event_uuid"]; +impl ShowcaseCreatedDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_new_value = None; - let mut field_previous_value = None; + ) -> Result, V::Error> { + let mut field_event_uuid = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "new_value" => { - if field_new_value.is_some() { - return Err(::serde::de::Error::duplicate_field("new_value")); - } - field_new_value = Some(map.next_value()?); - } - "previous_value" => { - if field_previous_value.is_some() { - return Err(::serde::de::Error::duplicate_field("previous_value")); + "event_uuid" => { + if field_event_uuid.is_some() { + return Err(::serde::de::Error::duplicate_field("event_uuid")); } - field_previous_value = Some(map.next_value()?); + field_event_uuid = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -99497,9 +121890,8 @@ impl SharingChangeMemberPolicyDetails { if optional && nothing { return Ok(None); } - let result = SharingChangeMemberPolicyDetails { - new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, - previous_value: field_previous_value.and_then(Option::flatten), + let result = ShowcaseCreatedDetails { + event_uuid: field_event_uuid.ok_or_else(|| ::serde::de::Error::missing_field("event_uuid"))?, }; Ok(Some(result)) } @@ -99509,37 +121901,34 @@ impl SharingChangeMemberPolicyDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("new_value", &self.new_value)?; - if let Some(val) = &self.previous_value { - s.serialize_field("previous_value", val)?; - } + s.serialize_field("event_uuid", &self.event_uuid)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for SharingChangeMemberPolicyDetails { +impl<'de> ::serde::de::Deserialize<'de> for ShowcaseCreatedDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SharingChangeMemberPolicyDetails; + type Value = ShowcaseCreatedDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SharingChangeMemberPolicyDetails struct") + f.write_str("a ShowcaseCreatedDetails struct") } fn visit_map>(self, map: V) -> Result { - SharingChangeMemberPolicyDetails::internal_deserialize(map) + ShowcaseCreatedDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("SharingChangeMemberPolicyDetails", SHARING_CHANGE_MEMBER_POLICY_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("ShowcaseCreatedDetails", SHOWCASE_CREATED_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SharingChangeMemberPolicyDetails { +impl ::serde::ser::Serialize for ShowcaseCreatedDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SharingChangeMemberPolicyDetails", 2)?; + let mut s = serializer.serialize_struct("ShowcaseCreatedDetails", 1)?; self.internal_serialize::(&mut s)?; s.end() } @@ -99547,30 +121936,30 @@ impl ::serde::ser::Serialize for SharingChangeMemberPolicyDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SharingChangeMemberPolicyType { +pub struct ShowcaseCreatedType { pub description: String, } -impl SharingChangeMemberPolicyType { +impl ShowcaseCreatedType { pub fn new(description: String) -> Self { - SharingChangeMemberPolicyType { + ShowcaseCreatedType { description, } } } -const SHARING_CHANGE_MEMBER_POLICY_TYPE_FIELDS: &[&str] = &["description"]; -impl SharingChangeMemberPolicyType { +const SHOWCASE_CREATED_TYPE_FIELDS: &[&str] = &["description"]; +impl ShowcaseCreatedType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -99591,7 +121980,7 @@ impl SharingChangeMemberPolicyType { if optional && nothing { return Ok(None); } - let result = SharingChangeMemberPolicyType { + let result = ShowcaseCreatedType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -99607,282 +121996,88 @@ impl SharingChangeMemberPolicyType { } } -impl<'de> ::serde::de::Deserialize<'de> for SharingChangeMemberPolicyType { +impl<'de> ::serde::de::Deserialize<'de> for ShowcaseCreatedType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SharingChangeMemberPolicyType; + type Value = ShowcaseCreatedType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SharingChangeMemberPolicyType struct") + f.write_str("a ShowcaseCreatedType struct") } fn visit_map>(self, map: V) -> Result { - SharingChangeMemberPolicyType::internal_deserialize(map) + ShowcaseCreatedType::internal_deserialize(map) } } - deserializer.deserialize_struct("SharingChangeMemberPolicyType", SHARING_CHANGE_MEMBER_POLICY_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("ShowcaseCreatedType", SHOWCASE_CREATED_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SharingChangeMemberPolicyType { +impl ::serde::ser::Serialize for ShowcaseCreatedType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SharingChangeMemberPolicyType", 1)?; + let mut s = serializer.serialize_struct("ShowcaseCreatedType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Policy for controlling if team members can join shared folders owned by non team members. -#[derive(Debug, Clone, PartialEq, Eq)] -#[non_exhaustive] // variants may be added in the future -pub enum SharingFolderJoinPolicy { - FromAnyone, - FromTeamOnly, - /// Catch-all used for unrecognized values returned from the server. Encountering this value - /// typically indicates that this SDK version is out of date. - Other, -} - -impl<'de> ::serde::de::Deserialize<'de> for SharingFolderJoinPolicy { - fn deserialize>(deserializer: D) -> Result { - // union deserializer - use serde::de::{self, MapAccess, Visitor}; - struct EnumVisitor; - impl<'de> Visitor<'de> for EnumVisitor { - type Value = SharingFolderJoinPolicy; - fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SharingFolderJoinPolicy structure") - } - fn visit_map>(self, mut map: V) -> Result { - let tag: &str = match map.next_key()? { - Some(".tag") => map.next_value()?, - _ => return Err(de::Error::missing_field(".tag")) - }; - let value = match tag { - "from_anyone" => SharingFolderJoinPolicy::FromAnyone, - "from_team_only" => SharingFolderJoinPolicy::FromTeamOnly, - _ => SharingFolderJoinPolicy::Other, - }; - crate::eat_json_fields(&mut map)?; - Ok(value) - } - } - const VARIANTS: &[&str] = &["from_anyone", - "from_team_only", - "other"]; - deserializer.deserialize_struct("SharingFolderJoinPolicy", VARIANTS, EnumVisitor) - } -} - -impl ::serde::ser::Serialize for SharingFolderJoinPolicy { - fn serialize(&self, serializer: S) -> Result { - // union serializer - use serde::ser::SerializeStruct; - match self { - SharingFolderJoinPolicy::FromAnyone => { - // unit - let mut s = serializer.serialize_struct("SharingFolderJoinPolicy", 1)?; - s.serialize_field(".tag", "from_anyone")?; - s.end() - } - SharingFolderJoinPolicy::FromTeamOnly => { - // unit - let mut s = serializer.serialize_struct("SharingFolderJoinPolicy", 1)?; - s.serialize_field(".tag", "from_team_only")?; - s.end() - } - SharingFolderJoinPolicy::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) - } - } -} - -/// Policy for controlling if team members can share links externally -#[derive(Debug, Clone, PartialEq, Eq)] -#[non_exhaustive] // variants may be added in the future -pub enum SharingLinkPolicy { - DefaultNoOne, - DefaultPrivate, - DefaultPublic, - OnlyPrivate, - /// Catch-all used for unrecognized values returned from the server. Encountering this value - /// typically indicates that this SDK version is out of date. - Other, -} - -impl<'de> ::serde::de::Deserialize<'de> for SharingLinkPolicy { - fn deserialize>(deserializer: D) -> Result { - // union deserializer - use serde::de::{self, MapAccess, Visitor}; - struct EnumVisitor; - impl<'de> Visitor<'de> for EnumVisitor { - type Value = SharingLinkPolicy; - fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SharingLinkPolicy structure") - } - fn visit_map>(self, mut map: V) -> Result { - let tag: &str = match map.next_key()? { - Some(".tag") => map.next_value()?, - _ => return Err(de::Error::missing_field(".tag")) - }; - let value = match tag { - "default_no_one" => SharingLinkPolicy::DefaultNoOne, - "default_private" => SharingLinkPolicy::DefaultPrivate, - "default_public" => SharingLinkPolicy::DefaultPublic, - "only_private" => SharingLinkPolicy::OnlyPrivate, - _ => SharingLinkPolicy::Other, - }; - crate::eat_json_fields(&mut map)?; - Ok(value) - } - } - const VARIANTS: &[&str] = &["default_no_one", - "default_private", - "default_public", - "only_private", - "other"]; - deserializer.deserialize_struct("SharingLinkPolicy", VARIANTS, EnumVisitor) - } -} - -impl ::serde::ser::Serialize for SharingLinkPolicy { - fn serialize(&self, serializer: S) -> Result { - // union serializer - use serde::ser::SerializeStruct; - match self { - SharingLinkPolicy::DefaultNoOne => { - // unit - let mut s = serializer.serialize_struct("SharingLinkPolicy", 1)?; - s.serialize_field(".tag", "default_no_one")?; - s.end() - } - SharingLinkPolicy::DefaultPrivate => { - // unit - let mut s = serializer.serialize_struct("SharingLinkPolicy", 1)?; - s.serialize_field(".tag", "default_private")?; - s.end() - } - SharingLinkPolicy::DefaultPublic => { - // unit - let mut s = serializer.serialize_struct("SharingLinkPolicy", 1)?; - s.serialize_field(".tag", "default_public")?; - s.end() - } - SharingLinkPolicy::OnlyPrivate => { - // unit - let mut s = serializer.serialize_struct("SharingLinkPolicy", 1)?; - s.serialize_field(".tag", "only_private")?; - s.end() - } - SharingLinkPolicy::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) - } - } -} - -/// External sharing policy +/// Deleted showcase comment. #[derive(Debug, Clone, PartialEq, Eq)] -#[non_exhaustive] // variants may be added in the future -pub enum SharingMemberPolicy { - Allow, - Forbid, - ForbidWithExclusions, - /// Catch-all used for unrecognized values returned from the server. Encountering this value - /// typically indicates that this SDK version is out of date. - Other, -} - -impl<'de> ::serde::de::Deserialize<'de> for SharingMemberPolicy { - fn deserialize>(deserializer: D) -> Result { - // union deserializer - use serde::de::{self, MapAccess, Visitor}; - struct EnumVisitor; - impl<'de> Visitor<'de> for EnumVisitor { - type Value = SharingMemberPolicy; - fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SharingMemberPolicy structure") - } - fn visit_map>(self, mut map: V) -> Result { - let tag: &str = match map.next_key()? { - Some(".tag") => map.next_value()?, - _ => return Err(de::Error::missing_field(".tag")) - }; - let value = match tag { - "allow" => SharingMemberPolicy::Allow, - "forbid" => SharingMemberPolicy::Forbid, - "forbid_with_exclusions" => SharingMemberPolicy::ForbidWithExclusions, - _ => SharingMemberPolicy::Other, - }; - crate::eat_json_fields(&mut map)?; - Ok(value) - } - } - const VARIANTS: &[&str] = &["allow", - "forbid", - "forbid_with_exclusions", - "other"]; - deserializer.deserialize_struct("SharingMemberPolicy", VARIANTS, EnumVisitor) - } +#[non_exhaustive] // structs may have more fields added in the future. +pub struct ShowcaseDeleteCommentDetails { + /// Event unique identifier. + pub event_uuid: String, + /// Comment text. + pub comment_text: Option, } -impl ::serde::ser::Serialize for SharingMemberPolicy { - fn serialize(&self, serializer: S) -> Result { - // union serializer - use serde::ser::SerializeStruct; - match self { - SharingMemberPolicy::Allow => { - // unit - let mut s = serializer.serialize_struct("SharingMemberPolicy", 1)?; - s.serialize_field(".tag", "allow")?; - s.end() - } - SharingMemberPolicy::Forbid => { - // unit - let mut s = serializer.serialize_struct("SharingMemberPolicy", 1)?; - s.serialize_field(".tag", "forbid")?; - s.end() - } - SharingMemberPolicy::ForbidWithExclusions => { - // unit - let mut s = serializer.serialize_struct("SharingMemberPolicy", 1)?; - s.serialize_field(".tag", "forbid_with_exclusions")?; - s.end() - } - SharingMemberPolicy::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) +impl ShowcaseDeleteCommentDetails { + pub fn new(event_uuid: String) -> Self { + ShowcaseDeleteCommentDetails { + event_uuid, + comment_text: None, } } -} - -/// Disabled downloads for link. -#[derive(Debug, Clone, PartialEq, Eq, Default)] -#[non_exhaustive] // structs may have more fields added in the future. -pub struct ShmodelDisableDownloadsDetails { - /// Shared link owner details. Might be missing due to historical data gap. - pub shared_link_owner: Option, -} -impl ShmodelDisableDownloadsDetails { - pub fn with_shared_link_owner(mut self, value: UserLogInfo) -> Self { - self.shared_link_owner = Some(value); + pub fn with_comment_text(mut self, value: String) -> Self { + self.comment_text = Some(value); self } } -const SHMODEL_DISABLE_DOWNLOADS_DETAILS_FIELDS: &[&str] = &["shared_link_owner"]; -impl ShmodelDisableDownloadsDetails { - // no _opt deserializer +const SHOWCASE_DELETE_COMMENT_DETAILS_FIELDS: &[&str] = &["event_uuid", + "comment_text"]; +impl ShowcaseDeleteCommentDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - ) -> Result { - let mut field_shared_link_owner = None; + optional: bool, + ) -> Result, V::Error> { + let mut field_event_uuid = None; + let mut field_comment_text = None; + let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { + nothing = false; match key { - "shared_link_owner" => { - if field_shared_link_owner.is_some() { - return Err(::serde::de::Error::duplicate_field("shared_link_owner")); + "event_uuid" => { + if field_event_uuid.is_some() { + return Err(::serde::de::Error::duplicate_field("event_uuid")); } - field_shared_link_owner = Some(map.next_value()?); + field_event_uuid = Some(map.next_value()?); + } + "comment_text" => { + if field_comment_text.is_some() { + return Err(::serde::de::Error::duplicate_field("comment_text")); + } + field_comment_text = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -99890,10 +122085,14 @@ impl ShmodelDisableDownloadsDetails { } } } - let result = ShmodelDisableDownloadsDetails { - shared_link_owner: field_shared_link_owner.and_then(Option::flatten), + if optional && nothing { + return Ok(None); + } + let result = ShowcaseDeleteCommentDetails { + event_uuid: field_event_uuid.ok_or_else(|| ::serde::de::Error::missing_field("event_uuid"))?, + comment_text: field_comment_text.and_then(Option::flatten), }; - Ok(result) + Ok(Some(result)) } pub(crate) fn internal_serialize( @@ -99901,36 +122100,37 @@ impl ShmodelDisableDownloadsDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - if let Some(val) = &self.shared_link_owner { - s.serialize_field("shared_link_owner", val)?; + s.serialize_field("event_uuid", &self.event_uuid)?; + if let Some(val) = &self.comment_text { + s.serialize_field("comment_text", val)?; } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for ShmodelDisableDownloadsDetails { +impl<'de> ::serde::de::Deserialize<'de> for ShowcaseDeleteCommentDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = ShmodelDisableDownloadsDetails; + type Value = ShowcaseDeleteCommentDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a ShmodelDisableDownloadsDetails struct") + f.write_str("a ShowcaseDeleteCommentDetails struct") } fn visit_map>(self, map: V) -> Result { - ShmodelDisableDownloadsDetails::internal_deserialize(map) + ShowcaseDeleteCommentDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("ShmodelDisableDownloadsDetails", SHMODEL_DISABLE_DOWNLOADS_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("ShowcaseDeleteCommentDetails", SHOWCASE_DELETE_COMMENT_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for ShmodelDisableDownloadsDetails { +impl ::serde::ser::Serialize for ShowcaseDeleteCommentDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("ShmodelDisableDownloadsDetails", 1)?; + let mut s = serializer.serialize_struct("ShowcaseDeleteCommentDetails", 2)?; self.internal_serialize::(&mut s)?; s.end() } @@ -99938,30 +122138,30 @@ impl ::serde::ser::Serialize for ShmodelDisableDownloadsDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct ShmodelDisableDownloadsType { +pub struct ShowcaseDeleteCommentType { pub description: String, } -impl ShmodelDisableDownloadsType { +impl ShowcaseDeleteCommentType { pub fn new(description: String) -> Self { - ShmodelDisableDownloadsType { + ShowcaseDeleteCommentType { description, } } } -const SHMODEL_DISABLE_DOWNLOADS_TYPE_FIELDS: &[&str] = &["description"]; -impl ShmodelDisableDownloadsType { +const SHOWCASE_DELETE_COMMENT_TYPE_FIELDS: &[&str] = &["description"]; +impl ShowcaseDeleteCommentType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -99982,7 +122182,7 @@ impl ShmodelDisableDownloadsType { if optional && nothing { return Ok(None); } - let result = ShmodelDisableDownloadsType { + let result = ShowcaseDeleteCommentType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -99998,63 +122198,83 @@ impl ShmodelDisableDownloadsType { } } -impl<'de> ::serde::de::Deserialize<'de> for ShmodelDisableDownloadsType { +impl<'de> ::serde::de::Deserialize<'de> for ShowcaseDeleteCommentType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = ShmodelDisableDownloadsType; + type Value = ShowcaseDeleteCommentType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a ShmodelDisableDownloadsType struct") + f.write_str("a ShowcaseDeleteCommentType struct") } fn visit_map>(self, map: V) -> Result { - ShmodelDisableDownloadsType::internal_deserialize(map) + ShowcaseDeleteCommentType::internal_deserialize(map) } } - deserializer.deserialize_struct("ShmodelDisableDownloadsType", SHMODEL_DISABLE_DOWNLOADS_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("ShowcaseDeleteCommentType", SHOWCASE_DELETE_COMMENT_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for ShmodelDisableDownloadsType { +impl ::serde::ser::Serialize for ShowcaseDeleteCommentType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("ShmodelDisableDownloadsType", 1)?; + let mut s = serializer.serialize_struct("ShowcaseDeleteCommentType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Enabled downloads for link. -#[derive(Debug, Clone, PartialEq, Eq, Default)] +/// Showcase document's logged information. +#[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct ShmodelEnableDownloadsDetails { - /// Shared link owner details. Might be missing due to historical data gap. - pub shared_link_owner: Option, +pub struct ShowcaseDocumentLogInfo { + /// Showcase document Id. + pub showcase_id: String, + /// Showcase document title. + pub showcase_title: String, } -impl ShmodelEnableDownloadsDetails { - pub fn with_shared_link_owner(mut self, value: UserLogInfo) -> Self { - self.shared_link_owner = Some(value); - self +impl ShowcaseDocumentLogInfo { + pub fn new(showcase_id: String, showcase_title: String) -> Self { + ShowcaseDocumentLogInfo { + showcase_id, + showcase_title, + } } } -const SHMODEL_ENABLE_DOWNLOADS_DETAILS_FIELDS: &[&str] = &["shared_link_owner"]; -impl ShmodelEnableDownloadsDetails { - // no _opt deserializer +const SHOWCASE_DOCUMENT_LOG_INFO_FIELDS: &[&str] = &["showcase_id", + "showcase_title"]; +impl ShowcaseDocumentLogInfo { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, - ) -> Result { - let mut field_shared_link_owner = None; + optional: bool, + ) -> Result, V::Error> { + let mut field_showcase_id = None; + let mut field_showcase_title = None; + let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { + nothing = false; match key { - "shared_link_owner" => { - if field_shared_link_owner.is_some() { - return Err(::serde::de::Error::duplicate_field("shared_link_owner")); + "showcase_id" => { + if field_showcase_id.is_some() { + return Err(::serde::de::Error::duplicate_field("showcase_id")); } - field_shared_link_owner = Some(map.next_value()?); + field_showcase_id = Some(map.next_value()?); + } + "showcase_title" => { + if field_showcase_title.is_some() { + return Err(::serde::de::Error::duplicate_field("showcase_title")); + } + field_showcase_title = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -100062,10 +122282,14 @@ impl ShmodelEnableDownloadsDetails { } } } - let result = ShmodelEnableDownloadsDetails { - shared_link_owner: field_shared_link_owner.and_then(Option::flatten), + if optional && nothing { + return Ok(None); + } + let result = ShowcaseDocumentLogInfo { + showcase_id: field_showcase_id.ok_or_else(|| ::serde::de::Error::missing_field("showcase_id"))?, + showcase_title: field_showcase_title.ok_or_else(|| ::serde::de::Error::missing_field("showcase_title"))?, }; - Ok(result) + Ok(Some(result)) } pub(crate) fn internal_serialize( @@ -100073,77 +122297,158 @@ impl ShmodelEnableDownloadsDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - if let Some(val) = &self.shared_link_owner { - s.serialize_field("shared_link_owner", val)?; - } + s.serialize_field("showcase_id", &self.showcase_id)?; + s.serialize_field("showcase_title", &self.showcase_title)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for ShmodelEnableDownloadsDetails { +impl<'de> ::serde::de::Deserialize<'de> for ShowcaseDocumentLogInfo { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = ShmodelEnableDownloadsDetails; + type Value = ShowcaseDocumentLogInfo; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a ShmodelEnableDownloadsDetails struct") + f.write_str("a ShowcaseDocumentLogInfo struct") } fn visit_map>(self, map: V) -> Result { - ShmodelEnableDownloadsDetails::internal_deserialize(map) + ShowcaseDocumentLogInfo::internal_deserialize(map) } } - deserializer.deserialize_struct("ShmodelEnableDownloadsDetails", SHMODEL_ENABLE_DOWNLOADS_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("ShowcaseDocumentLogInfo", SHOWCASE_DOCUMENT_LOG_INFO_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for ShmodelEnableDownloadsDetails { +impl ::serde::ser::Serialize for ShowcaseDocumentLogInfo { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("ShmodelEnableDownloadsDetails", 1)?; + let mut s = serializer.serialize_struct("ShowcaseDocumentLogInfo", 2)?; self.internal_serialize::(&mut s)?; s.end() } } +/// Policy for controlling if files can be downloaded from Showcases by team members +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // variants may be added in the future +pub enum ShowcaseDownloadPolicy { + Disabled, + Enabled, + /// Catch-all used for unrecognized values returned from the server. Encountering this value + /// typically indicates that this SDK version is out of date. + Other, +} + +impl<'de> ::serde::de::Deserialize<'de> for ShowcaseDownloadPolicy { + fn deserialize>(deserializer: D) -> Result { + // union deserializer + use serde::de::{self, MapAccess, Visitor}; + struct EnumVisitor; + impl<'de> Visitor<'de> for EnumVisitor { + type Value = ShowcaseDownloadPolicy; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a ShowcaseDownloadPolicy structure") + } + fn visit_map>(self, mut map: V) -> Result { + let tag: &str = match map.next_key()? { + Some(".tag") => map.next_value()?, + _ => return Err(de::Error::missing_field(".tag")) + }; + let value = match tag { + "disabled" => ShowcaseDownloadPolicy::Disabled, + "enabled" => ShowcaseDownloadPolicy::Enabled, + _ => ShowcaseDownloadPolicy::Other, + }; + crate::eat_json_fields(&mut map)?; + Ok(value) + } + } + const VARIANTS: &[&str] = &["disabled", + "enabled", + "other"]; + deserializer.deserialize_struct("ShowcaseDownloadPolicy", VARIANTS, EnumVisitor) + } +} + +impl ::serde::ser::Serialize for ShowcaseDownloadPolicy { + fn serialize(&self, serializer: S) -> Result { + // union serializer + use serde::ser::SerializeStruct; + match self { + ShowcaseDownloadPolicy::Disabled => { + // unit + let mut s = serializer.serialize_struct("ShowcaseDownloadPolicy", 1)?; + s.serialize_field(".tag", "disabled")?; + s.end() + } + ShowcaseDownloadPolicy::Enabled => { + // unit + let mut s = serializer.serialize_struct("ShowcaseDownloadPolicy", 1)?; + s.serialize_field(".tag", "enabled")?; + s.end() + } + ShowcaseDownloadPolicy::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) + } + } +} + +/// Edited showcase comment. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct ShmodelEnableDownloadsType { - pub description: String, +pub struct ShowcaseEditCommentDetails { + /// Event unique identifier. + pub event_uuid: String, + /// Comment text. + pub comment_text: Option, } -impl ShmodelEnableDownloadsType { - pub fn new(description: String) -> Self { - ShmodelEnableDownloadsType { - description, +impl ShowcaseEditCommentDetails { + pub fn new(event_uuid: String) -> Self { + ShowcaseEditCommentDetails { + event_uuid, + comment_text: None, } } + + pub fn with_comment_text(mut self, value: String) -> Self { + self.comment_text = Some(value); + self + } } -const SHMODEL_ENABLE_DOWNLOADS_TYPE_FIELDS: &[&str] = &["description"]; -impl ShmodelEnableDownloadsType { +const SHOWCASE_EDIT_COMMENT_DETAILS_FIELDS: &[&str] = &["event_uuid", + "comment_text"]; +impl ShowcaseEditCommentDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_description = None; + ) -> Result, V::Error> { + let mut field_event_uuid = None; + let mut field_comment_text = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "description" => { - if field_description.is_some() { - return Err(::serde::de::Error::duplicate_field("description")); + "event_uuid" => { + if field_event_uuid.is_some() { + return Err(::serde::de::Error::duplicate_field("event_uuid")); } - field_description = Some(map.next_value()?); + field_event_uuid = Some(map.next_value()?); + } + "comment_text" => { + if field_comment_text.is_some() { + return Err(::serde::de::Error::duplicate_field("comment_text")); + } + field_comment_text = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -100154,8 +122459,9 @@ impl ShmodelEnableDownloadsType { if optional && nothing { return Ok(None); } - let result = ShmodelEnableDownloadsType { - description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + let result = ShowcaseEditCommentDetails { + event_uuid: field_event_uuid.ok_or_else(|| ::serde::de::Error::missing_field("event_uuid"))?, + comment_text: field_comment_text.and_then(Option::flatten), }; Ok(Some(result)) } @@ -100165,109 +122471,68 @@ impl ShmodelEnableDownloadsType { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("description", &self.description)?; + s.serialize_field("event_uuid", &self.event_uuid)?; + if let Some(val) = &self.comment_text { + s.serialize_field("comment_text", val)?; + } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for ShmodelEnableDownloadsType { +impl<'de> ::serde::de::Deserialize<'de> for ShowcaseEditCommentDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = ShmodelEnableDownloadsType; + type Value = ShowcaseEditCommentDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a ShmodelEnableDownloadsType struct") + f.write_str("a ShowcaseEditCommentDetails struct") } fn visit_map>(self, map: V) -> Result { - ShmodelEnableDownloadsType::internal_deserialize(map) + ShowcaseEditCommentDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("ShmodelEnableDownloadsType", SHMODEL_ENABLE_DOWNLOADS_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("ShowcaseEditCommentDetails", SHOWCASE_EDIT_COMMENT_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for ShmodelEnableDownloadsType { +impl ::serde::ser::Serialize for ShowcaseEditCommentDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("ShmodelEnableDownloadsType", 1)?; + let mut s = serializer.serialize_struct("ShowcaseEditCommentDetails", 2)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Shared link with group. -#[derive(Debug, Clone, PartialEq, Eq, Default)] -#[non_exhaustive] // structs may have more fields added in the future. -pub struct ShmodelGroupShareDetails { -} - -const SHMODEL_GROUP_SHARE_DETAILS_FIELDS: &[&str] = &[]; -impl ShmodelGroupShareDetails { - // no _opt deserializer - pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( - mut map: V, - ) -> Result { - // ignore any fields found; none are presently recognized - crate::eat_json_fields(&mut map)?; - Ok(ShmodelGroupShareDetails {}) - } -} - -impl<'de> ::serde::de::Deserialize<'de> for ShmodelGroupShareDetails { - fn deserialize>(deserializer: D) -> Result { - // struct deserializer - use serde::de::{MapAccess, Visitor}; - struct StructVisitor; - impl<'de> Visitor<'de> for StructVisitor { - type Value = ShmodelGroupShareDetails; - fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a ShmodelGroupShareDetails struct") - } - fn visit_map>(self, map: V) -> Result { - ShmodelGroupShareDetails::internal_deserialize(map) - } - } - deserializer.deserialize_struct("ShmodelGroupShareDetails", SHMODEL_GROUP_SHARE_DETAILS_FIELDS, StructVisitor) - } -} - -impl ::serde::ser::Serialize for ShmodelGroupShareDetails { - fn serialize(&self, serializer: S) -> Result { - // struct serializer - use serde::ser::SerializeStruct; - serializer.serialize_struct("ShmodelGroupShareDetails", 0)?.end() - } -} - #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct ShmodelGroupShareType { +pub struct ShowcaseEditCommentType { pub description: String, } -impl ShmodelGroupShareType { +impl ShowcaseEditCommentType { pub fn new(description: String) -> Self { - ShmodelGroupShareType { + ShowcaseEditCommentType { description, } } } -const SHMODEL_GROUP_SHARE_TYPE_FIELDS: &[&str] = &["description"]; -impl ShmodelGroupShareType { +const SHOWCASE_EDIT_COMMENT_TYPE_FIELDS: &[&str] = &["description"]; +impl ShowcaseEditCommentType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -100288,7 +122553,7 @@ impl ShmodelGroupShareType { if optional && nothing { return Ok(None); } - let result = ShmodelGroupShareType { + let result = ShowcaseEditCommentType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -100304,62 +122569,62 @@ impl ShmodelGroupShareType { } } -impl<'de> ::serde::de::Deserialize<'de> for ShmodelGroupShareType { +impl<'de> ::serde::de::Deserialize<'de> for ShowcaseEditCommentType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = ShmodelGroupShareType; + type Value = ShowcaseEditCommentType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a ShmodelGroupShareType struct") + f.write_str("a ShowcaseEditCommentType struct") } fn visit_map>(self, map: V) -> Result { - ShmodelGroupShareType::internal_deserialize(map) + ShowcaseEditCommentType::internal_deserialize(map) } } - deserializer.deserialize_struct("ShmodelGroupShareType", SHMODEL_GROUP_SHARE_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("ShowcaseEditCommentType", SHOWCASE_EDIT_COMMENT_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for ShmodelGroupShareType { +impl ::serde::ser::Serialize for ShowcaseEditCommentType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("ShmodelGroupShareType", 1)?; + let mut s = serializer.serialize_struct("ShowcaseEditCommentType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Granted access to showcase. +/// Edited showcase. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct ShowcaseAccessGrantedDetails { +pub struct ShowcaseEditedDetails { /// Event unique identifier. pub event_uuid: String, } -impl ShowcaseAccessGrantedDetails { +impl ShowcaseEditedDetails { pub fn new(event_uuid: String) -> Self { - ShowcaseAccessGrantedDetails { + ShowcaseEditedDetails { event_uuid, } } } -const SHOWCASE_ACCESS_GRANTED_DETAILS_FIELDS: &[&str] = &["event_uuid"]; -impl ShowcaseAccessGrantedDetails { +const SHOWCASE_EDITED_DETAILS_FIELDS: &[&str] = &["event_uuid"]; +impl ShowcaseEditedDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_event_uuid = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -100380,7 +122645,7 @@ impl ShowcaseAccessGrantedDetails { if optional && nothing { return Ok(None); } - let result = ShowcaseAccessGrantedDetails { + let result = ShowcaseEditedDetails { event_uuid: field_event_uuid.ok_or_else(|| ::serde::de::Error::missing_field("event_uuid"))?, }; Ok(Some(result)) @@ -100396,29 +122661,29 @@ impl ShowcaseAccessGrantedDetails { } } -impl<'de> ::serde::de::Deserialize<'de> for ShowcaseAccessGrantedDetails { +impl<'de> ::serde::de::Deserialize<'de> for ShowcaseEditedDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = ShowcaseAccessGrantedDetails; + type Value = ShowcaseEditedDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a ShowcaseAccessGrantedDetails struct") + f.write_str("a ShowcaseEditedDetails struct") } fn visit_map>(self, map: V) -> Result { - ShowcaseAccessGrantedDetails::internal_deserialize(map) + ShowcaseEditedDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("ShowcaseAccessGrantedDetails", SHOWCASE_ACCESS_GRANTED_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("ShowcaseEditedDetails", SHOWCASE_EDITED_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for ShowcaseAccessGrantedDetails { +impl ::serde::ser::Serialize for ShowcaseEditedDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("ShowcaseAccessGrantedDetails", 1)?; + let mut s = serializer.serialize_struct("ShowcaseEditedDetails", 1)?; self.internal_serialize::(&mut s)?; s.end() } @@ -100426,30 +122691,30 @@ impl ::serde::ser::Serialize for ShowcaseAccessGrantedDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct ShowcaseAccessGrantedType { +pub struct ShowcaseEditedType { pub description: String, } -impl ShowcaseAccessGrantedType { +impl ShowcaseEditedType { pub fn new(description: String) -> Self { - ShowcaseAccessGrantedType { + ShowcaseEditedType { description, } } } -const SHOWCASE_ACCESS_GRANTED_TYPE_FIELDS: &[&str] = &["description"]; -impl ShowcaseAccessGrantedType { +const SHOWCASE_EDITED_TYPE_FIELDS: &[&str] = &["description"]; +impl ShowcaseEditedType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -100467,81 +122732,209 @@ impl ShowcaseAccessGrantedType { } } } - if optional && nothing { - return Ok(None); - } - let result = ShowcaseAccessGrantedType { - description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, - }; - Ok(Some(result)) + if optional && nothing { + return Ok(None); + } + let result = ShowcaseEditedType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("description", &self.description)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for ShowcaseEditedType { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = ShowcaseEditedType; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a ShowcaseEditedType struct") + } + fn visit_map>(self, map: V) -> Result { + ShowcaseEditedType::internal_deserialize(map) + } + } + deserializer.deserialize_struct("ShowcaseEditedType", SHOWCASE_EDITED_TYPE_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for ShowcaseEditedType { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("ShowcaseEditedType", 1)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +/// Policy for controlling whether Showcase is enabled. +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // variants may be added in the future +pub enum ShowcaseEnabledPolicy { + Disabled, + Enabled, + /// Catch-all used for unrecognized values returned from the server. Encountering this value + /// typically indicates that this SDK version is out of date. + Other, +} + +impl<'de> ::serde::de::Deserialize<'de> for ShowcaseEnabledPolicy { + fn deserialize>(deserializer: D) -> Result { + // union deserializer + use serde::de::{self, MapAccess, Visitor}; + struct EnumVisitor; + impl<'de> Visitor<'de> for EnumVisitor { + type Value = ShowcaseEnabledPolicy; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a ShowcaseEnabledPolicy structure") + } + fn visit_map>(self, mut map: V) -> Result { + let tag: &str = match map.next_key()? { + Some(".tag") => map.next_value()?, + _ => return Err(de::Error::missing_field(".tag")) + }; + let value = match tag { + "disabled" => ShowcaseEnabledPolicy::Disabled, + "enabled" => ShowcaseEnabledPolicy::Enabled, + _ => ShowcaseEnabledPolicy::Other, + }; + crate::eat_json_fields(&mut map)?; + Ok(value) + } + } + const VARIANTS: &[&str] = &["disabled", + "enabled", + "other"]; + deserializer.deserialize_struct("ShowcaseEnabledPolicy", VARIANTS, EnumVisitor) } +} - pub(crate) fn internal_serialize( - &self, - s: &mut S::SerializeStruct, - ) -> Result<(), S::Error> { +impl ::serde::ser::Serialize for ShowcaseEnabledPolicy { + fn serialize(&self, serializer: S) -> Result { + // union serializer use serde::ser::SerializeStruct; - s.serialize_field("description", &self.description)?; - Ok(()) + match self { + ShowcaseEnabledPolicy::Disabled => { + // unit + let mut s = serializer.serialize_struct("ShowcaseEnabledPolicy", 1)?; + s.serialize_field(".tag", "disabled")?; + s.end() + } + ShowcaseEnabledPolicy::Enabled => { + // unit + let mut s = serializer.serialize_struct("ShowcaseEnabledPolicy", 1)?; + s.serialize_field(".tag", "enabled")?; + s.end() + } + ShowcaseEnabledPolicy::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) + } } } -impl<'de> ::serde::de::Deserialize<'de> for ShowcaseAccessGrantedType { +/// Policy for controlling if team members can share Showcases externally. +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // variants may be added in the future +pub enum ShowcaseExternalSharingPolicy { + Disabled, + Enabled, + /// Catch-all used for unrecognized values returned from the server. Encountering this value + /// typically indicates that this SDK version is out of date. + Other, +} + +impl<'de> ::serde::de::Deserialize<'de> for ShowcaseExternalSharingPolicy { fn deserialize>(deserializer: D) -> Result { - // struct deserializer - use serde::de::{MapAccess, Visitor}; - struct StructVisitor; - impl<'de> Visitor<'de> for StructVisitor { - type Value = ShowcaseAccessGrantedType; + // union deserializer + use serde::de::{self, MapAccess, Visitor}; + struct EnumVisitor; + impl<'de> Visitor<'de> for EnumVisitor { + type Value = ShowcaseExternalSharingPolicy; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a ShowcaseAccessGrantedType struct") + f.write_str("a ShowcaseExternalSharingPolicy structure") } - fn visit_map>(self, map: V) -> Result { - ShowcaseAccessGrantedType::internal_deserialize(map) + fn visit_map>(self, mut map: V) -> Result { + let tag: &str = match map.next_key()? { + Some(".tag") => map.next_value()?, + _ => return Err(de::Error::missing_field(".tag")) + }; + let value = match tag { + "disabled" => ShowcaseExternalSharingPolicy::Disabled, + "enabled" => ShowcaseExternalSharingPolicy::Enabled, + _ => ShowcaseExternalSharingPolicy::Other, + }; + crate::eat_json_fields(&mut map)?; + Ok(value) } } - deserializer.deserialize_struct("ShowcaseAccessGrantedType", SHOWCASE_ACCESS_GRANTED_TYPE_FIELDS, StructVisitor) + const VARIANTS: &[&str] = &["disabled", + "enabled", + "other"]; + deserializer.deserialize_struct("ShowcaseExternalSharingPolicy", VARIANTS, EnumVisitor) } } -impl ::serde::ser::Serialize for ShowcaseAccessGrantedType { +impl ::serde::ser::Serialize for ShowcaseExternalSharingPolicy { fn serialize(&self, serializer: S) -> Result { - // struct serializer + // union serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("ShowcaseAccessGrantedType", 1)?; - self.internal_serialize::(&mut s)?; - s.end() + match self { + ShowcaseExternalSharingPolicy::Disabled => { + // unit + let mut s = serializer.serialize_struct("ShowcaseExternalSharingPolicy", 1)?; + s.serialize_field(".tag", "disabled")?; + s.end() + } + ShowcaseExternalSharingPolicy::Enabled => { + // unit + let mut s = serializer.serialize_struct("ShowcaseExternalSharingPolicy", 1)?; + s.serialize_field(".tag", "enabled")?; + s.end() + } + ShowcaseExternalSharingPolicy::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) + } } } -/// Added member to showcase. +/// Added file to showcase. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct ShowcaseAddMemberDetails { +pub struct ShowcaseFileAddedDetails { /// Event unique identifier. pub event_uuid: String, } -impl ShowcaseAddMemberDetails { +impl ShowcaseFileAddedDetails { pub fn new(event_uuid: String) -> Self { - ShowcaseAddMemberDetails { + ShowcaseFileAddedDetails { event_uuid, } } } -const SHOWCASE_ADD_MEMBER_DETAILS_FIELDS: &[&str] = &["event_uuid"]; -impl ShowcaseAddMemberDetails { +const SHOWCASE_FILE_ADDED_DETAILS_FIELDS: &[&str] = &["event_uuid"]; +impl ShowcaseFileAddedDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_event_uuid = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -100562,7 +122955,7 @@ impl ShowcaseAddMemberDetails { if optional && nothing { return Ok(None); } - let result = ShowcaseAddMemberDetails { + let result = ShowcaseFileAddedDetails { event_uuid: field_event_uuid.ok_or_else(|| ::serde::de::Error::missing_field("event_uuid"))?, }; Ok(Some(result)) @@ -100578,29 +122971,29 @@ impl ShowcaseAddMemberDetails { } } -impl<'de> ::serde::de::Deserialize<'de> for ShowcaseAddMemberDetails { +impl<'de> ::serde::de::Deserialize<'de> for ShowcaseFileAddedDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = ShowcaseAddMemberDetails; + type Value = ShowcaseFileAddedDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a ShowcaseAddMemberDetails struct") + f.write_str("a ShowcaseFileAddedDetails struct") } fn visit_map>(self, map: V) -> Result { - ShowcaseAddMemberDetails::internal_deserialize(map) + ShowcaseFileAddedDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("ShowcaseAddMemberDetails", SHOWCASE_ADD_MEMBER_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("ShowcaseFileAddedDetails", SHOWCASE_FILE_ADDED_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for ShowcaseAddMemberDetails { +impl ::serde::ser::Serialize for ShowcaseFileAddedDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("ShowcaseAddMemberDetails", 1)?; + let mut s = serializer.serialize_struct("ShowcaseFileAddedDetails", 1)?; self.internal_serialize::(&mut s)?; s.end() } @@ -100608,30 +123001,30 @@ impl ::serde::ser::Serialize for ShowcaseAddMemberDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct ShowcaseAddMemberType { +pub struct ShowcaseFileAddedType { pub description: String, } -impl ShowcaseAddMemberType { +impl ShowcaseFileAddedType { pub fn new(description: String) -> Self { - ShowcaseAddMemberType { + ShowcaseFileAddedType { description, } } } -const SHOWCASE_ADD_MEMBER_TYPE_FIELDS: &[&str] = &["description"]; -impl ShowcaseAddMemberType { +const SHOWCASE_FILE_ADDED_TYPE_FIELDS: &[&str] = &["description"]; +impl ShowcaseFileAddedType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -100652,7 +123045,7 @@ impl ShowcaseAddMemberType { if optional && nothing { return Ok(None); } - let result = ShowcaseAddMemberType { + let result = ShowcaseFileAddedType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -100668,63 +123061,68 @@ impl ShowcaseAddMemberType { } } -impl<'de> ::serde::de::Deserialize<'de> for ShowcaseAddMemberType { +impl<'de> ::serde::de::Deserialize<'de> for ShowcaseFileAddedType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = ShowcaseAddMemberType; + type Value = ShowcaseFileAddedType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a ShowcaseAddMemberType struct") + f.write_str("a ShowcaseFileAddedType struct") } fn visit_map>(self, map: V) -> Result { - ShowcaseAddMemberType::internal_deserialize(map) + ShowcaseFileAddedType::internal_deserialize(map) } } - deserializer.deserialize_struct("ShowcaseAddMemberType", SHOWCASE_ADD_MEMBER_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("ShowcaseFileAddedType", SHOWCASE_FILE_ADDED_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for ShowcaseAddMemberType { +impl ::serde::ser::Serialize for ShowcaseFileAddedType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("ShowcaseAddMemberType", 1)?; + let mut s = serializer.serialize_struct("ShowcaseFileAddedType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Archived showcase. +/// Downloaded file from showcase. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct ShowcaseArchivedDetails { +pub struct ShowcaseFileDownloadDetails { /// Event unique identifier. pub event_uuid: String, + /// Showcase download type. + pub download_type: String, } -impl ShowcaseArchivedDetails { - pub fn new(event_uuid: String) -> Self { - ShowcaseArchivedDetails { +impl ShowcaseFileDownloadDetails { + pub fn new(event_uuid: String, download_type: String) -> Self { + ShowcaseFileDownloadDetails { event_uuid, + download_type, } } } -const SHOWCASE_ARCHIVED_DETAILS_FIELDS: &[&str] = &["event_uuid"]; -impl ShowcaseArchivedDetails { +const SHOWCASE_FILE_DOWNLOAD_DETAILS_FIELDS: &[&str] = &["event_uuid", + "download_type"]; +impl ShowcaseFileDownloadDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_event_uuid = None; + let mut field_download_type = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; @@ -100735,6 +123133,12 @@ impl ShowcaseArchivedDetails { } field_event_uuid = Some(map.next_value()?); } + "download_type" => { + if field_download_type.is_some() { + return Err(::serde::de::Error::duplicate_field("download_type")); + } + field_download_type = Some(map.next_value()?); + } _ => { // unknown field allowed and ignored map.next_value::<::serde_json::Value>()?; @@ -100744,8 +123148,9 @@ impl ShowcaseArchivedDetails { if optional && nothing { return Ok(None); } - let result = ShowcaseArchivedDetails { + let result = ShowcaseFileDownloadDetails { event_uuid: field_event_uuid.ok_or_else(|| ::serde::de::Error::missing_field("event_uuid"))?, + download_type: field_download_type.ok_or_else(|| ::serde::de::Error::missing_field("download_type"))?, }; Ok(Some(result)) } @@ -100756,33 +123161,34 @@ impl ShowcaseArchivedDetails { ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; s.serialize_field("event_uuid", &self.event_uuid)?; + s.serialize_field("download_type", &self.download_type)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for ShowcaseArchivedDetails { +impl<'de> ::serde::de::Deserialize<'de> for ShowcaseFileDownloadDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = ShowcaseArchivedDetails; + type Value = ShowcaseFileDownloadDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a ShowcaseArchivedDetails struct") + f.write_str("a ShowcaseFileDownloadDetails struct") } fn visit_map>(self, map: V) -> Result { - ShowcaseArchivedDetails::internal_deserialize(map) + ShowcaseFileDownloadDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("ShowcaseArchivedDetails", SHOWCASE_ARCHIVED_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("ShowcaseFileDownloadDetails", SHOWCASE_FILE_DOWNLOAD_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for ShowcaseArchivedDetails { +impl ::serde::ser::Serialize for ShowcaseFileDownloadDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("ShowcaseArchivedDetails", 1)?; + let mut s = serializer.serialize_struct("ShowcaseFileDownloadDetails", 2)?; self.internal_serialize::(&mut s)?; s.end() } @@ -100790,30 +123196,30 @@ impl ::serde::ser::Serialize for ShowcaseArchivedDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct ShowcaseArchivedType { +pub struct ShowcaseFileDownloadType { pub description: String, } -impl ShowcaseArchivedType { +impl ShowcaseFileDownloadType { pub fn new(description: String) -> Self { - ShowcaseArchivedType { + ShowcaseFileDownloadType { description, } } } -const SHOWCASE_ARCHIVED_TYPE_FIELDS: &[&str] = &["description"]; -impl ShowcaseArchivedType { +const SHOWCASE_FILE_DOWNLOAD_TYPE_FIELDS: &[&str] = &["description"]; +impl ShowcaseFileDownloadType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -100834,7 +123240,7 @@ impl ShowcaseArchivedType { if optional && nothing { return Ok(None); } - let result = ShowcaseArchivedType { + let result = ShowcaseFileDownloadType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -100850,83 +123256,72 @@ impl ShowcaseArchivedType { } } -impl<'de> ::serde::de::Deserialize<'de> for ShowcaseArchivedType { +impl<'de> ::serde::de::Deserialize<'de> for ShowcaseFileDownloadType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = ShowcaseArchivedType; + type Value = ShowcaseFileDownloadType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a ShowcaseArchivedType struct") + f.write_str("a ShowcaseFileDownloadType struct") } fn visit_map>(self, map: V) -> Result { - ShowcaseArchivedType::internal_deserialize(map) + ShowcaseFileDownloadType::internal_deserialize(map) } } - deserializer.deserialize_struct("ShowcaseArchivedType", SHOWCASE_ARCHIVED_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("ShowcaseFileDownloadType", SHOWCASE_FILE_DOWNLOAD_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for ShowcaseArchivedType { +impl ::serde::ser::Serialize for ShowcaseFileDownloadType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("ShowcaseArchivedType", 1)?; + let mut s = serializer.serialize_struct("ShowcaseFileDownloadType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Enabled/disabled downloading files from Dropbox Showcase for team. +/// Removed file from showcase. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct ShowcaseChangeDownloadPolicyDetails { - /// New Dropbox Showcase download policy. - pub new_value: ShowcaseDownloadPolicy, - /// Previous Dropbox Showcase download policy. - pub previous_value: ShowcaseDownloadPolicy, +pub struct ShowcaseFileRemovedDetails { + /// Event unique identifier. + pub event_uuid: String, } -impl ShowcaseChangeDownloadPolicyDetails { - pub fn new(new_value: ShowcaseDownloadPolicy, previous_value: ShowcaseDownloadPolicy) -> Self { - ShowcaseChangeDownloadPolicyDetails { - new_value, - previous_value, +impl ShowcaseFileRemovedDetails { + pub fn new(event_uuid: String) -> Self { + ShowcaseFileRemovedDetails { + event_uuid, } } } -const SHOWCASE_CHANGE_DOWNLOAD_POLICY_DETAILS_FIELDS: &[&str] = &["new_value", - "previous_value"]; -impl ShowcaseChangeDownloadPolicyDetails { +const SHOWCASE_FILE_REMOVED_DETAILS_FIELDS: &[&str] = &["event_uuid"]; +impl ShowcaseFileRemovedDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_new_value = None; - let mut field_previous_value = None; + ) -> Result, V::Error> { + let mut field_event_uuid = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "new_value" => { - if field_new_value.is_some() { - return Err(::serde::de::Error::duplicate_field("new_value")); - } - field_new_value = Some(map.next_value()?); - } - "previous_value" => { - if field_previous_value.is_some() { - return Err(::serde::de::Error::duplicate_field("previous_value")); + "event_uuid" => { + if field_event_uuid.is_some() { + return Err(::serde::de::Error::duplicate_field("event_uuid")); } - field_previous_value = Some(map.next_value()?); + field_event_uuid = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -100937,9 +123332,8 @@ impl ShowcaseChangeDownloadPolicyDetails { if optional && nothing { return Ok(None); } - let result = ShowcaseChangeDownloadPolicyDetails { - new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, - previous_value: field_previous_value.ok_or_else(|| ::serde::de::Error::missing_field("previous_value"))?, + let result = ShowcaseFileRemovedDetails { + event_uuid: field_event_uuid.ok_or_else(|| ::serde::de::Error::missing_field("event_uuid"))?, }; Ok(Some(result)) } @@ -100949,35 +123343,34 @@ impl ShowcaseChangeDownloadPolicyDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("new_value", &self.new_value)?; - s.serialize_field("previous_value", &self.previous_value)?; + s.serialize_field("event_uuid", &self.event_uuid)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for ShowcaseChangeDownloadPolicyDetails { +impl<'de> ::serde::de::Deserialize<'de> for ShowcaseFileRemovedDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = ShowcaseChangeDownloadPolicyDetails; + type Value = ShowcaseFileRemovedDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a ShowcaseChangeDownloadPolicyDetails struct") + f.write_str("a ShowcaseFileRemovedDetails struct") } fn visit_map>(self, map: V) -> Result { - ShowcaseChangeDownloadPolicyDetails::internal_deserialize(map) + ShowcaseFileRemovedDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("ShowcaseChangeDownloadPolicyDetails", SHOWCASE_CHANGE_DOWNLOAD_POLICY_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("ShowcaseFileRemovedDetails", SHOWCASE_FILE_REMOVED_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for ShowcaseChangeDownloadPolicyDetails { +impl ::serde::ser::Serialize for ShowcaseFileRemovedDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("ShowcaseChangeDownloadPolicyDetails", 2)?; + let mut s = serializer.serialize_struct("ShowcaseFileRemovedDetails", 1)?; self.internal_serialize::(&mut s)?; s.end() } @@ -100985,30 +123378,30 @@ impl ::serde::ser::Serialize for ShowcaseChangeDownloadPolicyDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct ShowcaseChangeDownloadPolicyType { +pub struct ShowcaseFileRemovedType { pub description: String, } -impl ShowcaseChangeDownloadPolicyType { +impl ShowcaseFileRemovedType { pub fn new(description: String) -> Self { - ShowcaseChangeDownloadPolicyType { + ShowcaseFileRemovedType { description, } } } -const SHOWCASE_CHANGE_DOWNLOAD_POLICY_TYPE_FIELDS: &[&str] = &["description"]; -impl ShowcaseChangeDownloadPolicyType { +const SHOWCASE_FILE_REMOVED_TYPE_FIELDS: &[&str] = &["description"]; +impl ShowcaseFileRemovedType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -101029,7 +123422,7 @@ impl ShowcaseChangeDownloadPolicyType { if optional && nothing { return Ok(None); } - let result = ShowcaseChangeDownloadPolicyType { + let result = ShowcaseFileRemovedType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -101045,83 +123438,72 @@ impl ShowcaseChangeDownloadPolicyType { } } -impl<'de> ::serde::de::Deserialize<'de> for ShowcaseChangeDownloadPolicyType { +impl<'de> ::serde::de::Deserialize<'de> for ShowcaseFileRemovedType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = ShowcaseChangeDownloadPolicyType; + type Value = ShowcaseFileRemovedType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a ShowcaseChangeDownloadPolicyType struct") + f.write_str("a ShowcaseFileRemovedType struct") } fn visit_map>(self, map: V) -> Result { - ShowcaseChangeDownloadPolicyType::internal_deserialize(map) + ShowcaseFileRemovedType::internal_deserialize(map) } } - deserializer.deserialize_struct("ShowcaseChangeDownloadPolicyType", SHOWCASE_CHANGE_DOWNLOAD_POLICY_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("ShowcaseFileRemovedType", SHOWCASE_FILE_REMOVED_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for ShowcaseChangeDownloadPolicyType { +impl ::serde::ser::Serialize for ShowcaseFileRemovedType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("ShowcaseChangeDownloadPolicyType", 1)?; + let mut s = serializer.serialize_struct("ShowcaseFileRemovedType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Enabled/disabled Dropbox Showcase for team. +/// Viewed file in showcase. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct ShowcaseChangeEnabledPolicyDetails { - /// New Dropbox Showcase policy. - pub new_value: ShowcaseEnabledPolicy, - /// Previous Dropbox Showcase policy. - pub previous_value: ShowcaseEnabledPolicy, +pub struct ShowcaseFileViewDetails { + /// Event unique identifier. + pub event_uuid: String, } -impl ShowcaseChangeEnabledPolicyDetails { - pub fn new(new_value: ShowcaseEnabledPolicy, previous_value: ShowcaseEnabledPolicy) -> Self { - ShowcaseChangeEnabledPolicyDetails { - new_value, - previous_value, +impl ShowcaseFileViewDetails { + pub fn new(event_uuid: String) -> Self { + ShowcaseFileViewDetails { + event_uuid, } } } -const SHOWCASE_CHANGE_ENABLED_POLICY_DETAILS_FIELDS: &[&str] = &["new_value", - "previous_value"]; -impl ShowcaseChangeEnabledPolicyDetails { +const SHOWCASE_FILE_VIEW_DETAILS_FIELDS: &[&str] = &["event_uuid"]; +impl ShowcaseFileViewDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_new_value = None; - let mut field_previous_value = None; + ) -> Result, V::Error> { + let mut field_event_uuid = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "new_value" => { - if field_new_value.is_some() { - return Err(::serde::de::Error::duplicate_field("new_value")); - } - field_new_value = Some(map.next_value()?); - } - "previous_value" => { - if field_previous_value.is_some() { - return Err(::serde::de::Error::duplicate_field("previous_value")); + "event_uuid" => { + if field_event_uuid.is_some() { + return Err(::serde::de::Error::duplicate_field("event_uuid")); } - field_previous_value = Some(map.next_value()?); + field_event_uuid = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -101132,9 +123514,8 @@ impl ShowcaseChangeEnabledPolicyDetails { if optional && nothing { return Ok(None); } - let result = ShowcaseChangeEnabledPolicyDetails { - new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, - previous_value: field_previous_value.ok_or_else(|| ::serde::de::Error::missing_field("previous_value"))?, + let result = ShowcaseFileViewDetails { + event_uuid: field_event_uuid.ok_or_else(|| ::serde::de::Error::missing_field("event_uuid"))?, }; Ok(Some(result)) } @@ -101144,35 +123525,34 @@ impl ShowcaseChangeEnabledPolicyDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("new_value", &self.new_value)?; - s.serialize_field("previous_value", &self.previous_value)?; + s.serialize_field("event_uuid", &self.event_uuid)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for ShowcaseChangeEnabledPolicyDetails { +impl<'de> ::serde::de::Deserialize<'de> for ShowcaseFileViewDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = ShowcaseChangeEnabledPolicyDetails; + type Value = ShowcaseFileViewDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a ShowcaseChangeEnabledPolicyDetails struct") + f.write_str("a ShowcaseFileViewDetails struct") } fn visit_map>(self, map: V) -> Result { - ShowcaseChangeEnabledPolicyDetails::internal_deserialize(map) + ShowcaseFileViewDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("ShowcaseChangeEnabledPolicyDetails", SHOWCASE_CHANGE_ENABLED_POLICY_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("ShowcaseFileViewDetails", SHOWCASE_FILE_VIEW_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for ShowcaseChangeEnabledPolicyDetails { +impl ::serde::ser::Serialize for ShowcaseFileViewDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("ShowcaseChangeEnabledPolicyDetails", 2)?; + let mut s = serializer.serialize_struct("ShowcaseFileViewDetails", 1)?; self.internal_serialize::(&mut s)?; s.end() } @@ -101180,30 +123560,30 @@ impl ::serde::ser::Serialize for ShowcaseChangeEnabledPolicyDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct ShowcaseChangeEnabledPolicyType { +pub struct ShowcaseFileViewType { pub description: String, } -impl ShowcaseChangeEnabledPolicyType { +impl ShowcaseFileViewType { pub fn new(description: String) -> Self { - ShowcaseChangeEnabledPolicyType { + ShowcaseFileViewType { description, } } } -const SHOWCASE_CHANGE_ENABLED_POLICY_TYPE_FIELDS: &[&str] = &["description"]; -impl ShowcaseChangeEnabledPolicyType { +const SHOWCASE_FILE_VIEW_TYPE_FIELDS: &[&str] = &["description"]; +impl ShowcaseFileViewType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -101224,7 +123604,7 @@ impl ShowcaseChangeEnabledPolicyType { if optional && nothing { return Ok(None); } - let result = ShowcaseChangeEnabledPolicyType { + let result = ShowcaseFileViewType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -101240,86 +123620,72 @@ impl ShowcaseChangeEnabledPolicyType { } } -impl<'de> ::serde::de::Deserialize<'de> for ShowcaseChangeEnabledPolicyType { +impl<'de> ::serde::de::Deserialize<'de> for ShowcaseFileViewType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = ShowcaseChangeEnabledPolicyType; + type Value = ShowcaseFileViewType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a ShowcaseChangeEnabledPolicyType struct") + f.write_str("a ShowcaseFileViewType struct") } fn visit_map>(self, map: V) -> Result { - ShowcaseChangeEnabledPolicyType::internal_deserialize(map) + ShowcaseFileViewType::internal_deserialize(map) } } - deserializer.deserialize_struct("ShowcaseChangeEnabledPolicyType", SHOWCASE_CHANGE_ENABLED_POLICY_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("ShowcaseFileViewType", SHOWCASE_FILE_VIEW_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for ShowcaseChangeEnabledPolicyType { +impl ::serde::ser::Serialize for ShowcaseFileViewType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("ShowcaseChangeEnabledPolicyType", 1)?; + let mut s = serializer.serialize_struct("ShowcaseFileViewType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Enabled/disabled sharing Dropbox Showcase externally for team. +/// Permanently deleted showcase. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct ShowcaseChangeExternalSharingPolicyDetails { - /// New Dropbox Showcase external sharing policy. - pub new_value: ShowcaseExternalSharingPolicy, - /// Previous Dropbox Showcase external sharing policy. - pub previous_value: ShowcaseExternalSharingPolicy, +pub struct ShowcasePermanentlyDeletedDetails { + /// Event unique identifier. + pub event_uuid: String, } -impl ShowcaseChangeExternalSharingPolicyDetails { - pub fn new( - new_value: ShowcaseExternalSharingPolicy, - previous_value: ShowcaseExternalSharingPolicy, - ) -> Self { - ShowcaseChangeExternalSharingPolicyDetails { - new_value, - previous_value, +impl ShowcasePermanentlyDeletedDetails { + pub fn new(event_uuid: String) -> Self { + ShowcasePermanentlyDeletedDetails { + event_uuid, } } } -const SHOWCASE_CHANGE_EXTERNAL_SHARING_POLICY_DETAILS_FIELDS: &[&str] = &["new_value", - "previous_value"]; -impl ShowcaseChangeExternalSharingPolicyDetails { +const SHOWCASE_PERMANENTLY_DELETED_DETAILS_FIELDS: &[&str] = &["event_uuid"]; +impl ShowcasePermanentlyDeletedDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_new_value = None; - let mut field_previous_value = None; + ) -> Result, V::Error> { + let mut field_event_uuid = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "new_value" => { - if field_new_value.is_some() { - return Err(::serde::de::Error::duplicate_field("new_value")); - } - field_new_value = Some(map.next_value()?); - } - "previous_value" => { - if field_previous_value.is_some() { - return Err(::serde::de::Error::duplicate_field("previous_value")); + "event_uuid" => { + if field_event_uuid.is_some() { + return Err(::serde::de::Error::duplicate_field("event_uuid")); } - field_previous_value = Some(map.next_value()?); + field_event_uuid = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -101330,9 +123696,8 @@ impl ShowcaseChangeExternalSharingPolicyDetails { if optional && nothing { return Ok(None); } - let result = ShowcaseChangeExternalSharingPolicyDetails { - new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, - previous_value: field_previous_value.ok_or_else(|| ::serde::de::Error::missing_field("previous_value"))?, + let result = ShowcasePermanentlyDeletedDetails { + event_uuid: field_event_uuid.ok_or_else(|| ::serde::de::Error::missing_field("event_uuid"))?, }; Ok(Some(result)) } @@ -101342,35 +123707,34 @@ impl ShowcaseChangeExternalSharingPolicyDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("new_value", &self.new_value)?; - s.serialize_field("previous_value", &self.previous_value)?; + s.serialize_field("event_uuid", &self.event_uuid)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for ShowcaseChangeExternalSharingPolicyDetails { +impl<'de> ::serde::de::Deserialize<'de> for ShowcasePermanentlyDeletedDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = ShowcaseChangeExternalSharingPolicyDetails; + type Value = ShowcasePermanentlyDeletedDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a ShowcaseChangeExternalSharingPolicyDetails struct") + f.write_str("a ShowcasePermanentlyDeletedDetails struct") } fn visit_map>(self, map: V) -> Result { - ShowcaseChangeExternalSharingPolicyDetails::internal_deserialize(map) + ShowcasePermanentlyDeletedDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("ShowcaseChangeExternalSharingPolicyDetails", SHOWCASE_CHANGE_EXTERNAL_SHARING_POLICY_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("ShowcasePermanentlyDeletedDetails", SHOWCASE_PERMANENTLY_DELETED_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for ShowcaseChangeExternalSharingPolicyDetails { +impl ::serde::ser::Serialize for ShowcasePermanentlyDeletedDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("ShowcaseChangeExternalSharingPolicyDetails", 2)?; + let mut s = serializer.serialize_struct("ShowcasePermanentlyDeletedDetails", 1)?; self.internal_serialize::(&mut s)?; s.end() } @@ -101378,30 +123742,30 @@ impl ::serde::ser::Serialize for ShowcaseChangeExternalSharingPolicyDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct ShowcaseChangeExternalSharingPolicyType { +pub struct ShowcasePermanentlyDeletedType { pub description: String, } -impl ShowcaseChangeExternalSharingPolicyType { +impl ShowcasePermanentlyDeletedType { pub fn new(description: String) -> Self { - ShowcaseChangeExternalSharingPolicyType { + ShowcasePermanentlyDeletedType { description, } } } -const SHOWCASE_CHANGE_EXTERNAL_SHARING_POLICY_TYPE_FIELDS: &[&str] = &["description"]; -impl ShowcaseChangeExternalSharingPolicyType { +const SHOWCASE_PERMANENTLY_DELETED_TYPE_FIELDS: &[&str] = &["description"]; +impl ShowcasePermanentlyDeletedType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -101422,7 +123786,7 @@ impl ShowcaseChangeExternalSharingPolicyType { if optional && nothing { return Ok(None); } - let result = ShowcaseChangeExternalSharingPolicyType { + let result = ShowcasePermanentlyDeletedType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -101438,63 +123802,73 @@ impl ShowcaseChangeExternalSharingPolicyType { } } -impl<'de> ::serde::de::Deserialize<'de> for ShowcaseChangeExternalSharingPolicyType { +impl<'de> ::serde::de::Deserialize<'de> for ShowcasePermanentlyDeletedType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = ShowcaseChangeExternalSharingPolicyType; + type Value = ShowcasePermanentlyDeletedType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a ShowcaseChangeExternalSharingPolicyType struct") + f.write_str("a ShowcasePermanentlyDeletedType struct") } fn visit_map>(self, map: V) -> Result { - ShowcaseChangeExternalSharingPolicyType::internal_deserialize(map) + ShowcasePermanentlyDeletedType::internal_deserialize(map) } } - deserializer.deserialize_struct("ShowcaseChangeExternalSharingPolicyType", SHOWCASE_CHANGE_EXTERNAL_SHARING_POLICY_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("ShowcasePermanentlyDeletedType", SHOWCASE_PERMANENTLY_DELETED_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for ShowcaseChangeExternalSharingPolicyType { +impl ::serde::ser::Serialize for ShowcasePermanentlyDeletedType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("ShowcaseChangeExternalSharingPolicyType", 1)?; + let mut s = serializer.serialize_struct("ShowcasePermanentlyDeletedType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Created showcase. +/// Added showcase comment. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct ShowcaseCreatedDetails { +pub struct ShowcasePostCommentDetails { /// Event unique identifier. pub event_uuid: String, + /// Comment text. + pub comment_text: Option, } -impl ShowcaseCreatedDetails { +impl ShowcasePostCommentDetails { pub fn new(event_uuid: String) -> Self { - ShowcaseCreatedDetails { + ShowcasePostCommentDetails { event_uuid, + comment_text: None, } } + + pub fn with_comment_text(mut self, value: String) -> Self { + self.comment_text = Some(value); + self + } } -const SHOWCASE_CREATED_DETAILS_FIELDS: &[&str] = &["event_uuid"]; -impl ShowcaseCreatedDetails { +const SHOWCASE_POST_COMMENT_DETAILS_FIELDS: &[&str] = &["event_uuid", + "comment_text"]; +impl ShowcasePostCommentDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_event_uuid = None; + let mut field_comment_text = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; @@ -101505,6 +123879,12 @@ impl ShowcaseCreatedDetails { } field_event_uuid = Some(map.next_value()?); } + "comment_text" => { + if field_comment_text.is_some() { + return Err(::serde::de::Error::duplicate_field("comment_text")); + } + field_comment_text = Some(map.next_value()?); + } _ => { // unknown field allowed and ignored map.next_value::<::serde_json::Value>()?; @@ -101514,8 +123894,9 @@ impl ShowcaseCreatedDetails { if optional && nothing { return Ok(None); } - let result = ShowcaseCreatedDetails { + let result = ShowcasePostCommentDetails { event_uuid: field_event_uuid.ok_or_else(|| ::serde::de::Error::missing_field("event_uuid"))?, + comment_text: field_comment_text.and_then(Option::flatten), }; Ok(Some(result)) } @@ -101526,33 +123907,36 @@ impl ShowcaseCreatedDetails { ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; s.serialize_field("event_uuid", &self.event_uuid)?; + if let Some(val) = &self.comment_text { + s.serialize_field("comment_text", val)?; + } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for ShowcaseCreatedDetails { +impl<'de> ::serde::de::Deserialize<'de> for ShowcasePostCommentDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = ShowcaseCreatedDetails; + type Value = ShowcasePostCommentDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a ShowcaseCreatedDetails struct") + f.write_str("a ShowcasePostCommentDetails struct") } fn visit_map>(self, map: V) -> Result { - ShowcaseCreatedDetails::internal_deserialize(map) + ShowcasePostCommentDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("ShowcaseCreatedDetails", SHOWCASE_CREATED_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("ShowcasePostCommentDetails", SHOWCASE_POST_COMMENT_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for ShowcaseCreatedDetails { +impl ::serde::ser::Serialize for ShowcasePostCommentDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("ShowcaseCreatedDetails", 1)?; + let mut s = serializer.serialize_struct("ShowcasePostCommentDetails", 2)?; self.internal_serialize::(&mut s)?; s.end() } @@ -101560,30 +123944,30 @@ impl ::serde::ser::Serialize for ShowcaseCreatedDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct ShowcaseCreatedType { +pub struct ShowcasePostCommentType { pub description: String, } -impl ShowcaseCreatedType { +impl ShowcasePostCommentType { pub fn new(description: String) -> Self { - ShowcaseCreatedType { + ShowcasePostCommentType { description, } } } -const SHOWCASE_CREATED_TYPE_FIELDS: &[&str] = &["description"]; -impl ShowcaseCreatedType { +const SHOWCASE_POST_COMMENT_TYPE_FIELDS: &[&str] = &["description"]; +impl ShowcasePostCommentType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -101604,7 +123988,7 @@ impl ShowcaseCreatedType { if optional && nothing { return Ok(None); } - let result = ShowcaseCreatedType { + let result = ShowcasePostCommentType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -101620,73 +124004,63 @@ impl ShowcaseCreatedType { } } -impl<'de> ::serde::de::Deserialize<'de> for ShowcaseCreatedType { +impl<'de> ::serde::de::Deserialize<'de> for ShowcasePostCommentType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = ShowcaseCreatedType; + type Value = ShowcasePostCommentType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a ShowcaseCreatedType struct") + f.write_str("a ShowcasePostCommentType struct") } fn visit_map>(self, map: V) -> Result { - ShowcaseCreatedType::internal_deserialize(map) + ShowcasePostCommentType::internal_deserialize(map) } } - deserializer.deserialize_struct("ShowcaseCreatedType", SHOWCASE_CREATED_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("ShowcasePostCommentType", SHOWCASE_POST_COMMENT_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for ShowcaseCreatedType { +impl ::serde::ser::Serialize for ShowcasePostCommentType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("ShowcaseCreatedType", 1)?; + let mut s = serializer.serialize_struct("ShowcasePostCommentType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Deleted showcase comment. +/// Removed member from showcase. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct ShowcaseDeleteCommentDetails { +pub struct ShowcaseRemoveMemberDetails { /// Event unique identifier. pub event_uuid: String, - /// Comment text. - pub comment_text: Option, } -impl ShowcaseDeleteCommentDetails { +impl ShowcaseRemoveMemberDetails { pub fn new(event_uuid: String) -> Self { - ShowcaseDeleteCommentDetails { + ShowcaseRemoveMemberDetails { event_uuid, - comment_text: None, } } - - pub fn with_comment_text(mut self, value: String) -> Self { - self.comment_text = Some(value); - self - } } -const SHOWCASE_DELETE_COMMENT_DETAILS_FIELDS: &[&str] = &["event_uuid", - "comment_text"]; -impl ShowcaseDeleteCommentDetails { +const SHOWCASE_REMOVE_MEMBER_DETAILS_FIELDS: &[&str] = &["event_uuid"]; +impl ShowcaseRemoveMemberDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_event_uuid = None; - let mut field_comment_text = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; @@ -101697,12 +124071,6 @@ impl ShowcaseDeleteCommentDetails { } field_event_uuid = Some(map.next_value()?); } - "comment_text" => { - if field_comment_text.is_some() { - return Err(::serde::de::Error::duplicate_field("comment_text")); - } - field_comment_text = Some(map.next_value()?); - } _ => { // unknown field allowed and ignored map.next_value::<::serde_json::Value>()?; @@ -101712,9 +124080,8 @@ impl ShowcaseDeleteCommentDetails { if optional && nothing { return Ok(None); } - let result = ShowcaseDeleteCommentDetails { + let result = ShowcaseRemoveMemberDetails { event_uuid: field_event_uuid.ok_or_else(|| ::serde::de::Error::missing_field("event_uuid"))?, - comment_text: field_comment_text.and_then(Option::flatten), }; Ok(Some(result)) } @@ -101725,36 +124092,33 @@ impl ShowcaseDeleteCommentDetails { ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; s.serialize_field("event_uuid", &self.event_uuid)?; - if let Some(val) = &self.comment_text { - s.serialize_field("comment_text", val)?; - } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for ShowcaseDeleteCommentDetails { +impl<'de> ::serde::de::Deserialize<'de> for ShowcaseRemoveMemberDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = ShowcaseDeleteCommentDetails; + type Value = ShowcaseRemoveMemberDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a ShowcaseDeleteCommentDetails struct") + f.write_str("a ShowcaseRemoveMemberDetails struct") } fn visit_map>(self, map: V) -> Result { - ShowcaseDeleteCommentDetails::internal_deserialize(map) + ShowcaseRemoveMemberDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("ShowcaseDeleteCommentDetails", SHOWCASE_DELETE_COMMENT_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("ShowcaseRemoveMemberDetails", SHOWCASE_REMOVE_MEMBER_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for ShowcaseDeleteCommentDetails { +impl ::serde::ser::Serialize for ShowcaseRemoveMemberDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("ShowcaseDeleteCommentDetails", 2)?; + let mut s = serializer.serialize_struct("ShowcaseRemoveMemberDetails", 1)?; self.internal_serialize::(&mut s)?; s.end() } @@ -101762,30 +124126,30 @@ impl ::serde::ser::Serialize for ShowcaseDeleteCommentDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct ShowcaseDeleteCommentType { +pub struct ShowcaseRemoveMemberType { pub description: String, } -impl ShowcaseDeleteCommentType { +impl ShowcaseRemoveMemberType { pub fn new(description: String) -> Self { - ShowcaseDeleteCommentType { + ShowcaseRemoveMemberType { description, } } } -const SHOWCASE_DELETE_COMMENT_TYPE_FIELDS: &[&str] = &["description"]; -impl ShowcaseDeleteCommentType { +const SHOWCASE_REMOVE_MEMBER_TYPE_FIELDS: &[&str] = &["description"]; +impl ShowcaseRemoveMemberType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -101806,7 +124170,7 @@ impl ShowcaseDeleteCommentType { if optional && nothing { return Ok(None); } - let result = ShowcaseDeleteCommentType { + let result = ShowcaseRemoveMemberType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -101822,83 +124186,72 @@ impl ShowcaseDeleteCommentType { } } -impl<'de> ::serde::de::Deserialize<'de> for ShowcaseDeleteCommentType { +impl<'de> ::serde::de::Deserialize<'de> for ShowcaseRemoveMemberType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = ShowcaseDeleteCommentType; + type Value = ShowcaseRemoveMemberType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a ShowcaseDeleteCommentType struct") + f.write_str("a ShowcaseRemoveMemberType struct") } fn visit_map>(self, map: V) -> Result { - ShowcaseDeleteCommentType::internal_deserialize(map) + ShowcaseRemoveMemberType::internal_deserialize(map) } } - deserializer.deserialize_struct("ShowcaseDeleteCommentType", SHOWCASE_DELETE_COMMENT_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("ShowcaseRemoveMemberType", SHOWCASE_REMOVE_MEMBER_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for ShowcaseDeleteCommentType { +impl ::serde::ser::Serialize for ShowcaseRemoveMemberType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("ShowcaseDeleteCommentType", 1)?; + let mut s = serializer.serialize_struct("ShowcaseRemoveMemberType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Showcase document's logged information. +/// Renamed showcase. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct ShowcaseDocumentLogInfo { - /// Showcase document Id. - pub showcase_id: String, - /// Showcase document title. - pub showcase_title: String, +pub struct ShowcaseRenamedDetails { + /// Event unique identifier. + pub event_uuid: String, } -impl ShowcaseDocumentLogInfo { - pub fn new(showcase_id: String, showcase_title: String) -> Self { - ShowcaseDocumentLogInfo { - showcase_id, - showcase_title, +impl ShowcaseRenamedDetails { + pub fn new(event_uuid: String) -> Self { + ShowcaseRenamedDetails { + event_uuid, } } } -const SHOWCASE_DOCUMENT_LOG_INFO_FIELDS: &[&str] = &["showcase_id", - "showcase_title"]; -impl ShowcaseDocumentLogInfo { +const SHOWCASE_RENAMED_DETAILS_FIELDS: &[&str] = &["event_uuid"]; +impl ShowcaseRenamedDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_showcase_id = None; - let mut field_showcase_title = None; + ) -> Result, V::Error> { + let mut field_event_uuid = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "showcase_id" => { - if field_showcase_id.is_some() { - return Err(::serde::de::Error::duplicate_field("showcase_id")); - } - field_showcase_id = Some(map.next_value()?); - } - "showcase_title" => { - if field_showcase_title.is_some() { - return Err(::serde::de::Error::duplicate_field("showcase_title")); + "event_uuid" => { + if field_event_uuid.is_some() { + return Err(::serde::de::Error::duplicate_field("event_uuid")); } - field_showcase_title = Some(map.next_value()?); + field_event_uuid = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -101909,9 +124262,8 @@ impl ShowcaseDocumentLogInfo { if optional && nothing { return Ok(None); } - let result = ShowcaseDocumentLogInfo { - showcase_id: field_showcase_id.ok_or_else(|| ::serde::de::Error::missing_field("showcase_id"))?, - showcase_title: field_showcase_title.ok_or_else(|| ::serde::de::Error::missing_field("showcase_title"))?, + let result = ShowcaseRenamedDetails { + event_uuid: field_event_uuid.ok_or_else(|| ::serde::de::Error::missing_field("event_uuid"))?, }; Ok(Some(result)) } @@ -101921,143 +124273,158 @@ impl ShowcaseDocumentLogInfo { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("showcase_id", &self.showcase_id)?; - s.serialize_field("showcase_title", &self.showcase_title)?; + s.serialize_field("event_uuid", &self.event_uuid)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for ShowcaseDocumentLogInfo { +impl<'de> ::serde::de::Deserialize<'de> for ShowcaseRenamedDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = ShowcaseDocumentLogInfo; + type Value = ShowcaseRenamedDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a ShowcaseDocumentLogInfo struct") + f.write_str("a ShowcaseRenamedDetails struct") } fn visit_map>(self, map: V) -> Result { - ShowcaseDocumentLogInfo::internal_deserialize(map) + ShowcaseRenamedDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("ShowcaseDocumentLogInfo", SHOWCASE_DOCUMENT_LOG_INFO_FIELDS, StructVisitor) + deserializer.deserialize_struct("ShowcaseRenamedDetails", SHOWCASE_RENAMED_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for ShowcaseDocumentLogInfo { +impl ::serde::ser::Serialize for ShowcaseRenamedDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("ShowcaseDocumentLogInfo", 2)?; + let mut s = serializer.serialize_struct("ShowcaseRenamedDetails", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Policy for controlling if files can be downloaded from Showcases by team members #[derive(Debug, Clone, PartialEq, Eq)] -#[non_exhaustive] // variants may be added in the future -pub enum ShowcaseDownloadPolicy { - Disabled, - Enabled, - /// Catch-all used for unrecognized values returned from the server. Encountering this value - /// typically indicates that this SDK version is out of date. - Other, +#[non_exhaustive] // structs may have more fields added in the future. +pub struct ShowcaseRenamedType { + pub description: String, } -impl<'de> ::serde::de::Deserialize<'de> for ShowcaseDownloadPolicy { +impl ShowcaseRenamedType { + pub fn new(description: String) -> Self { + ShowcaseRenamedType { + description, + } + } +} + +const SHOWCASE_RENAMED_TYPE_FIELDS: &[&str] = &["description"]; +impl ShowcaseRenamedType { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_description = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); + } + field_description = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } + } + } + if optional && nothing { + return Ok(None); + } + let result = ShowcaseRenamedType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("description", &self.description)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for ShowcaseRenamedType { fn deserialize>(deserializer: D) -> Result { - // union deserializer - use serde::de::{self, MapAccess, Visitor}; - struct EnumVisitor; - impl<'de> Visitor<'de> for EnumVisitor { - type Value = ShowcaseDownloadPolicy; + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = ShowcaseRenamedType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a ShowcaseDownloadPolicy structure") + f.write_str("a ShowcaseRenamedType struct") } - fn visit_map>(self, mut map: V) -> Result { - let tag: &str = match map.next_key()? { - Some(".tag") => map.next_value()?, - _ => return Err(de::Error::missing_field(".tag")) - }; - let value = match tag { - "disabled" => ShowcaseDownloadPolicy::Disabled, - "enabled" => ShowcaseDownloadPolicy::Enabled, - _ => ShowcaseDownloadPolicy::Other, - }; - crate::eat_json_fields(&mut map)?; - Ok(value) + fn visit_map>(self, map: V) -> Result { + ShowcaseRenamedType::internal_deserialize(map) } } - const VARIANTS: &[&str] = &["disabled", - "enabled", - "other"]; - deserializer.deserialize_struct("ShowcaseDownloadPolicy", VARIANTS, EnumVisitor) + deserializer.deserialize_struct("ShowcaseRenamedType", SHOWCASE_RENAMED_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for ShowcaseDownloadPolicy { +impl ::serde::ser::Serialize for ShowcaseRenamedType { fn serialize(&self, serializer: S) -> Result { - // union serializer + // struct serializer use serde::ser::SerializeStruct; - match self { - ShowcaseDownloadPolicy::Disabled => { - // unit - let mut s = serializer.serialize_struct("ShowcaseDownloadPolicy", 1)?; - s.serialize_field(".tag", "disabled")?; - s.end() - } - ShowcaseDownloadPolicy::Enabled => { - // unit - let mut s = serializer.serialize_struct("ShowcaseDownloadPolicy", 1)?; - s.serialize_field(".tag", "enabled")?; - s.end() - } - ShowcaseDownloadPolicy::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) - } + let mut s = serializer.serialize_struct("ShowcaseRenamedType", 1)?; + self.internal_serialize::(&mut s)?; + s.end() } } -/// Edited showcase comment. +/// Requested access to showcase. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct ShowcaseEditCommentDetails { +pub struct ShowcaseRequestAccessDetails { /// Event unique identifier. pub event_uuid: String, - /// Comment text. - pub comment_text: Option, } -impl ShowcaseEditCommentDetails { +impl ShowcaseRequestAccessDetails { pub fn new(event_uuid: String) -> Self { - ShowcaseEditCommentDetails { + ShowcaseRequestAccessDetails { event_uuid, - comment_text: None, } } - - pub fn with_comment_text(mut self, value: String) -> Self { - self.comment_text = Some(value); - self - } } -const SHOWCASE_EDIT_COMMENT_DETAILS_FIELDS: &[&str] = &["event_uuid", - "comment_text"]; -impl ShowcaseEditCommentDetails { +const SHOWCASE_REQUEST_ACCESS_DETAILS_FIELDS: &[&str] = &["event_uuid"]; +impl ShowcaseRequestAccessDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_event_uuid = None; - let mut field_comment_text = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; @@ -102068,12 +124435,6 @@ impl ShowcaseEditCommentDetails { } field_event_uuid = Some(map.next_value()?); } - "comment_text" => { - if field_comment_text.is_some() { - return Err(::serde::de::Error::duplicate_field("comment_text")); - } - field_comment_text = Some(map.next_value()?); - } _ => { // unknown field allowed and ignored map.next_value::<::serde_json::Value>()?; @@ -102083,9 +124444,8 @@ impl ShowcaseEditCommentDetails { if optional && nothing { return Ok(None); } - let result = ShowcaseEditCommentDetails { + let result = ShowcaseRequestAccessDetails { event_uuid: field_event_uuid.ok_or_else(|| ::serde::de::Error::missing_field("event_uuid"))?, - comment_text: field_comment_text.and_then(Option::flatten), }; Ok(Some(result)) } @@ -102096,36 +124456,33 @@ impl ShowcaseEditCommentDetails { ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; s.serialize_field("event_uuid", &self.event_uuid)?; - if let Some(val) = &self.comment_text { - s.serialize_field("comment_text", val)?; - } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for ShowcaseEditCommentDetails { +impl<'de> ::serde::de::Deserialize<'de> for ShowcaseRequestAccessDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = ShowcaseEditCommentDetails; + type Value = ShowcaseRequestAccessDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a ShowcaseEditCommentDetails struct") + f.write_str("a ShowcaseRequestAccessDetails struct") } fn visit_map>(self, map: V) -> Result { - ShowcaseEditCommentDetails::internal_deserialize(map) + ShowcaseRequestAccessDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("ShowcaseEditCommentDetails", SHOWCASE_EDIT_COMMENT_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("ShowcaseRequestAccessDetails", SHOWCASE_REQUEST_ACCESS_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for ShowcaseEditCommentDetails { +impl ::serde::ser::Serialize for ShowcaseRequestAccessDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("ShowcaseEditCommentDetails", 2)?; + let mut s = serializer.serialize_struct("ShowcaseRequestAccessDetails", 1)?; self.internal_serialize::(&mut s)?; s.end() } @@ -102133,30 +124490,30 @@ impl ::serde::ser::Serialize for ShowcaseEditCommentDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct ShowcaseEditCommentType { +pub struct ShowcaseRequestAccessType { pub description: String, } -impl ShowcaseEditCommentType { +impl ShowcaseRequestAccessType { pub fn new(description: String) -> Self { - ShowcaseEditCommentType { + ShowcaseRequestAccessType { description, } } } -const SHOWCASE_EDIT_COMMENT_TYPE_FIELDS: &[&str] = &["description"]; -impl ShowcaseEditCommentType { +const SHOWCASE_REQUEST_ACCESS_TYPE_FIELDS: &[&str] = &["description"]; +impl ShowcaseRequestAccessType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -102177,7 +124534,7 @@ impl ShowcaseEditCommentType { if optional && nothing { return Ok(None); } - let result = ShowcaseEditCommentType { + let result = ShowcaseRequestAccessType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -102193,63 +124550,73 @@ impl ShowcaseEditCommentType { } } -impl<'de> ::serde::de::Deserialize<'de> for ShowcaseEditCommentType { +impl<'de> ::serde::de::Deserialize<'de> for ShowcaseRequestAccessType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = ShowcaseEditCommentType; + type Value = ShowcaseRequestAccessType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a ShowcaseEditCommentType struct") + f.write_str("a ShowcaseRequestAccessType struct") } fn visit_map>(self, map: V) -> Result { - ShowcaseEditCommentType::internal_deserialize(map) + ShowcaseRequestAccessType::internal_deserialize(map) } } - deserializer.deserialize_struct("ShowcaseEditCommentType", SHOWCASE_EDIT_COMMENT_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("ShowcaseRequestAccessType", SHOWCASE_REQUEST_ACCESS_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for ShowcaseEditCommentType { +impl ::serde::ser::Serialize for ShowcaseRequestAccessType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("ShowcaseEditCommentType", 1)?; + let mut s = serializer.serialize_struct("ShowcaseRequestAccessType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Edited showcase. +/// Resolved showcase comment. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct ShowcaseEditedDetails { +pub struct ShowcaseResolveCommentDetails { /// Event unique identifier. pub event_uuid: String, + /// Comment text. + pub comment_text: Option, } -impl ShowcaseEditedDetails { +impl ShowcaseResolveCommentDetails { pub fn new(event_uuid: String) -> Self { - ShowcaseEditedDetails { + ShowcaseResolveCommentDetails { event_uuid, + comment_text: None, } } + + pub fn with_comment_text(mut self, value: String) -> Self { + self.comment_text = Some(value); + self + } } -const SHOWCASE_EDITED_DETAILS_FIELDS: &[&str] = &["event_uuid"]; -impl ShowcaseEditedDetails { +const SHOWCASE_RESOLVE_COMMENT_DETAILS_FIELDS: &[&str] = &["event_uuid", + "comment_text"]; +impl ShowcaseResolveCommentDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_event_uuid = None; + let mut field_comment_text = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; @@ -102260,6 +124627,12 @@ impl ShowcaseEditedDetails { } field_event_uuid = Some(map.next_value()?); } + "comment_text" => { + if field_comment_text.is_some() { + return Err(::serde::de::Error::duplicate_field("comment_text")); + } + field_comment_text = Some(map.next_value()?); + } _ => { // unknown field allowed and ignored map.next_value::<::serde_json::Value>()?; @@ -102269,8 +124642,9 @@ impl ShowcaseEditedDetails { if optional && nothing { return Ok(None); } - let result = ShowcaseEditedDetails { + let result = ShowcaseResolveCommentDetails { event_uuid: field_event_uuid.ok_or_else(|| ::serde::de::Error::missing_field("event_uuid"))?, + comment_text: field_comment_text.and_then(Option::flatten), }; Ok(Some(result)) } @@ -102281,33 +124655,36 @@ impl ShowcaseEditedDetails { ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; s.serialize_field("event_uuid", &self.event_uuid)?; + if let Some(val) = &self.comment_text { + s.serialize_field("comment_text", val)?; + } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for ShowcaseEditedDetails { +impl<'de> ::serde::de::Deserialize<'de> for ShowcaseResolveCommentDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = ShowcaseEditedDetails; + type Value = ShowcaseResolveCommentDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a ShowcaseEditedDetails struct") + f.write_str("a ShowcaseResolveCommentDetails struct") } fn visit_map>(self, map: V) -> Result { - ShowcaseEditedDetails::internal_deserialize(map) + ShowcaseResolveCommentDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("ShowcaseEditedDetails", SHOWCASE_EDITED_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("ShowcaseResolveCommentDetails", SHOWCASE_RESOLVE_COMMENT_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for ShowcaseEditedDetails { +impl ::serde::ser::Serialize for ShowcaseResolveCommentDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("ShowcaseEditedDetails", 1)?; + let mut s = serializer.serialize_struct("ShowcaseResolveCommentDetails", 2)?; self.internal_serialize::(&mut s)?; s.end() } @@ -102315,30 +124692,30 @@ impl ::serde::ser::Serialize for ShowcaseEditedDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct ShowcaseEditedType { +pub struct ShowcaseResolveCommentType { pub description: String, } -impl ShowcaseEditedType { +impl ShowcaseResolveCommentType { pub fn new(description: String) -> Self { - ShowcaseEditedType { + ShowcaseResolveCommentType { description, } } } -const SHOWCASE_EDITED_TYPE_FIELDS: &[&str] = &["description"]; -impl ShowcaseEditedType { +const SHOWCASE_RESOLVE_COMMENT_TYPE_FIELDS: &[&str] = &["description"]; +impl ShowcaseResolveCommentType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -102359,7 +124736,7 @@ impl ShowcaseEditedType { if optional && nothing { return Ok(None); } - let result = ShowcaseEditedType { + let result = ShowcaseResolveCommentType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -102375,190 +124752,62 @@ impl ShowcaseEditedType { } } -impl<'de> ::serde::de::Deserialize<'de> for ShowcaseEditedType { +impl<'de> ::serde::de::Deserialize<'de> for ShowcaseResolveCommentType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = ShowcaseEditedType; + type Value = ShowcaseResolveCommentType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a ShowcaseEditedType struct") + f.write_str("a ShowcaseResolveCommentType struct") } fn visit_map>(self, map: V) -> Result { - ShowcaseEditedType::internal_deserialize(map) + ShowcaseResolveCommentType::internal_deserialize(map) } } - deserializer.deserialize_struct("ShowcaseEditedType", SHOWCASE_EDITED_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("ShowcaseResolveCommentType", SHOWCASE_RESOLVE_COMMENT_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for ShowcaseEditedType { +impl ::serde::ser::Serialize for ShowcaseResolveCommentType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("ShowcaseEditedType", 1)?; + let mut s = serializer.serialize_struct("ShowcaseResolveCommentType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Policy for controlling whether Showcase is enabled. -#[derive(Debug, Clone, PartialEq, Eq)] -#[non_exhaustive] // variants may be added in the future -pub enum ShowcaseEnabledPolicy { - Disabled, - Enabled, - /// Catch-all used for unrecognized values returned from the server. Encountering this value - /// typically indicates that this SDK version is out of date. - Other, -} - -impl<'de> ::serde::de::Deserialize<'de> for ShowcaseEnabledPolicy { - fn deserialize>(deserializer: D) -> Result { - // union deserializer - use serde::de::{self, MapAccess, Visitor}; - struct EnumVisitor; - impl<'de> Visitor<'de> for EnumVisitor { - type Value = ShowcaseEnabledPolicy; - fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a ShowcaseEnabledPolicy structure") - } - fn visit_map>(self, mut map: V) -> Result { - let tag: &str = match map.next_key()? { - Some(".tag") => map.next_value()?, - _ => return Err(de::Error::missing_field(".tag")) - }; - let value = match tag { - "disabled" => ShowcaseEnabledPolicy::Disabled, - "enabled" => ShowcaseEnabledPolicy::Enabled, - _ => ShowcaseEnabledPolicy::Other, - }; - crate::eat_json_fields(&mut map)?; - Ok(value) - } - } - const VARIANTS: &[&str] = &["disabled", - "enabled", - "other"]; - deserializer.deserialize_struct("ShowcaseEnabledPolicy", VARIANTS, EnumVisitor) - } -} - -impl ::serde::ser::Serialize for ShowcaseEnabledPolicy { - fn serialize(&self, serializer: S) -> Result { - // union serializer - use serde::ser::SerializeStruct; - match self { - ShowcaseEnabledPolicy::Disabled => { - // unit - let mut s = serializer.serialize_struct("ShowcaseEnabledPolicy", 1)?; - s.serialize_field(".tag", "disabled")?; - s.end() - } - ShowcaseEnabledPolicy::Enabled => { - // unit - let mut s = serializer.serialize_struct("ShowcaseEnabledPolicy", 1)?; - s.serialize_field(".tag", "enabled")?; - s.end() - } - ShowcaseEnabledPolicy::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) - } - } -} - -/// Policy for controlling if team members can share Showcases externally. -#[derive(Debug, Clone, PartialEq, Eq)] -#[non_exhaustive] // variants may be added in the future -pub enum ShowcaseExternalSharingPolicy { - Disabled, - Enabled, - /// Catch-all used for unrecognized values returned from the server. Encountering this value - /// typically indicates that this SDK version is out of date. - Other, -} - -impl<'de> ::serde::de::Deserialize<'de> for ShowcaseExternalSharingPolicy { - fn deserialize>(deserializer: D) -> Result { - // union deserializer - use serde::de::{self, MapAccess, Visitor}; - struct EnumVisitor; - impl<'de> Visitor<'de> for EnumVisitor { - type Value = ShowcaseExternalSharingPolicy; - fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a ShowcaseExternalSharingPolicy structure") - } - fn visit_map>(self, mut map: V) -> Result { - let tag: &str = match map.next_key()? { - Some(".tag") => map.next_value()?, - _ => return Err(de::Error::missing_field(".tag")) - }; - let value = match tag { - "disabled" => ShowcaseExternalSharingPolicy::Disabled, - "enabled" => ShowcaseExternalSharingPolicy::Enabled, - _ => ShowcaseExternalSharingPolicy::Other, - }; - crate::eat_json_fields(&mut map)?; - Ok(value) - } - } - const VARIANTS: &[&str] = &["disabled", - "enabled", - "other"]; - deserializer.deserialize_struct("ShowcaseExternalSharingPolicy", VARIANTS, EnumVisitor) - } -} - -impl ::serde::ser::Serialize for ShowcaseExternalSharingPolicy { - fn serialize(&self, serializer: S) -> Result { - // union serializer - use serde::ser::SerializeStruct; - match self { - ShowcaseExternalSharingPolicy::Disabled => { - // unit - let mut s = serializer.serialize_struct("ShowcaseExternalSharingPolicy", 1)?; - s.serialize_field(".tag", "disabled")?; - s.end() - } - ShowcaseExternalSharingPolicy::Enabled => { - // unit - let mut s = serializer.serialize_struct("ShowcaseExternalSharingPolicy", 1)?; - s.serialize_field(".tag", "enabled")?; - s.end() - } - ShowcaseExternalSharingPolicy::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) - } - } -} - -/// Added file to showcase. +/// Unarchived showcase. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct ShowcaseFileAddedDetails { +pub struct ShowcaseRestoredDetails { /// Event unique identifier. pub event_uuid: String, } -impl ShowcaseFileAddedDetails { +impl ShowcaseRestoredDetails { pub fn new(event_uuid: String) -> Self { - ShowcaseFileAddedDetails { + ShowcaseRestoredDetails { event_uuid, } } } -const SHOWCASE_FILE_ADDED_DETAILS_FIELDS: &[&str] = &["event_uuid"]; -impl ShowcaseFileAddedDetails { +const SHOWCASE_RESTORED_DETAILS_FIELDS: &[&str] = &["event_uuid"]; +impl ShowcaseRestoredDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_event_uuid = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -102579,7 +124828,7 @@ impl ShowcaseFileAddedDetails { if optional && nothing { return Ok(None); } - let result = ShowcaseFileAddedDetails { + let result = ShowcaseRestoredDetails { event_uuid: field_event_uuid.ok_or_else(|| ::serde::de::Error::missing_field("event_uuid"))?, }; Ok(Some(result)) @@ -102595,29 +124844,29 @@ impl ShowcaseFileAddedDetails { } } -impl<'de> ::serde::de::Deserialize<'de> for ShowcaseFileAddedDetails { +impl<'de> ::serde::de::Deserialize<'de> for ShowcaseRestoredDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = ShowcaseFileAddedDetails; + type Value = ShowcaseRestoredDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a ShowcaseFileAddedDetails struct") + f.write_str("a ShowcaseRestoredDetails struct") } fn visit_map>(self, map: V) -> Result { - ShowcaseFileAddedDetails::internal_deserialize(map) + ShowcaseRestoredDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("ShowcaseFileAddedDetails", SHOWCASE_FILE_ADDED_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("ShowcaseRestoredDetails", SHOWCASE_RESTORED_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for ShowcaseFileAddedDetails { +impl ::serde::ser::Serialize for ShowcaseRestoredDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("ShowcaseFileAddedDetails", 1)?; + let mut s = serializer.serialize_struct("ShowcaseRestoredDetails", 1)?; self.internal_serialize::(&mut s)?; s.end() } @@ -102625,30 +124874,30 @@ impl ::serde::ser::Serialize for ShowcaseFileAddedDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct ShowcaseFileAddedType { +pub struct ShowcaseRestoredType { pub description: String, } -impl ShowcaseFileAddedType { +impl ShowcaseRestoredType { pub fn new(description: String) -> Self { - ShowcaseFileAddedType { + ShowcaseRestoredType { description, } } } -const SHOWCASE_FILE_ADDED_TYPE_FIELDS: &[&str] = &["description"]; -impl ShowcaseFileAddedType { +const SHOWCASE_RESTORED_TYPE_FIELDS: &[&str] = &["description"]; +impl ShowcaseRestoredType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -102669,7 +124918,7 @@ impl ShowcaseFileAddedType { if optional && nothing { return Ok(None); } - let result = ShowcaseFileAddedType { + let result = ShowcaseRestoredType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -102685,68 +124934,63 @@ impl ShowcaseFileAddedType { } } -impl<'de> ::serde::de::Deserialize<'de> for ShowcaseFileAddedType { +impl<'de> ::serde::de::Deserialize<'de> for ShowcaseRestoredType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = ShowcaseFileAddedType; + type Value = ShowcaseRestoredType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a ShowcaseFileAddedType struct") + f.write_str("a ShowcaseRestoredType struct") } fn visit_map>(self, map: V) -> Result { - ShowcaseFileAddedType::internal_deserialize(map) + ShowcaseRestoredType::internal_deserialize(map) } } - deserializer.deserialize_struct("ShowcaseFileAddedType", SHOWCASE_FILE_ADDED_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("ShowcaseRestoredType", SHOWCASE_RESTORED_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for ShowcaseFileAddedType { +impl ::serde::ser::Serialize for ShowcaseRestoredType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("ShowcaseFileAddedType", 1)?; + let mut s = serializer.serialize_struct("ShowcaseRestoredType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Downloaded file from showcase. +/// Deleted showcase (old version). #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct ShowcaseFileDownloadDetails { +pub struct ShowcaseTrashedDeprecatedDetails { /// Event unique identifier. pub event_uuid: String, - /// Showcase download type. - pub download_type: String, } -impl ShowcaseFileDownloadDetails { - pub fn new(event_uuid: String, download_type: String) -> Self { - ShowcaseFileDownloadDetails { +impl ShowcaseTrashedDeprecatedDetails { + pub fn new(event_uuid: String) -> Self { + ShowcaseTrashedDeprecatedDetails { event_uuid, - download_type, } } } -const SHOWCASE_FILE_DOWNLOAD_DETAILS_FIELDS: &[&str] = &["event_uuid", - "download_type"]; -impl ShowcaseFileDownloadDetails { +const SHOWCASE_TRASHED_DEPRECATED_DETAILS_FIELDS: &[&str] = &["event_uuid"]; +impl ShowcaseTrashedDeprecatedDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_event_uuid = None; - let mut field_download_type = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; @@ -102757,12 +125001,6 @@ impl ShowcaseFileDownloadDetails { } field_event_uuid = Some(map.next_value()?); } - "download_type" => { - if field_download_type.is_some() { - return Err(::serde::de::Error::duplicate_field("download_type")); - } - field_download_type = Some(map.next_value()?); - } _ => { // unknown field allowed and ignored map.next_value::<::serde_json::Value>()?; @@ -102772,9 +125010,8 @@ impl ShowcaseFileDownloadDetails { if optional && nothing { return Ok(None); } - let result = ShowcaseFileDownloadDetails { + let result = ShowcaseTrashedDeprecatedDetails { event_uuid: field_event_uuid.ok_or_else(|| ::serde::de::Error::missing_field("event_uuid"))?, - download_type: field_download_type.ok_or_else(|| ::serde::de::Error::missing_field("download_type"))?, }; Ok(Some(result)) } @@ -102785,34 +125022,33 @@ impl ShowcaseFileDownloadDetails { ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; s.serialize_field("event_uuid", &self.event_uuid)?; - s.serialize_field("download_type", &self.download_type)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for ShowcaseFileDownloadDetails { +impl<'de> ::serde::de::Deserialize<'de> for ShowcaseTrashedDeprecatedDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = ShowcaseFileDownloadDetails; + type Value = ShowcaseTrashedDeprecatedDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a ShowcaseFileDownloadDetails struct") + f.write_str("a ShowcaseTrashedDeprecatedDetails struct") } fn visit_map>(self, map: V) -> Result { - ShowcaseFileDownloadDetails::internal_deserialize(map) + ShowcaseTrashedDeprecatedDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("ShowcaseFileDownloadDetails", SHOWCASE_FILE_DOWNLOAD_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("ShowcaseTrashedDeprecatedDetails", SHOWCASE_TRASHED_DEPRECATED_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for ShowcaseFileDownloadDetails { +impl ::serde::ser::Serialize for ShowcaseTrashedDeprecatedDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("ShowcaseFileDownloadDetails", 2)?; + let mut s = serializer.serialize_struct("ShowcaseTrashedDeprecatedDetails", 1)?; self.internal_serialize::(&mut s)?; s.end() } @@ -102820,30 +125056,30 @@ impl ::serde::ser::Serialize for ShowcaseFileDownloadDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct ShowcaseFileDownloadType { +pub struct ShowcaseTrashedDeprecatedType { pub description: String, } -impl ShowcaseFileDownloadType { +impl ShowcaseTrashedDeprecatedType { pub fn new(description: String) -> Self { - ShowcaseFileDownloadType { + ShowcaseTrashedDeprecatedType { description, } } } -const SHOWCASE_FILE_DOWNLOAD_TYPE_FIELDS: &[&str] = &["description"]; -impl ShowcaseFileDownloadType { +const SHOWCASE_TRASHED_DEPRECATED_TYPE_FIELDS: &[&str] = &["description"]; +impl ShowcaseTrashedDeprecatedType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -102864,7 +125100,7 @@ impl ShowcaseFileDownloadType { if optional && nothing { return Ok(None); } - let result = ShowcaseFileDownloadType { + let result = ShowcaseTrashedDeprecatedType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -102880,62 +125116,62 @@ impl ShowcaseFileDownloadType { } } -impl<'de> ::serde::de::Deserialize<'de> for ShowcaseFileDownloadType { +impl<'de> ::serde::de::Deserialize<'de> for ShowcaseTrashedDeprecatedType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = ShowcaseFileDownloadType; + type Value = ShowcaseTrashedDeprecatedType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a ShowcaseFileDownloadType struct") + f.write_str("a ShowcaseTrashedDeprecatedType struct") } fn visit_map>(self, map: V) -> Result { - ShowcaseFileDownloadType::internal_deserialize(map) + ShowcaseTrashedDeprecatedType::internal_deserialize(map) } } - deserializer.deserialize_struct("ShowcaseFileDownloadType", SHOWCASE_FILE_DOWNLOAD_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("ShowcaseTrashedDeprecatedType", SHOWCASE_TRASHED_DEPRECATED_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for ShowcaseFileDownloadType { +impl ::serde::ser::Serialize for ShowcaseTrashedDeprecatedType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("ShowcaseFileDownloadType", 1)?; + let mut s = serializer.serialize_struct("ShowcaseTrashedDeprecatedType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Removed file from showcase. +/// Deleted showcase. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct ShowcaseFileRemovedDetails { +pub struct ShowcaseTrashedDetails { /// Event unique identifier. pub event_uuid: String, } -impl ShowcaseFileRemovedDetails { +impl ShowcaseTrashedDetails { pub fn new(event_uuid: String) -> Self { - ShowcaseFileRemovedDetails { + ShowcaseTrashedDetails { event_uuid, } } } -const SHOWCASE_FILE_REMOVED_DETAILS_FIELDS: &[&str] = &["event_uuid"]; -impl ShowcaseFileRemovedDetails { +const SHOWCASE_TRASHED_DETAILS_FIELDS: &[&str] = &["event_uuid"]; +impl ShowcaseTrashedDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_event_uuid = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -102956,7 +125192,7 @@ impl ShowcaseFileRemovedDetails { if optional && nothing { return Ok(None); } - let result = ShowcaseFileRemovedDetails { + let result = ShowcaseTrashedDetails { event_uuid: field_event_uuid.ok_or_else(|| ::serde::de::Error::missing_field("event_uuid"))?, }; Ok(Some(result)) @@ -102972,29 +125208,29 @@ impl ShowcaseFileRemovedDetails { } } -impl<'de> ::serde::de::Deserialize<'de> for ShowcaseFileRemovedDetails { +impl<'de> ::serde::de::Deserialize<'de> for ShowcaseTrashedDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = ShowcaseFileRemovedDetails; + type Value = ShowcaseTrashedDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a ShowcaseFileRemovedDetails struct") + f.write_str("a ShowcaseTrashedDetails struct") } fn visit_map>(self, map: V) -> Result { - ShowcaseFileRemovedDetails::internal_deserialize(map) + ShowcaseTrashedDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("ShowcaseFileRemovedDetails", SHOWCASE_FILE_REMOVED_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("ShowcaseTrashedDetails", SHOWCASE_TRASHED_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for ShowcaseFileRemovedDetails { +impl ::serde::ser::Serialize for ShowcaseTrashedDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("ShowcaseFileRemovedDetails", 1)?; + let mut s = serializer.serialize_struct("ShowcaseTrashedDetails", 1)?; self.internal_serialize::(&mut s)?; s.end() } @@ -103002,30 +125238,30 @@ impl ::serde::ser::Serialize for ShowcaseFileRemovedDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct ShowcaseFileRemovedType { +pub struct ShowcaseTrashedType { pub description: String, } -impl ShowcaseFileRemovedType { +impl ShowcaseTrashedType { pub fn new(description: String) -> Self { - ShowcaseFileRemovedType { + ShowcaseTrashedType { description, } } } -const SHOWCASE_FILE_REMOVED_TYPE_FIELDS: &[&str] = &["description"]; -impl ShowcaseFileRemovedType { +const SHOWCASE_TRASHED_TYPE_FIELDS: &[&str] = &["description"]; +impl ShowcaseTrashedType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -103046,7 +125282,7 @@ impl ShowcaseFileRemovedType { if optional && nothing { return Ok(None); } - let result = ShowcaseFileRemovedType { + let result = ShowcaseTrashedType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -103062,63 +125298,73 @@ impl ShowcaseFileRemovedType { } } -impl<'de> ::serde::de::Deserialize<'de> for ShowcaseFileRemovedType { +impl<'de> ::serde::de::Deserialize<'de> for ShowcaseTrashedType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = ShowcaseFileRemovedType; + type Value = ShowcaseTrashedType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a ShowcaseFileRemovedType struct") + f.write_str("a ShowcaseTrashedType struct") } fn visit_map>(self, map: V) -> Result { - ShowcaseFileRemovedType::internal_deserialize(map) + ShowcaseTrashedType::internal_deserialize(map) } } - deserializer.deserialize_struct("ShowcaseFileRemovedType", SHOWCASE_FILE_REMOVED_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("ShowcaseTrashedType", SHOWCASE_TRASHED_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for ShowcaseFileRemovedType { +impl ::serde::ser::Serialize for ShowcaseTrashedType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("ShowcaseFileRemovedType", 1)?; + let mut s = serializer.serialize_struct("ShowcaseTrashedType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Viewed file in showcase. +/// Unresolved showcase comment. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct ShowcaseFileViewDetails { +pub struct ShowcaseUnresolveCommentDetails { /// Event unique identifier. pub event_uuid: String, + /// Comment text. + pub comment_text: Option, } -impl ShowcaseFileViewDetails { +impl ShowcaseUnresolveCommentDetails { pub fn new(event_uuid: String) -> Self { - ShowcaseFileViewDetails { + ShowcaseUnresolveCommentDetails { event_uuid, + comment_text: None, } } + + pub fn with_comment_text(mut self, value: String) -> Self { + self.comment_text = Some(value); + self + } } -const SHOWCASE_FILE_VIEW_DETAILS_FIELDS: &[&str] = &["event_uuid"]; -impl ShowcaseFileViewDetails { +const SHOWCASE_UNRESOLVE_COMMENT_DETAILS_FIELDS: &[&str] = &["event_uuid", + "comment_text"]; +impl ShowcaseUnresolveCommentDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_event_uuid = None; + let mut field_comment_text = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; @@ -103129,6 +125375,12 @@ impl ShowcaseFileViewDetails { } field_event_uuid = Some(map.next_value()?); } + "comment_text" => { + if field_comment_text.is_some() { + return Err(::serde::de::Error::duplicate_field("comment_text")); + } + field_comment_text = Some(map.next_value()?); + } _ => { // unknown field allowed and ignored map.next_value::<::serde_json::Value>()?; @@ -103138,8 +125390,9 @@ impl ShowcaseFileViewDetails { if optional && nothing { return Ok(None); } - let result = ShowcaseFileViewDetails { + let result = ShowcaseUnresolveCommentDetails { event_uuid: field_event_uuid.ok_or_else(|| ::serde::de::Error::missing_field("event_uuid"))?, + comment_text: field_comment_text.and_then(Option::flatten), }; Ok(Some(result)) } @@ -103150,33 +125403,36 @@ impl ShowcaseFileViewDetails { ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; s.serialize_field("event_uuid", &self.event_uuid)?; + if let Some(val) = &self.comment_text { + s.serialize_field("comment_text", val)?; + } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for ShowcaseFileViewDetails { +impl<'de> ::serde::de::Deserialize<'de> for ShowcaseUnresolveCommentDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = ShowcaseFileViewDetails; + type Value = ShowcaseUnresolveCommentDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a ShowcaseFileViewDetails struct") + f.write_str("a ShowcaseUnresolveCommentDetails struct") } fn visit_map>(self, map: V) -> Result { - ShowcaseFileViewDetails::internal_deserialize(map) + ShowcaseUnresolveCommentDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("ShowcaseFileViewDetails", SHOWCASE_FILE_VIEW_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("ShowcaseUnresolveCommentDetails", SHOWCASE_UNRESOLVE_COMMENT_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for ShowcaseFileViewDetails { +impl ::serde::ser::Serialize for ShowcaseUnresolveCommentDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("ShowcaseFileViewDetails", 1)?; + let mut s = serializer.serialize_struct("ShowcaseUnresolveCommentDetails", 2)?; self.internal_serialize::(&mut s)?; s.end() } @@ -103184,30 +125440,30 @@ impl ::serde::ser::Serialize for ShowcaseFileViewDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct ShowcaseFileViewType { +pub struct ShowcaseUnresolveCommentType { pub description: String, } -impl ShowcaseFileViewType { +impl ShowcaseUnresolveCommentType { pub fn new(description: String) -> Self { - ShowcaseFileViewType { + ShowcaseUnresolveCommentType { description, } } } -const SHOWCASE_FILE_VIEW_TYPE_FIELDS: &[&str] = &["description"]; -impl ShowcaseFileViewType { +const SHOWCASE_UNRESOLVE_COMMENT_TYPE_FIELDS: &[&str] = &["description"]; +impl ShowcaseUnresolveCommentType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -103228,7 +125484,7 @@ impl ShowcaseFileViewType { if optional && nothing { return Ok(None); } - let result = ShowcaseFileViewType { + let result = ShowcaseUnresolveCommentType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -103244,62 +125500,62 @@ impl ShowcaseFileViewType { } } -impl<'de> ::serde::de::Deserialize<'de> for ShowcaseFileViewType { +impl<'de> ::serde::de::Deserialize<'de> for ShowcaseUnresolveCommentType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = ShowcaseFileViewType; + type Value = ShowcaseUnresolveCommentType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a ShowcaseFileViewType struct") + f.write_str("a ShowcaseUnresolveCommentType struct") } fn visit_map>(self, map: V) -> Result { - ShowcaseFileViewType::internal_deserialize(map) + ShowcaseUnresolveCommentType::internal_deserialize(map) } } - deserializer.deserialize_struct("ShowcaseFileViewType", SHOWCASE_FILE_VIEW_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("ShowcaseUnresolveCommentType", SHOWCASE_UNRESOLVE_COMMENT_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for ShowcaseFileViewType { +impl ::serde::ser::Serialize for ShowcaseUnresolveCommentType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("ShowcaseFileViewType", 1)?; + let mut s = serializer.serialize_struct("ShowcaseUnresolveCommentType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Permanently deleted showcase. +/// Restored showcase (old version). #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct ShowcasePermanentlyDeletedDetails { +pub struct ShowcaseUntrashedDeprecatedDetails { /// Event unique identifier. pub event_uuid: String, } -impl ShowcasePermanentlyDeletedDetails { +impl ShowcaseUntrashedDeprecatedDetails { pub fn new(event_uuid: String) -> Self { - ShowcasePermanentlyDeletedDetails { + ShowcaseUntrashedDeprecatedDetails { event_uuid, } } } -const SHOWCASE_PERMANENTLY_DELETED_DETAILS_FIELDS: &[&str] = &["event_uuid"]; -impl ShowcasePermanentlyDeletedDetails { +const SHOWCASE_UNTRASHED_DEPRECATED_DETAILS_FIELDS: &[&str] = &["event_uuid"]; +impl ShowcaseUntrashedDeprecatedDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_event_uuid = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -103320,7 +125576,7 @@ impl ShowcasePermanentlyDeletedDetails { if optional && nothing { return Ok(None); } - let result = ShowcasePermanentlyDeletedDetails { + let result = ShowcaseUntrashedDeprecatedDetails { event_uuid: field_event_uuid.ok_or_else(|| ::serde::de::Error::missing_field("event_uuid"))?, }; Ok(Some(result)) @@ -103336,29 +125592,29 @@ impl ShowcasePermanentlyDeletedDetails { } } -impl<'de> ::serde::de::Deserialize<'de> for ShowcasePermanentlyDeletedDetails { +impl<'de> ::serde::de::Deserialize<'de> for ShowcaseUntrashedDeprecatedDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = ShowcasePermanentlyDeletedDetails; + type Value = ShowcaseUntrashedDeprecatedDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a ShowcasePermanentlyDeletedDetails struct") + f.write_str("a ShowcaseUntrashedDeprecatedDetails struct") } fn visit_map>(self, map: V) -> Result { - ShowcasePermanentlyDeletedDetails::internal_deserialize(map) + ShowcaseUntrashedDeprecatedDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("ShowcasePermanentlyDeletedDetails", SHOWCASE_PERMANENTLY_DELETED_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("ShowcaseUntrashedDeprecatedDetails", SHOWCASE_UNTRASHED_DEPRECATED_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for ShowcasePermanentlyDeletedDetails { +impl ::serde::ser::Serialize for ShowcaseUntrashedDeprecatedDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("ShowcasePermanentlyDeletedDetails", 1)?; + let mut s = serializer.serialize_struct("ShowcaseUntrashedDeprecatedDetails", 1)?; self.internal_serialize::(&mut s)?; s.end() } @@ -103366,30 +125622,30 @@ impl ::serde::ser::Serialize for ShowcasePermanentlyDeletedDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct ShowcasePermanentlyDeletedType { +pub struct ShowcaseUntrashedDeprecatedType { pub description: String, } -impl ShowcasePermanentlyDeletedType { +impl ShowcaseUntrashedDeprecatedType { pub fn new(description: String) -> Self { - ShowcasePermanentlyDeletedType { + ShowcaseUntrashedDeprecatedType { description, } } } -const SHOWCASE_PERMANENTLY_DELETED_TYPE_FIELDS: &[&str] = &["description"]; -impl ShowcasePermanentlyDeletedType { +const SHOWCASE_UNTRASHED_DEPRECATED_TYPE_FIELDS: &[&str] = &["description"]; +impl ShowcaseUntrashedDeprecatedType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -103410,7 +125666,7 @@ impl ShowcasePermanentlyDeletedType { if optional && nothing { return Ok(None); } - let result = ShowcasePermanentlyDeletedType { + let result = ShowcaseUntrashedDeprecatedType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -103426,73 +125682,63 @@ impl ShowcasePermanentlyDeletedType { } } -impl<'de> ::serde::de::Deserialize<'de> for ShowcasePermanentlyDeletedType { +impl<'de> ::serde::de::Deserialize<'de> for ShowcaseUntrashedDeprecatedType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = ShowcasePermanentlyDeletedType; + type Value = ShowcaseUntrashedDeprecatedType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a ShowcasePermanentlyDeletedType struct") + f.write_str("a ShowcaseUntrashedDeprecatedType struct") } fn visit_map>(self, map: V) -> Result { - ShowcasePermanentlyDeletedType::internal_deserialize(map) + ShowcaseUntrashedDeprecatedType::internal_deserialize(map) } } - deserializer.deserialize_struct("ShowcasePermanentlyDeletedType", SHOWCASE_PERMANENTLY_DELETED_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("ShowcaseUntrashedDeprecatedType", SHOWCASE_UNTRASHED_DEPRECATED_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for ShowcasePermanentlyDeletedType { +impl ::serde::ser::Serialize for ShowcaseUntrashedDeprecatedType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("ShowcasePermanentlyDeletedType", 1)?; + let mut s = serializer.serialize_struct("ShowcaseUntrashedDeprecatedType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Added showcase comment. +/// Restored showcase. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct ShowcasePostCommentDetails { +pub struct ShowcaseUntrashedDetails { /// Event unique identifier. pub event_uuid: String, - /// Comment text. - pub comment_text: Option, } -impl ShowcasePostCommentDetails { +impl ShowcaseUntrashedDetails { pub fn new(event_uuid: String) -> Self { - ShowcasePostCommentDetails { + ShowcaseUntrashedDetails { event_uuid, - comment_text: None, } } - - pub fn with_comment_text(mut self, value: String) -> Self { - self.comment_text = Some(value); - self - } } -const SHOWCASE_POST_COMMENT_DETAILS_FIELDS: &[&str] = &["event_uuid", - "comment_text"]; -impl ShowcasePostCommentDetails { +const SHOWCASE_UNTRASHED_DETAILS_FIELDS: &[&str] = &["event_uuid"]; +impl ShowcaseUntrashedDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_event_uuid = None; - let mut field_comment_text = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; @@ -103503,12 +125749,6 @@ impl ShowcasePostCommentDetails { } field_event_uuid = Some(map.next_value()?); } - "comment_text" => { - if field_comment_text.is_some() { - return Err(::serde::de::Error::duplicate_field("comment_text")); - } - field_comment_text = Some(map.next_value()?); - } _ => { // unknown field allowed and ignored map.next_value::<::serde_json::Value>()?; @@ -103518,9 +125758,8 @@ impl ShowcasePostCommentDetails { if optional && nothing { return Ok(None); } - let result = ShowcasePostCommentDetails { + let result = ShowcaseUntrashedDetails { event_uuid: field_event_uuid.ok_or_else(|| ::serde::de::Error::missing_field("event_uuid"))?, - comment_text: field_comment_text.and_then(Option::flatten), }; Ok(Some(result)) } @@ -103531,36 +125770,33 @@ impl ShowcasePostCommentDetails { ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; s.serialize_field("event_uuid", &self.event_uuid)?; - if let Some(val) = &self.comment_text { - s.serialize_field("comment_text", val)?; - } Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for ShowcasePostCommentDetails { +impl<'de> ::serde::de::Deserialize<'de> for ShowcaseUntrashedDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = ShowcasePostCommentDetails; + type Value = ShowcaseUntrashedDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a ShowcasePostCommentDetails struct") + f.write_str("a ShowcaseUntrashedDetails struct") } fn visit_map>(self, map: V) -> Result { - ShowcasePostCommentDetails::internal_deserialize(map) + ShowcaseUntrashedDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("ShowcasePostCommentDetails", SHOWCASE_POST_COMMENT_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("ShowcaseUntrashedDetails", SHOWCASE_UNTRASHED_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for ShowcasePostCommentDetails { +impl ::serde::ser::Serialize for ShowcaseUntrashedDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("ShowcasePostCommentDetails", 2)?; + let mut s = serializer.serialize_struct("ShowcaseUntrashedDetails", 1)?; self.internal_serialize::(&mut s)?; s.end() } @@ -103568,30 +125804,30 @@ impl ::serde::ser::Serialize for ShowcasePostCommentDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct ShowcasePostCommentType { +pub struct ShowcaseUntrashedType { pub description: String, } -impl ShowcasePostCommentType { +impl ShowcaseUntrashedType { pub fn new(description: String) -> Self { - ShowcasePostCommentType { + ShowcaseUntrashedType { description, } } } -const SHOWCASE_POST_COMMENT_TYPE_FIELDS: &[&str] = &["description"]; -impl ShowcasePostCommentType { +const SHOWCASE_UNTRASHED_TYPE_FIELDS: &[&str] = &["description"]; +impl ShowcaseUntrashedType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -103612,7 +125848,7 @@ impl ShowcasePostCommentType { if optional && nothing { return Ok(None); } - let result = ShowcasePostCommentType { + let result = ShowcaseUntrashedType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -103628,62 +125864,62 @@ impl ShowcasePostCommentType { } } -impl<'de> ::serde::de::Deserialize<'de> for ShowcasePostCommentType { +impl<'de> ::serde::de::Deserialize<'de> for ShowcaseUntrashedType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = ShowcasePostCommentType; + type Value = ShowcaseUntrashedType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a ShowcasePostCommentType struct") + f.write_str("a ShowcaseUntrashedType struct") } fn visit_map>(self, map: V) -> Result { - ShowcasePostCommentType::internal_deserialize(map) + ShowcaseUntrashedType::internal_deserialize(map) } } - deserializer.deserialize_struct("ShowcasePostCommentType", SHOWCASE_POST_COMMENT_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("ShowcaseUntrashedType", SHOWCASE_UNTRASHED_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for ShowcasePostCommentType { +impl ::serde::ser::Serialize for ShowcaseUntrashedType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("ShowcasePostCommentType", 1)?; + let mut s = serializer.serialize_struct("ShowcaseUntrashedType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Removed member from showcase. +/// Viewed showcase. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct ShowcaseRemoveMemberDetails { +pub struct ShowcaseViewDetails { /// Event unique identifier. pub event_uuid: String, } -impl ShowcaseRemoveMemberDetails { +impl ShowcaseViewDetails { pub fn new(event_uuid: String) -> Self { - ShowcaseRemoveMemberDetails { + ShowcaseViewDetails { event_uuid, } } } -const SHOWCASE_REMOVE_MEMBER_DETAILS_FIELDS: &[&str] = &["event_uuid"]; -impl ShowcaseRemoveMemberDetails { +const SHOWCASE_VIEW_DETAILS_FIELDS: &[&str] = &["event_uuid"]; +impl ShowcaseViewDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_event_uuid = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -103704,7 +125940,7 @@ impl ShowcaseRemoveMemberDetails { if optional && nothing { return Ok(None); } - let result = ShowcaseRemoveMemberDetails { + let result = ShowcaseViewDetails { event_uuid: field_event_uuid.ok_or_else(|| ::serde::de::Error::missing_field("event_uuid"))?, }; Ok(Some(result)) @@ -103720,29 +125956,29 @@ impl ShowcaseRemoveMemberDetails { } } -impl<'de> ::serde::de::Deserialize<'de> for ShowcaseRemoveMemberDetails { +impl<'de> ::serde::de::Deserialize<'de> for ShowcaseViewDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = ShowcaseRemoveMemberDetails; + type Value = ShowcaseViewDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a ShowcaseRemoveMemberDetails struct") + f.write_str("a ShowcaseViewDetails struct") } fn visit_map>(self, map: V) -> Result { - ShowcaseRemoveMemberDetails::internal_deserialize(map) + ShowcaseViewDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("ShowcaseRemoveMemberDetails", SHOWCASE_REMOVE_MEMBER_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("ShowcaseViewDetails", SHOWCASE_VIEW_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for ShowcaseRemoveMemberDetails { +impl ::serde::ser::Serialize for ShowcaseViewDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("ShowcaseRemoveMemberDetails", 1)?; + let mut s = serializer.serialize_struct("ShowcaseViewDetails", 1)?; self.internal_serialize::(&mut s)?; s.end() } @@ -103750,30 +125986,30 @@ impl ::serde::ser::Serialize for ShowcaseRemoveMemberDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct ShowcaseRemoveMemberType { +pub struct ShowcaseViewType { pub description: String, } -impl ShowcaseRemoveMemberType { +impl ShowcaseViewType { pub fn new(description: String) -> Self { - ShowcaseRemoveMemberType { + ShowcaseViewType { description, } } } -const SHOWCASE_REMOVE_MEMBER_TYPE_FIELDS: &[&str] = &["description"]; -impl ShowcaseRemoveMemberType { +const SHOWCASE_VIEW_TYPE_FIELDS: &[&str] = &["description"]; +impl ShowcaseViewType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -103794,7 +126030,7 @@ impl ShowcaseRemoveMemberType { if optional && nothing { return Ok(None); } - let result = ShowcaseRemoveMemberType { + let result = ShowcaseViewType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -103810,72 +126046,159 @@ impl ShowcaseRemoveMemberType { } } -impl<'de> ::serde::de::Deserialize<'de> for ShowcaseRemoveMemberType { +impl<'de> ::serde::de::Deserialize<'de> for ShowcaseViewType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = ShowcaseRemoveMemberType; + type Value = ShowcaseViewType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a ShowcaseRemoveMemberType struct") + f.write_str("a ShowcaseViewType struct") } fn visit_map>(self, map: V) -> Result { - ShowcaseRemoveMemberType::internal_deserialize(map) + ShowcaseViewType::internal_deserialize(map) } } - deserializer.deserialize_struct("ShowcaseRemoveMemberType", SHOWCASE_REMOVE_MEMBER_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("ShowcaseViewType", SHOWCASE_VIEW_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for ShowcaseRemoveMemberType { +impl ::serde::ser::Serialize for ShowcaseViewType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("ShowcaseRemoveMemberType", 1)?; + let mut s = serializer.serialize_struct("ShowcaseViewType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Renamed showcase. +/// Policy for deciding whether team users can share Sign content externally +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // variants may be added in the future +pub enum SignExternalSharingPolicy { + Default, + Disabled, + Enabled, + /// Catch-all used for unrecognized values returned from the server. Encountering this value + /// typically indicates that this SDK version is out of date. + Other, +} + +impl<'de> ::serde::de::Deserialize<'de> for SignExternalSharingPolicy { + fn deserialize>(deserializer: D) -> Result { + // union deserializer + use serde::de::{self, MapAccess, Visitor}; + struct EnumVisitor; + impl<'de> Visitor<'de> for EnumVisitor { + type Value = SignExternalSharingPolicy; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a SignExternalSharingPolicy structure") + } + fn visit_map>(self, mut map: V) -> Result { + let tag: &str = match map.next_key()? { + Some(".tag") => map.next_value()?, + _ => return Err(de::Error::missing_field(".tag")) + }; + let value = match tag { + "default" => SignExternalSharingPolicy::Default, + "disabled" => SignExternalSharingPolicy::Disabled, + "enabled" => SignExternalSharingPolicy::Enabled, + _ => SignExternalSharingPolicy::Other, + }; + crate::eat_json_fields(&mut map)?; + Ok(value) + } + } + const VARIANTS: &[&str] = &["default", + "disabled", + "enabled", + "other"]; + deserializer.deserialize_struct("SignExternalSharingPolicy", VARIANTS, EnumVisitor) + } +} + +impl ::serde::ser::Serialize for SignExternalSharingPolicy { + fn serialize(&self, serializer: S) -> Result { + // union serializer + use serde::ser::SerializeStruct; + match self { + SignExternalSharingPolicy::Default => { + // unit + let mut s = serializer.serialize_struct("SignExternalSharingPolicy", 1)?; + s.serialize_field(".tag", "default")?; + s.end() + } + SignExternalSharingPolicy::Disabled => { + // unit + let mut s = serializer.serialize_struct("SignExternalSharingPolicy", 1)?; + s.serialize_field(".tag", "disabled")?; + s.end() + } + SignExternalSharingPolicy::Enabled => { + // unit + let mut s = serializer.serialize_struct("SignExternalSharingPolicy", 1)?; + s.serialize_field(".tag", "enabled")?; + s.end() + } + SignExternalSharingPolicy::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) + } + } +} + +/// Changed Signatures external sharing policy for team. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct ShowcaseRenamedDetails { - /// Event unique identifier. - pub event_uuid: String, +pub struct SignExternalSharingPolicyChangedDetails { + /// To. + pub new_value: SignExternalSharingPolicy, + /// From. + pub previous_value: SignExternalSharingPolicy, } -impl ShowcaseRenamedDetails { - pub fn new(event_uuid: String) -> Self { - ShowcaseRenamedDetails { - event_uuid, +impl SignExternalSharingPolicyChangedDetails { + pub fn new( + new_value: SignExternalSharingPolicy, + previous_value: SignExternalSharingPolicy, + ) -> Self { + SignExternalSharingPolicyChangedDetails { + new_value, + previous_value, } } } -const SHOWCASE_RENAMED_DETAILS_FIELDS: &[&str] = &["event_uuid"]; -impl ShowcaseRenamedDetails { +const SIGN_EXTERNAL_SHARING_POLICY_CHANGED_DETAILS_FIELDS: &[&str] = &["new_value", + "previous_value"]; +impl SignExternalSharingPolicyChangedDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_event_uuid = None; + ) -> Result, V::Error> { + let mut field_new_value = None; + let mut field_previous_value = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "event_uuid" => { - if field_event_uuid.is_some() { - return Err(::serde::de::Error::duplicate_field("event_uuid")); + "new_value" => { + if field_new_value.is_some() { + return Err(::serde::de::Error::duplicate_field("new_value")); } - field_event_uuid = Some(map.next_value()?); + field_new_value = Some(map.next_value()?); + } + "previous_value" => { + if field_previous_value.is_some() { + return Err(::serde::de::Error::duplicate_field("previous_value")); + } + field_previous_value = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -103886,8 +126209,9 @@ impl ShowcaseRenamedDetails { if optional && nothing { return Ok(None); } - let result = ShowcaseRenamedDetails { - event_uuid: field_event_uuid.ok_or_else(|| ::serde::de::Error::missing_field("event_uuid"))?, + let result = SignExternalSharingPolicyChangedDetails { + new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, + previous_value: field_previous_value.ok_or_else(|| ::serde::de::Error::missing_field("previous_value"))?, }; Ok(Some(result)) } @@ -103897,34 +126221,35 @@ impl ShowcaseRenamedDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("event_uuid", &self.event_uuid)?; + s.serialize_field("new_value", &self.new_value)?; + s.serialize_field("previous_value", &self.previous_value)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for ShowcaseRenamedDetails { +impl<'de> ::serde::de::Deserialize<'de> for SignExternalSharingPolicyChangedDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = ShowcaseRenamedDetails; + type Value = SignExternalSharingPolicyChangedDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a ShowcaseRenamedDetails struct") + f.write_str("a SignExternalSharingPolicyChangedDetails struct") } fn visit_map>(self, map: V) -> Result { - ShowcaseRenamedDetails::internal_deserialize(map) + SignExternalSharingPolicyChangedDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("ShowcaseRenamedDetails", SHOWCASE_RENAMED_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("SignExternalSharingPolicyChangedDetails", SIGN_EXTERNAL_SHARING_POLICY_CHANGED_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for ShowcaseRenamedDetails { +impl ::serde::ser::Serialize for SignExternalSharingPolicyChangedDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("ShowcaseRenamedDetails", 1)?; + let mut s = serializer.serialize_struct("SignExternalSharingPolicyChangedDetails", 2)?; self.internal_serialize::(&mut s)?; s.end() } @@ -103932,30 +126257,30 @@ impl ::serde::ser::Serialize for ShowcaseRenamedDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct ShowcaseRenamedType { +pub struct SignExternalSharingPolicyChangedType { pub description: String, } -impl ShowcaseRenamedType { +impl SignExternalSharingPolicyChangedType { pub fn new(description: String) -> Self { - ShowcaseRenamedType { + SignExternalSharingPolicyChangedType { description, } } } -const SHOWCASE_RENAMED_TYPE_FIELDS: &[&str] = &["description"]; -impl ShowcaseRenamedType { +const SIGN_EXTERNAL_SHARING_POLICY_CHANGED_TYPE_FIELDS: &[&str] = &["description"]; +impl SignExternalSharingPolicyChangedType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -103976,7 +126301,7 @@ impl ShowcaseRenamedType { if optional && nothing { return Ok(None); } - let result = ShowcaseRenamedType { + let result = SignExternalSharingPolicyChangedType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -103992,72 +126317,114 @@ impl ShowcaseRenamedType { } } -impl<'de> ::serde::de::Deserialize<'de> for ShowcaseRenamedType { +impl<'de> ::serde::de::Deserialize<'de> for SignExternalSharingPolicyChangedType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = ShowcaseRenamedType; + type Value = SignExternalSharingPolicyChangedType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a ShowcaseRenamedType struct") + f.write_str("a SignExternalSharingPolicyChangedType struct") } fn visit_map>(self, map: V) -> Result { - ShowcaseRenamedType::internal_deserialize(map) + SignExternalSharingPolicyChangedType::internal_deserialize(map) } } - deserializer.deserialize_struct("ShowcaseRenamedType", SHOWCASE_RENAMED_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("SignExternalSharingPolicyChangedType", SIGN_EXTERNAL_SHARING_POLICY_CHANGED_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for ShowcaseRenamedType { +impl ::serde::ser::Serialize for SignExternalSharingPolicyChangedType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("ShowcaseRenamedType", 1)?; + let mut s = serializer.serialize_struct("SignExternalSharingPolicyChangedType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Requested access to showcase. +/// Ended admin sign-in-as session. +#[derive(Debug, Clone, PartialEq, Eq, Default)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct SignInAsSessionEndDetails { +} + +const SIGN_IN_AS_SESSION_END_DETAILS_FIELDS: &[&str] = &[]; +impl SignInAsSessionEndDetails { + // no _opt deserializer + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + ) -> Result { + // ignore any fields found; none are presently recognized + crate::eat_json_fields(&mut map)?; + Ok(SignInAsSessionEndDetails {}) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for SignInAsSessionEndDetails { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = SignInAsSessionEndDetails; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a SignInAsSessionEndDetails struct") + } + fn visit_map>(self, map: V) -> Result { + SignInAsSessionEndDetails::internal_deserialize(map) + } + } + deserializer.deserialize_struct("SignInAsSessionEndDetails", SIGN_IN_AS_SESSION_END_DETAILS_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for SignInAsSessionEndDetails { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + serializer.serialize_struct("SignInAsSessionEndDetails", 0)?.end() + } +} + #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct ShowcaseRequestAccessDetails { - /// Event unique identifier. - pub event_uuid: String, +pub struct SignInAsSessionEndType { + pub description: String, } -impl ShowcaseRequestAccessDetails { - pub fn new(event_uuid: String) -> Self { - ShowcaseRequestAccessDetails { - event_uuid, +impl SignInAsSessionEndType { + pub fn new(description: String) -> Self { + SignInAsSessionEndType { + description, } } } -const SHOWCASE_REQUEST_ACCESS_DETAILS_FIELDS: &[&str] = &["event_uuid"]; -impl ShowcaseRequestAccessDetails { +const SIGN_IN_AS_SESSION_END_TYPE_FIELDS: &[&str] = &["description"]; +impl SignInAsSessionEndType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_event_uuid = None; + ) -> Result, V::Error> { + let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "event_uuid" => { - if field_event_uuid.is_some() { - return Err(::serde::de::Error::duplicate_field("event_uuid")); + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); } - field_event_uuid = Some(map.next_value()?); + field_description = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -104068,8 +126435,8 @@ impl ShowcaseRequestAccessDetails { if optional && nothing { return Ok(None); } - let result = ShowcaseRequestAccessDetails { - event_uuid: field_event_uuid.ok_or_else(|| ::serde::de::Error::missing_field("event_uuid"))?, + let result = SignInAsSessionEndType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) } @@ -104079,65 +126446,109 @@ impl ShowcaseRequestAccessDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("event_uuid", &self.event_uuid)?; + s.serialize_field("description", &self.description)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for ShowcaseRequestAccessDetails { +impl<'de> ::serde::de::Deserialize<'de> for SignInAsSessionEndType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = ShowcaseRequestAccessDetails; + type Value = SignInAsSessionEndType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a ShowcaseRequestAccessDetails struct") + f.write_str("a SignInAsSessionEndType struct") } fn visit_map>(self, map: V) -> Result { - ShowcaseRequestAccessDetails::internal_deserialize(map) + SignInAsSessionEndType::internal_deserialize(map) } } - deserializer.deserialize_struct("ShowcaseRequestAccessDetails", SHOWCASE_REQUEST_ACCESS_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("SignInAsSessionEndType", SIGN_IN_AS_SESSION_END_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for ShowcaseRequestAccessDetails { +impl ::serde::ser::Serialize for SignInAsSessionEndType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("ShowcaseRequestAccessDetails", 1)?; + let mut s = serializer.serialize_struct("SignInAsSessionEndType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } +/// Started admin sign-in-as session. +#[derive(Debug, Clone, PartialEq, Eq, Default)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct SignInAsSessionStartDetails { +} + +const SIGN_IN_AS_SESSION_START_DETAILS_FIELDS: &[&str] = &[]; +impl SignInAsSessionStartDetails { + // no _opt deserializer + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + ) -> Result { + // ignore any fields found; none are presently recognized + crate::eat_json_fields(&mut map)?; + Ok(SignInAsSessionStartDetails {}) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for SignInAsSessionStartDetails { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = SignInAsSessionStartDetails; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a SignInAsSessionStartDetails struct") + } + fn visit_map>(self, map: V) -> Result { + SignInAsSessionStartDetails::internal_deserialize(map) + } + } + deserializer.deserialize_struct("SignInAsSessionStartDetails", SIGN_IN_AS_SESSION_START_DETAILS_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for SignInAsSessionStartDetails { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + serializer.serialize_struct("SignInAsSessionStartDetails", 0)?.end() + } +} + #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct ShowcaseRequestAccessType { +pub struct SignInAsSessionStartType { pub description: String, } -impl ShowcaseRequestAccessType { +impl SignInAsSessionStartType { pub fn new(description: String) -> Self { - ShowcaseRequestAccessType { + SignInAsSessionStartType { description, } } } -const SHOWCASE_REQUEST_ACCESS_TYPE_FIELDS: &[&str] = &["description"]; -impl ShowcaseRequestAccessType { +const SIGN_IN_AS_SESSION_START_TYPE_FIELDS: &[&str] = &["description"]; +impl SignInAsSessionStartType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -104158,7 +126569,7 @@ impl ShowcaseRequestAccessType { if optional && nothing { return Ok(None); } - let result = ShowcaseRequestAccessType { + let result = SignInAsSessionStartType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -104174,88 +126585,83 @@ impl ShowcaseRequestAccessType { } } -impl<'de> ::serde::de::Deserialize<'de> for ShowcaseRequestAccessType { +impl<'de> ::serde::de::Deserialize<'de> for SignInAsSessionStartType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = ShowcaseRequestAccessType; + type Value = SignInAsSessionStartType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a ShowcaseRequestAccessType struct") + f.write_str("a SignInAsSessionStartType struct") } fn visit_map>(self, map: V) -> Result { - ShowcaseRequestAccessType::internal_deserialize(map) + SignInAsSessionStartType::internal_deserialize(map) } } - deserializer.deserialize_struct("ShowcaseRequestAccessType", SHOWCASE_REQUEST_ACCESS_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("SignInAsSessionStartType", SIGN_IN_AS_SESSION_START_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for ShowcaseRequestAccessType { +impl ::serde::ser::Serialize for SignInAsSessionStartType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("ShowcaseRequestAccessType", 1)?; + let mut s = serializer.serialize_struct("SignInAsSessionStartType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Resolved showcase comment. +/// Canceled signature request. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct ShowcaseResolveCommentDetails { - /// Event unique identifier. - pub event_uuid: String, - /// Comment text. - pub comment_text: Option, +pub struct SignSignatureRequestCanceledDetails { + /// The recipient of the signature request. + pub recipient: String, + /// The name of the related file. + pub file_name: String, } -impl ShowcaseResolveCommentDetails { - pub fn new(event_uuid: String) -> Self { - ShowcaseResolveCommentDetails { - event_uuid, - comment_text: None, +impl SignSignatureRequestCanceledDetails { + pub fn new(recipient: String, file_name: String) -> Self { + SignSignatureRequestCanceledDetails { + recipient, + file_name, } } - - pub fn with_comment_text(mut self, value: String) -> Self { - self.comment_text = Some(value); - self - } } -const SHOWCASE_RESOLVE_COMMENT_DETAILS_FIELDS: &[&str] = &["event_uuid", - "comment_text"]; -impl ShowcaseResolveCommentDetails { +const SIGN_SIGNATURE_REQUEST_CANCELED_DETAILS_FIELDS: &[&str] = &["recipient", + "file_name"]; +impl SignSignatureRequestCanceledDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_event_uuid = None; - let mut field_comment_text = None; + ) -> Result, V::Error> { + let mut field_recipient = None; + let mut field_file_name = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "event_uuid" => { - if field_event_uuid.is_some() { - return Err(::serde::de::Error::duplicate_field("event_uuid")); + "recipient" => { + if field_recipient.is_some() { + return Err(::serde::de::Error::duplicate_field("recipient")); } - field_event_uuid = Some(map.next_value()?); + field_recipient = Some(map.next_value()?); } - "comment_text" => { - if field_comment_text.is_some() { - return Err(::serde::de::Error::duplicate_field("comment_text")); + "file_name" => { + if field_file_name.is_some() { + return Err(::serde::de::Error::duplicate_field("file_name")); } - field_comment_text = Some(map.next_value()?); + field_file_name = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -104266,9 +126672,9 @@ impl ShowcaseResolveCommentDetails { if optional && nothing { return Ok(None); } - let result = ShowcaseResolveCommentDetails { - event_uuid: field_event_uuid.ok_or_else(|| ::serde::de::Error::missing_field("event_uuid"))?, - comment_text: field_comment_text.and_then(Option::flatten), + let result = SignSignatureRequestCanceledDetails { + recipient: field_recipient.ok_or_else(|| ::serde::de::Error::missing_field("recipient"))?, + file_name: field_file_name.ok_or_else(|| ::serde::de::Error::missing_field("file_name"))?, }; Ok(Some(result)) } @@ -104278,37 +126684,35 @@ impl ShowcaseResolveCommentDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("event_uuid", &self.event_uuid)?; - if let Some(val) = &self.comment_text { - s.serialize_field("comment_text", val)?; - } + s.serialize_field("recipient", &self.recipient)?; + s.serialize_field("file_name", &self.file_name)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for ShowcaseResolveCommentDetails { +impl<'de> ::serde::de::Deserialize<'de> for SignSignatureRequestCanceledDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = ShowcaseResolveCommentDetails; + type Value = SignSignatureRequestCanceledDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a ShowcaseResolveCommentDetails struct") + f.write_str("a SignSignatureRequestCanceledDetails struct") } fn visit_map>(self, map: V) -> Result { - ShowcaseResolveCommentDetails::internal_deserialize(map) + SignSignatureRequestCanceledDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("ShowcaseResolveCommentDetails", SHOWCASE_RESOLVE_COMMENT_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("SignSignatureRequestCanceledDetails", SIGN_SIGNATURE_REQUEST_CANCELED_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for ShowcaseResolveCommentDetails { +impl ::serde::ser::Serialize for SignSignatureRequestCanceledDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("ShowcaseResolveCommentDetails", 2)?; + let mut s = serializer.serialize_struct("SignSignatureRequestCanceledDetails", 2)?; self.internal_serialize::(&mut s)?; s.end() } @@ -104316,30 +126720,30 @@ impl ::serde::ser::Serialize for ShowcaseResolveCommentDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct ShowcaseResolveCommentType { +pub struct SignSignatureRequestCanceledType { pub description: String, } -impl ShowcaseResolveCommentType { +impl SignSignatureRequestCanceledType { pub fn new(description: String) -> Self { - ShowcaseResolveCommentType { + SignSignatureRequestCanceledType { description, } } } -const SHOWCASE_RESOLVE_COMMENT_TYPE_FIELDS: &[&str] = &["description"]; -impl ShowcaseResolveCommentType { +const SIGN_SIGNATURE_REQUEST_CANCELED_TYPE_FIELDS: &[&str] = &["description"]; +impl SignSignatureRequestCanceledType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -104360,7 +126764,7 @@ impl ShowcaseResolveCommentType { if optional && nothing { return Ok(None); } - let result = ShowcaseResolveCommentType { + let result = SignSignatureRequestCanceledType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -104376,72 +126780,83 @@ impl ShowcaseResolveCommentType { } } -impl<'de> ::serde::de::Deserialize<'de> for ShowcaseResolveCommentType { +impl<'de> ::serde::de::Deserialize<'de> for SignSignatureRequestCanceledType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = ShowcaseResolveCommentType; + type Value = SignSignatureRequestCanceledType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a ShowcaseResolveCommentType struct") + f.write_str("a SignSignatureRequestCanceledType struct") } fn visit_map>(self, map: V) -> Result { - ShowcaseResolveCommentType::internal_deserialize(map) + SignSignatureRequestCanceledType::internal_deserialize(map) } } - deserializer.deserialize_struct("ShowcaseResolveCommentType", SHOWCASE_RESOLVE_COMMENT_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("SignSignatureRequestCanceledType", SIGN_SIGNATURE_REQUEST_CANCELED_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for ShowcaseResolveCommentType { +impl ::serde::ser::Serialize for SignSignatureRequestCanceledType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("ShowcaseResolveCommentType", 1)?; + let mut s = serializer.serialize_struct("SignSignatureRequestCanceledType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Unarchived showcase. +/// Completed signature request. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct ShowcaseRestoredDetails { - /// Event unique identifier. - pub event_uuid: String, +pub struct SignSignatureRequestCompletedDetails { + /// The recipient of the signature request. + pub recipient: String, + /// The name of the related file. + pub file_name: String, } -impl ShowcaseRestoredDetails { - pub fn new(event_uuid: String) -> Self { - ShowcaseRestoredDetails { - event_uuid, +impl SignSignatureRequestCompletedDetails { + pub fn new(recipient: String, file_name: String) -> Self { + SignSignatureRequestCompletedDetails { + recipient, + file_name, } } } -const SHOWCASE_RESTORED_DETAILS_FIELDS: &[&str] = &["event_uuid"]; -impl ShowcaseRestoredDetails { +const SIGN_SIGNATURE_REQUEST_COMPLETED_DETAILS_FIELDS: &[&str] = &["recipient", + "file_name"]; +impl SignSignatureRequestCompletedDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_event_uuid = None; + ) -> Result, V::Error> { + let mut field_recipient = None; + let mut field_file_name = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { - nothing = false; - match key { - "event_uuid" => { - if field_event_uuid.is_some() { - return Err(::serde::de::Error::duplicate_field("event_uuid")); + nothing = false; + match key { + "recipient" => { + if field_recipient.is_some() { + return Err(::serde::de::Error::duplicate_field("recipient")); } - field_event_uuid = Some(map.next_value()?); + field_recipient = Some(map.next_value()?); + } + "file_name" => { + if field_file_name.is_some() { + return Err(::serde::de::Error::duplicate_field("file_name")); + } + field_file_name = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -104452,8 +126867,9 @@ impl ShowcaseRestoredDetails { if optional && nothing { return Ok(None); } - let result = ShowcaseRestoredDetails { - event_uuid: field_event_uuid.ok_or_else(|| ::serde::de::Error::missing_field("event_uuid"))?, + let result = SignSignatureRequestCompletedDetails { + recipient: field_recipient.ok_or_else(|| ::serde::de::Error::missing_field("recipient"))?, + file_name: field_file_name.ok_or_else(|| ::serde::de::Error::missing_field("file_name"))?, }; Ok(Some(result)) } @@ -104463,34 +126879,35 @@ impl ShowcaseRestoredDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("event_uuid", &self.event_uuid)?; + s.serialize_field("recipient", &self.recipient)?; + s.serialize_field("file_name", &self.file_name)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for ShowcaseRestoredDetails { +impl<'de> ::serde::de::Deserialize<'de> for SignSignatureRequestCompletedDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = ShowcaseRestoredDetails; + type Value = SignSignatureRequestCompletedDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a ShowcaseRestoredDetails struct") + f.write_str("a SignSignatureRequestCompletedDetails struct") } fn visit_map>(self, map: V) -> Result { - ShowcaseRestoredDetails::internal_deserialize(map) + SignSignatureRequestCompletedDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("ShowcaseRestoredDetails", SHOWCASE_RESTORED_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("SignSignatureRequestCompletedDetails", SIGN_SIGNATURE_REQUEST_COMPLETED_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for ShowcaseRestoredDetails { +impl ::serde::ser::Serialize for SignSignatureRequestCompletedDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("ShowcaseRestoredDetails", 1)?; + let mut s = serializer.serialize_struct("SignSignatureRequestCompletedDetails", 2)?; self.internal_serialize::(&mut s)?; s.end() } @@ -104498,30 +126915,30 @@ impl ::serde::ser::Serialize for ShowcaseRestoredDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct ShowcaseRestoredType { +pub struct SignSignatureRequestCompletedType { pub description: String, } -impl ShowcaseRestoredType { +impl SignSignatureRequestCompletedType { pub fn new(description: String) -> Self { - ShowcaseRestoredType { + SignSignatureRequestCompletedType { description, } } } -const SHOWCASE_RESTORED_TYPE_FIELDS: &[&str] = &["description"]; -impl ShowcaseRestoredType { +const SIGN_SIGNATURE_REQUEST_COMPLETED_TYPE_FIELDS: &[&str] = &["description"]; +impl SignSignatureRequestCompletedType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -104542,7 +126959,7 @@ impl ShowcaseRestoredType { if optional && nothing { return Ok(None); } - let result = ShowcaseRestoredType { + let result = SignSignatureRequestCompletedType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -104558,72 +126975,83 @@ impl ShowcaseRestoredType { } } -impl<'de> ::serde::de::Deserialize<'de> for ShowcaseRestoredType { +impl<'de> ::serde::de::Deserialize<'de> for SignSignatureRequestCompletedType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = ShowcaseRestoredType; + type Value = SignSignatureRequestCompletedType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a ShowcaseRestoredType struct") + f.write_str("a SignSignatureRequestCompletedType struct") } fn visit_map>(self, map: V) -> Result { - ShowcaseRestoredType::internal_deserialize(map) + SignSignatureRequestCompletedType::internal_deserialize(map) } } - deserializer.deserialize_struct("ShowcaseRestoredType", SHOWCASE_RESTORED_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("SignSignatureRequestCompletedType", SIGN_SIGNATURE_REQUEST_COMPLETED_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for ShowcaseRestoredType { +impl ::serde::ser::Serialize for SignSignatureRequestCompletedType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("ShowcaseRestoredType", 1)?; + let mut s = serializer.serialize_struct("SignSignatureRequestCompletedType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Deleted showcase (old version). +/// Declined signature request. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct ShowcaseTrashedDeprecatedDetails { - /// Event unique identifier. - pub event_uuid: String, +pub struct SignSignatureRequestDeclinedDetails { + /// The recipient of the signature request. + pub recipient: String, + /// The name of the related file. + pub file_name: String, } -impl ShowcaseTrashedDeprecatedDetails { - pub fn new(event_uuid: String) -> Self { - ShowcaseTrashedDeprecatedDetails { - event_uuid, +impl SignSignatureRequestDeclinedDetails { + pub fn new(recipient: String, file_name: String) -> Self { + SignSignatureRequestDeclinedDetails { + recipient, + file_name, } } } -const SHOWCASE_TRASHED_DEPRECATED_DETAILS_FIELDS: &[&str] = &["event_uuid"]; -impl ShowcaseTrashedDeprecatedDetails { +const SIGN_SIGNATURE_REQUEST_DECLINED_DETAILS_FIELDS: &[&str] = &["recipient", + "file_name"]; +impl SignSignatureRequestDeclinedDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_event_uuid = None; + ) -> Result, V::Error> { + let mut field_recipient = None; + let mut field_file_name = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "event_uuid" => { - if field_event_uuid.is_some() { - return Err(::serde::de::Error::duplicate_field("event_uuid")); + "recipient" => { + if field_recipient.is_some() { + return Err(::serde::de::Error::duplicate_field("recipient")); } - field_event_uuid = Some(map.next_value()?); + field_recipient = Some(map.next_value()?); + } + "file_name" => { + if field_file_name.is_some() { + return Err(::serde::de::Error::duplicate_field("file_name")); + } + field_file_name = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -104634,8 +127062,9 @@ impl ShowcaseTrashedDeprecatedDetails { if optional && nothing { return Ok(None); } - let result = ShowcaseTrashedDeprecatedDetails { - event_uuid: field_event_uuid.ok_or_else(|| ::serde::de::Error::missing_field("event_uuid"))?, + let result = SignSignatureRequestDeclinedDetails { + recipient: field_recipient.ok_or_else(|| ::serde::de::Error::missing_field("recipient"))?, + file_name: field_file_name.ok_or_else(|| ::serde::de::Error::missing_field("file_name"))?, }; Ok(Some(result)) } @@ -104645,34 +127074,35 @@ impl ShowcaseTrashedDeprecatedDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("event_uuid", &self.event_uuid)?; + s.serialize_field("recipient", &self.recipient)?; + s.serialize_field("file_name", &self.file_name)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for ShowcaseTrashedDeprecatedDetails { +impl<'de> ::serde::de::Deserialize<'de> for SignSignatureRequestDeclinedDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = ShowcaseTrashedDeprecatedDetails; + type Value = SignSignatureRequestDeclinedDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a ShowcaseTrashedDeprecatedDetails struct") + f.write_str("a SignSignatureRequestDeclinedDetails struct") } fn visit_map>(self, map: V) -> Result { - ShowcaseTrashedDeprecatedDetails::internal_deserialize(map) + SignSignatureRequestDeclinedDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("ShowcaseTrashedDeprecatedDetails", SHOWCASE_TRASHED_DEPRECATED_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("SignSignatureRequestDeclinedDetails", SIGN_SIGNATURE_REQUEST_DECLINED_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for ShowcaseTrashedDeprecatedDetails { +impl ::serde::ser::Serialize for SignSignatureRequestDeclinedDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("ShowcaseTrashedDeprecatedDetails", 1)?; + let mut s = serializer.serialize_struct("SignSignatureRequestDeclinedDetails", 2)?; self.internal_serialize::(&mut s)?; s.end() } @@ -104680,30 +127110,30 @@ impl ::serde::ser::Serialize for ShowcaseTrashedDeprecatedDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct ShowcaseTrashedDeprecatedType { +pub struct SignSignatureRequestDeclinedType { pub description: String, } -impl ShowcaseTrashedDeprecatedType { +impl SignSignatureRequestDeclinedType { pub fn new(description: String) -> Self { - ShowcaseTrashedDeprecatedType { + SignSignatureRequestDeclinedType { description, } } } -const SHOWCASE_TRASHED_DEPRECATED_TYPE_FIELDS: &[&str] = &["description"]; -impl ShowcaseTrashedDeprecatedType { +const SIGN_SIGNATURE_REQUEST_DECLINED_TYPE_FIELDS: &[&str] = &["description"]; +impl SignSignatureRequestDeclinedType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -104724,7 +127154,7 @@ impl ShowcaseTrashedDeprecatedType { if optional && nothing { return Ok(None); } - let result = ShowcaseTrashedDeprecatedType { + let result = SignSignatureRequestDeclinedType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -104740,72 +127170,83 @@ impl ShowcaseTrashedDeprecatedType { } } -impl<'de> ::serde::de::Deserialize<'de> for ShowcaseTrashedDeprecatedType { +impl<'de> ::serde::de::Deserialize<'de> for SignSignatureRequestDeclinedType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = ShowcaseTrashedDeprecatedType; + type Value = SignSignatureRequestDeclinedType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a ShowcaseTrashedDeprecatedType struct") + f.write_str("a SignSignatureRequestDeclinedType struct") } fn visit_map>(self, map: V) -> Result { - ShowcaseTrashedDeprecatedType::internal_deserialize(map) + SignSignatureRequestDeclinedType::internal_deserialize(map) } } - deserializer.deserialize_struct("ShowcaseTrashedDeprecatedType", SHOWCASE_TRASHED_DEPRECATED_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("SignSignatureRequestDeclinedType", SIGN_SIGNATURE_REQUEST_DECLINED_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for ShowcaseTrashedDeprecatedType { +impl ::serde::ser::Serialize for SignSignatureRequestDeclinedType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("ShowcaseTrashedDeprecatedType", 1)?; + let mut s = serializer.serialize_struct("SignSignatureRequestDeclinedType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Deleted showcase. +/// Opened signature request. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct ShowcaseTrashedDetails { - /// Event unique identifier. - pub event_uuid: String, +pub struct SignSignatureRequestOpenedDetails { + /// The recipient of the signature request. + pub recipient: String, + /// The name of the related file. + pub file_name: String, } -impl ShowcaseTrashedDetails { - pub fn new(event_uuid: String) -> Self { - ShowcaseTrashedDetails { - event_uuid, +impl SignSignatureRequestOpenedDetails { + pub fn new(recipient: String, file_name: String) -> Self { + SignSignatureRequestOpenedDetails { + recipient, + file_name, } } } -const SHOWCASE_TRASHED_DETAILS_FIELDS: &[&str] = &["event_uuid"]; -impl ShowcaseTrashedDetails { +const SIGN_SIGNATURE_REQUEST_OPENED_DETAILS_FIELDS: &[&str] = &["recipient", + "file_name"]; +impl SignSignatureRequestOpenedDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_event_uuid = None; + ) -> Result, V::Error> { + let mut field_recipient = None; + let mut field_file_name = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "event_uuid" => { - if field_event_uuid.is_some() { - return Err(::serde::de::Error::duplicate_field("event_uuid")); + "recipient" => { + if field_recipient.is_some() { + return Err(::serde::de::Error::duplicate_field("recipient")); } - field_event_uuid = Some(map.next_value()?); + field_recipient = Some(map.next_value()?); + } + "file_name" => { + if field_file_name.is_some() { + return Err(::serde::de::Error::duplicate_field("file_name")); + } + field_file_name = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -104816,8 +127257,9 @@ impl ShowcaseTrashedDetails { if optional && nothing { return Ok(None); } - let result = ShowcaseTrashedDetails { - event_uuid: field_event_uuid.ok_or_else(|| ::serde::de::Error::missing_field("event_uuid"))?, + let result = SignSignatureRequestOpenedDetails { + recipient: field_recipient.ok_or_else(|| ::serde::de::Error::missing_field("recipient"))?, + file_name: field_file_name.ok_or_else(|| ::serde::de::Error::missing_field("file_name"))?, }; Ok(Some(result)) } @@ -104827,34 +127269,35 @@ impl ShowcaseTrashedDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("event_uuid", &self.event_uuid)?; + s.serialize_field("recipient", &self.recipient)?; + s.serialize_field("file_name", &self.file_name)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for ShowcaseTrashedDetails { +impl<'de> ::serde::de::Deserialize<'de> for SignSignatureRequestOpenedDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = ShowcaseTrashedDetails; + type Value = SignSignatureRequestOpenedDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a ShowcaseTrashedDetails struct") + f.write_str("a SignSignatureRequestOpenedDetails struct") } fn visit_map>(self, map: V) -> Result { - ShowcaseTrashedDetails::internal_deserialize(map) + SignSignatureRequestOpenedDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("ShowcaseTrashedDetails", SHOWCASE_TRASHED_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("SignSignatureRequestOpenedDetails", SIGN_SIGNATURE_REQUEST_OPENED_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for ShowcaseTrashedDetails { +impl ::serde::ser::Serialize for SignSignatureRequestOpenedDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("ShowcaseTrashedDetails", 1)?; + let mut s = serializer.serialize_struct("SignSignatureRequestOpenedDetails", 2)?; self.internal_serialize::(&mut s)?; s.end() } @@ -104862,30 +127305,30 @@ impl ::serde::ser::Serialize for ShowcaseTrashedDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct ShowcaseTrashedType { +pub struct SignSignatureRequestOpenedType { pub description: String, } -impl ShowcaseTrashedType { +impl SignSignatureRequestOpenedType { pub fn new(description: String) -> Self { - ShowcaseTrashedType { + SignSignatureRequestOpenedType { description, } } } -const SHOWCASE_TRASHED_TYPE_FIELDS: &[&str] = &["description"]; -impl ShowcaseTrashedType { +const SIGN_SIGNATURE_REQUEST_OPENED_TYPE_FIELDS: &[&str] = &["description"]; +impl SignSignatureRequestOpenedType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -104906,7 +127349,7 @@ impl ShowcaseTrashedType { if optional && nothing { return Ok(None); } - let result = ShowcaseTrashedType { + let result = SignSignatureRequestOpenedType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -104922,88 +127365,83 @@ impl ShowcaseTrashedType { } } -impl<'de> ::serde::de::Deserialize<'de> for ShowcaseTrashedType { +impl<'de> ::serde::de::Deserialize<'de> for SignSignatureRequestOpenedType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = ShowcaseTrashedType; + type Value = SignSignatureRequestOpenedType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a ShowcaseTrashedType struct") + f.write_str("a SignSignatureRequestOpenedType struct") } fn visit_map>(self, map: V) -> Result { - ShowcaseTrashedType::internal_deserialize(map) + SignSignatureRequestOpenedType::internal_deserialize(map) } } - deserializer.deserialize_struct("ShowcaseTrashedType", SHOWCASE_TRASHED_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("SignSignatureRequestOpenedType", SIGN_SIGNATURE_REQUEST_OPENED_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for ShowcaseTrashedType { +impl ::serde::ser::Serialize for SignSignatureRequestOpenedType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("ShowcaseTrashedType", 1)?; + let mut s = serializer.serialize_struct("SignSignatureRequestOpenedType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Unresolved showcase comment. +/// Sent signature request reminder. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct ShowcaseUnresolveCommentDetails { - /// Event unique identifier. - pub event_uuid: String, - /// Comment text. - pub comment_text: Option, +pub struct SignSignatureRequestReminderSentDetails { + /// The recipient of the signature request. + pub recipient: String, + /// The name of the related file. + pub file_name: String, } -impl ShowcaseUnresolveCommentDetails { - pub fn new(event_uuid: String) -> Self { - ShowcaseUnresolveCommentDetails { - event_uuid, - comment_text: None, +impl SignSignatureRequestReminderSentDetails { + pub fn new(recipient: String, file_name: String) -> Self { + SignSignatureRequestReminderSentDetails { + recipient, + file_name, } } - - pub fn with_comment_text(mut self, value: String) -> Self { - self.comment_text = Some(value); - self - } } -const SHOWCASE_UNRESOLVE_COMMENT_DETAILS_FIELDS: &[&str] = &["event_uuid", - "comment_text"]; -impl ShowcaseUnresolveCommentDetails { +const SIGN_SIGNATURE_REQUEST_REMINDER_SENT_DETAILS_FIELDS: &[&str] = &["recipient", + "file_name"]; +impl SignSignatureRequestReminderSentDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_event_uuid = None; - let mut field_comment_text = None; + ) -> Result, V::Error> { + let mut field_recipient = None; + let mut field_file_name = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "event_uuid" => { - if field_event_uuid.is_some() { - return Err(::serde::de::Error::duplicate_field("event_uuid")); + "recipient" => { + if field_recipient.is_some() { + return Err(::serde::de::Error::duplicate_field("recipient")); } - field_event_uuid = Some(map.next_value()?); + field_recipient = Some(map.next_value()?); } - "comment_text" => { - if field_comment_text.is_some() { - return Err(::serde::de::Error::duplicate_field("comment_text")); + "file_name" => { + if field_file_name.is_some() { + return Err(::serde::de::Error::duplicate_field("file_name")); } - field_comment_text = Some(map.next_value()?); + field_file_name = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -105014,9 +127452,9 @@ impl ShowcaseUnresolveCommentDetails { if optional && nothing { return Ok(None); } - let result = ShowcaseUnresolveCommentDetails { - event_uuid: field_event_uuid.ok_or_else(|| ::serde::de::Error::missing_field("event_uuid"))?, - comment_text: field_comment_text.and_then(Option::flatten), + let result = SignSignatureRequestReminderSentDetails { + recipient: field_recipient.ok_or_else(|| ::serde::de::Error::missing_field("recipient"))?, + file_name: field_file_name.ok_or_else(|| ::serde::de::Error::missing_field("file_name"))?, }; Ok(Some(result)) } @@ -105026,37 +127464,35 @@ impl ShowcaseUnresolveCommentDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("event_uuid", &self.event_uuid)?; - if let Some(val) = &self.comment_text { - s.serialize_field("comment_text", val)?; - } + s.serialize_field("recipient", &self.recipient)?; + s.serialize_field("file_name", &self.file_name)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for ShowcaseUnresolveCommentDetails { +impl<'de> ::serde::de::Deserialize<'de> for SignSignatureRequestReminderSentDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = ShowcaseUnresolveCommentDetails; + type Value = SignSignatureRequestReminderSentDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a ShowcaseUnresolveCommentDetails struct") + f.write_str("a SignSignatureRequestReminderSentDetails struct") } fn visit_map>(self, map: V) -> Result { - ShowcaseUnresolveCommentDetails::internal_deserialize(map) + SignSignatureRequestReminderSentDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("ShowcaseUnresolveCommentDetails", SHOWCASE_UNRESOLVE_COMMENT_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("SignSignatureRequestReminderSentDetails", SIGN_SIGNATURE_REQUEST_REMINDER_SENT_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for ShowcaseUnresolveCommentDetails { +impl ::serde::ser::Serialize for SignSignatureRequestReminderSentDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("ShowcaseUnresolveCommentDetails", 2)?; + let mut s = serializer.serialize_struct("SignSignatureRequestReminderSentDetails", 2)?; self.internal_serialize::(&mut s)?; s.end() } @@ -105064,30 +127500,30 @@ impl ::serde::ser::Serialize for ShowcaseUnresolveCommentDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct ShowcaseUnresolveCommentType { +pub struct SignSignatureRequestReminderSentType { pub description: String, } -impl ShowcaseUnresolveCommentType { +impl SignSignatureRequestReminderSentType { pub fn new(description: String) -> Self { - ShowcaseUnresolveCommentType { + SignSignatureRequestReminderSentType { description, } } } -const SHOWCASE_UNRESOLVE_COMMENT_TYPE_FIELDS: &[&str] = &["description"]; -impl ShowcaseUnresolveCommentType { +const SIGN_SIGNATURE_REQUEST_REMINDER_SENT_TYPE_FIELDS: &[&str] = &["description"]; +impl SignSignatureRequestReminderSentType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -105108,7 +127544,7 @@ impl ShowcaseUnresolveCommentType { if optional && nothing { return Ok(None); } - let result = ShowcaseUnresolveCommentType { + let result = SignSignatureRequestReminderSentType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -105124,72 +127560,83 @@ impl ShowcaseUnresolveCommentType { } } -impl<'de> ::serde::de::Deserialize<'de> for ShowcaseUnresolveCommentType { +impl<'de> ::serde::de::Deserialize<'de> for SignSignatureRequestReminderSentType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = ShowcaseUnresolveCommentType; + type Value = SignSignatureRequestReminderSentType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a ShowcaseUnresolveCommentType struct") + f.write_str("a SignSignatureRequestReminderSentType struct") } fn visit_map>(self, map: V) -> Result { - ShowcaseUnresolveCommentType::internal_deserialize(map) + SignSignatureRequestReminderSentType::internal_deserialize(map) } } - deserializer.deserialize_struct("ShowcaseUnresolveCommentType", SHOWCASE_UNRESOLVE_COMMENT_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("SignSignatureRequestReminderSentType", SIGN_SIGNATURE_REQUEST_REMINDER_SENT_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for ShowcaseUnresolveCommentType { +impl ::serde::ser::Serialize for SignSignatureRequestReminderSentType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("ShowcaseUnresolveCommentType", 1)?; + let mut s = serializer.serialize_struct("SignSignatureRequestReminderSentType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Restored showcase (old version). +/// Sent signature request. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct ShowcaseUntrashedDeprecatedDetails { - /// Event unique identifier. - pub event_uuid: String, +pub struct SignSignatureRequestSentDetails { + /// The recipient of the signature request. + pub recipient: String, + /// The name of the related file. + pub file_name: String, } -impl ShowcaseUntrashedDeprecatedDetails { - pub fn new(event_uuid: String) -> Self { - ShowcaseUntrashedDeprecatedDetails { - event_uuid, +impl SignSignatureRequestSentDetails { + pub fn new(recipient: String, file_name: String) -> Self { + SignSignatureRequestSentDetails { + recipient, + file_name, } } } -const SHOWCASE_UNTRASHED_DEPRECATED_DETAILS_FIELDS: &[&str] = &["event_uuid"]; -impl ShowcaseUntrashedDeprecatedDetails { +const SIGN_SIGNATURE_REQUEST_SENT_DETAILS_FIELDS: &[&str] = &["recipient", + "file_name"]; +impl SignSignatureRequestSentDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_event_uuid = None; + ) -> Result, V::Error> { + let mut field_recipient = None; + let mut field_file_name = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "event_uuid" => { - if field_event_uuid.is_some() { - return Err(::serde::de::Error::duplicate_field("event_uuid")); + "recipient" => { + if field_recipient.is_some() { + return Err(::serde::de::Error::duplicate_field("recipient")); } - field_event_uuid = Some(map.next_value()?); + field_recipient = Some(map.next_value()?); + } + "file_name" => { + if field_file_name.is_some() { + return Err(::serde::de::Error::duplicate_field("file_name")); + } + field_file_name = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -105200,8 +127647,9 @@ impl ShowcaseUntrashedDeprecatedDetails { if optional && nothing { return Ok(None); } - let result = ShowcaseUntrashedDeprecatedDetails { - event_uuid: field_event_uuid.ok_or_else(|| ::serde::de::Error::missing_field("event_uuid"))?, + let result = SignSignatureRequestSentDetails { + recipient: field_recipient.ok_or_else(|| ::serde::de::Error::missing_field("recipient"))?, + file_name: field_file_name.ok_or_else(|| ::serde::de::Error::missing_field("file_name"))?, }; Ok(Some(result)) } @@ -105211,34 +127659,35 @@ impl ShowcaseUntrashedDeprecatedDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("event_uuid", &self.event_uuid)?; + s.serialize_field("recipient", &self.recipient)?; + s.serialize_field("file_name", &self.file_name)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for ShowcaseUntrashedDeprecatedDetails { +impl<'de> ::serde::de::Deserialize<'de> for SignSignatureRequestSentDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = ShowcaseUntrashedDeprecatedDetails; + type Value = SignSignatureRequestSentDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a ShowcaseUntrashedDeprecatedDetails struct") + f.write_str("a SignSignatureRequestSentDetails struct") } fn visit_map>(self, map: V) -> Result { - ShowcaseUntrashedDeprecatedDetails::internal_deserialize(map) + SignSignatureRequestSentDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("ShowcaseUntrashedDeprecatedDetails", SHOWCASE_UNTRASHED_DEPRECATED_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("SignSignatureRequestSentDetails", SIGN_SIGNATURE_REQUEST_SENT_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for ShowcaseUntrashedDeprecatedDetails { +impl ::serde::ser::Serialize for SignSignatureRequestSentDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("ShowcaseUntrashedDeprecatedDetails", 1)?; + let mut s = serializer.serialize_struct("SignSignatureRequestSentDetails", 2)?; self.internal_serialize::(&mut s)?; s.end() } @@ -105246,30 +127695,30 @@ impl ::serde::ser::Serialize for ShowcaseUntrashedDeprecatedDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct ShowcaseUntrashedDeprecatedType { +pub struct SignSignatureRequestSentType { pub description: String, } -impl ShowcaseUntrashedDeprecatedType { +impl SignSignatureRequestSentType { pub fn new(description: String) -> Self { - ShowcaseUntrashedDeprecatedType { + SignSignatureRequestSentType { description, } } } -const SHOWCASE_UNTRASHED_DEPRECATED_TYPE_FIELDS: &[&str] = &["description"]; -impl ShowcaseUntrashedDeprecatedType { +const SIGN_SIGNATURE_REQUEST_SENT_TYPE_FIELDS: &[&str] = &["description"]; +impl SignSignatureRequestSentType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -105290,7 +127739,7 @@ impl ShowcaseUntrashedDeprecatedType { if optional && nothing { return Ok(None); } - let result = ShowcaseUntrashedDeprecatedType { + let result = SignSignatureRequestSentType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -105306,72 +127755,83 @@ impl ShowcaseUntrashedDeprecatedType { } } -impl<'de> ::serde::de::Deserialize<'de> for ShowcaseUntrashedDeprecatedType { +impl<'de> ::serde::de::Deserialize<'de> for SignSignatureRequestSentType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = ShowcaseUntrashedDeprecatedType; + type Value = SignSignatureRequestSentType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a ShowcaseUntrashedDeprecatedType struct") + f.write_str("a SignSignatureRequestSentType struct") } fn visit_map>(self, map: V) -> Result { - ShowcaseUntrashedDeprecatedType::internal_deserialize(map) + SignSignatureRequestSentType::internal_deserialize(map) } } - deserializer.deserialize_struct("ShowcaseUntrashedDeprecatedType", SHOWCASE_UNTRASHED_DEPRECATED_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("SignSignatureRequestSentType", SIGN_SIGNATURE_REQUEST_SENT_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for ShowcaseUntrashedDeprecatedType { +impl ::serde::ser::Serialize for SignSignatureRequestSentType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("ShowcaseUntrashedDeprecatedType", 1)?; + let mut s = serializer.serialize_struct("SignSignatureRequestSentType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Restored showcase. +/// Created template. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct ShowcaseUntrashedDetails { - /// Event unique identifier. - pub event_uuid: String, +pub struct SignTemplateCreatedDetails { + /// The access level of the template. + pub access_level: String, + /// The name of the related file. + pub file_name: String, } -impl ShowcaseUntrashedDetails { - pub fn new(event_uuid: String) -> Self { - ShowcaseUntrashedDetails { - event_uuid, +impl SignTemplateCreatedDetails { + pub fn new(access_level: String, file_name: String) -> Self { + SignTemplateCreatedDetails { + access_level, + file_name, } } } -const SHOWCASE_UNTRASHED_DETAILS_FIELDS: &[&str] = &["event_uuid"]; -impl ShowcaseUntrashedDetails { +const SIGN_TEMPLATE_CREATED_DETAILS_FIELDS: &[&str] = &["access_level", + "file_name"]; +impl SignTemplateCreatedDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_event_uuid = None; + ) -> Result, V::Error> { + let mut field_access_level = None; + let mut field_file_name = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "event_uuid" => { - if field_event_uuid.is_some() { - return Err(::serde::de::Error::duplicate_field("event_uuid")); + "access_level" => { + if field_access_level.is_some() { + return Err(::serde::de::Error::duplicate_field("access_level")); } - field_event_uuid = Some(map.next_value()?); + field_access_level = Some(map.next_value()?); + } + "file_name" => { + if field_file_name.is_some() { + return Err(::serde::de::Error::duplicate_field("file_name")); + } + field_file_name = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -105382,8 +127842,9 @@ impl ShowcaseUntrashedDetails { if optional && nothing { return Ok(None); } - let result = ShowcaseUntrashedDetails { - event_uuid: field_event_uuid.ok_or_else(|| ::serde::de::Error::missing_field("event_uuid"))?, + let result = SignTemplateCreatedDetails { + access_level: field_access_level.ok_or_else(|| ::serde::de::Error::missing_field("access_level"))?, + file_name: field_file_name.ok_or_else(|| ::serde::de::Error::missing_field("file_name"))?, }; Ok(Some(result)) } @@ -105393,34 +127854,35 @@ impl ShowcaseUntrashedDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("event_uuid", &self.event_uuid)?; + s.serialize_field("access_level", &self.access_level)?; + s.serialize_field("file_name", &self.file_name)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for ShowcaseUntrashedDetails { +impl<'de> ::serde::de::Deserialize<'de> for SignTemplateCreatedDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = ShowcaseUntrashedDetails; + type Value = SignTemplateCreatedDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a ShowcaseUntrashedDetails struct") + f.write_str("a SignTemplateCreatedDetails struct") } fn visit_map>(self, map: V) -> Result { - ShowcaseUntrashedDetails::internal_deserialize(map) + SignTemplateCreatedDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("ShowcaseUntrashedDetails", SHOWCASE_UNTRASHED_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("SignTemplateCreatedDetails", SIGN_TEMPLATE_CREATED_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for ShowcaseUntrashedDetails { +impl ::serde::ser::Serialize for SignTemplateCreatedDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("ShowcaseUntrashedDetails", 1)?; + let mut s = serializer.serialize_struct("SignTemplateCreatedDetails", 2)?; self.internal_serialize::(&mut s)?; s.end() } @@ -105428,30 +127890,30 @@ impl ::serde::ser::Serialize for ShowcaseUntrashedDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct ShowcaseUntrashedType { +pub struct SignTemplateCreatedType { pub description: String, } -impl ShowcaseUntrashedType { +impl SignTemplateCreatedType { pub fn new(description: String) -> Self { - ShowcaseUntrashedType { + SignTemplateCreatedType { description, } } } -const SHOWCASE_UNTRASHED_TYPE_FIELDS: &[&str] = &["description"]; -impl ShowcaseUntrashedType { +const SIGN_TEMPLATE_CREATED_TYPE_FIELDS: &[&str] = &["description"]; +impl SignTemplateCreatedType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -105472,7 +127934,7 @@ impl ShowcaseUntrashedType { if optional && nothing { return Ok(None); } - let result = ShowcaseUntrashedType { + let result = SignTemplateCreatedType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -105488,72 +127950,86 @@ impl ShowcaseUntrashedType { } } -impl<'de> ::serde::de::Deserialize<'de> for ShowcaseUntrashedType { +impl<'de> ::serde::de::Deserialize<'de> for SignTemplateCreatedType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = ShowcaseUntrashedType; + type Value = SignTemplateCreatedType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a ShowcaseUntrashedType struct") + f.write_str("a SignTemplateCreatedType struct") } fn visit_map>(self, map: V) -> Result { - ShowcaseUntrashedType::internal_deserialize(map) + SignTemplateCreatedType::internal_deserialize(map) } } - deserializer.deserialize_struct("ShowcaseUntrashedType", SHOWCASE_UNTRASHED_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("SignTemplateCreatedType", SIGN_TEMPLATE_CREATED_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for ShowcaseUntrashedType { +impl ::serde::ser::Serialize for SignTemplateCreatedType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("ShowcaseUntrashedType", 1)?; + let mut s = serializer.serialize_struct("SignTemplateCreatedType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Viewed showcase. +/// Changed template creation permission. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct ShowcaseViewDetails { - /// Event unique identifier. - pub event_uuid: String, +pub struct SignTemplateCreationPermissionChangedDetails { + /// New template creation permission policy. + pub new_value: SignTemplateCreationPermissionPolicy, + /// Previous template creation permission policy. + pub previous_value: SignTemplateCreationPermissionPolicy, } -impl ShowcaseViewDetails { - pub fn new(event_uuid: String) -> Self { - ShowcaseViewDetails { - event_uuid, +impl SignTemplateCreationPermissionChangedDetails { + pub fn new( + new_value: SignTemplateCreationPermissionPolicy, + previous_value: SignTemplateCreationPermissionPolicy, + ) -> Self { + SignTemplateCreationPermissionChangedDetails { + new_value, + previous_value, } } } -const SHOWCASE_VIEW_DETAILS_FIELDS: &[&str] = &["event_uuid"]; -impl ShowcaseViewDetails { +const SIGN_TEMPLATE_CREATION_PERMISSION_CHANGED_DETAILS_FIELDS: &[&str] = &["new_value", + "previous_value"]; +impl SignTemplateCreationPermissionChangedDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_event_uuid = None; + ) -> Result, V::Error> { + let mut field_new_value = None; + let mut field_previous_value = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "event_uuid" => { - if field_event_uuid.is_some() { - return Err(::serde::de::Error::duplicate_field("event_uuid")); + "new_value" => { + if field_new_value.is_some() { + return Err(::serde::de::Error::duplicate_field("new_value")); } - field_event_uuid = Some(map.next_value()?); + field_new_value = Some(map.next_value()?); + } + "previous_value" => { + if field_previous_value.is_some() { + return Err(::serde::de::Error::duplicate_field("previous_value")); + } + field_previous_value = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -105564,8 +128040,9 @@ impl ShowcaseViewDetails { if optional && nothing { return Ok(None); } - let result = ShowcaseViewDetails { - event_uuid: field_event_uuid.ok_or_else(|| ::serde::de::Error::missing_field("event_uuid"))?, + let result = SignTemplateCreationPermissionChangedDetails { + new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, + previous_value: field_previous_value.ok_or_else(|| ::serde::de::Error::missing_field("previous_value"))?, }; Ok(Some(result)) } @@ -105575,34 +128052,35 @@ impl ShowcaseViewDetails { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("event_uuid", &self.event_uuid)?; + s.serialize_field("new_value", &self.new_value)?; + s.serialize_field("previous_value", &self.previous_value)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for ShowcaseViewDetails { +impl<'de> ::serde::de::Deserialize<'de> for SignTemplateCreationPermissionChangedDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = ShowcaseViewDetails; + type Value = SignTemplateCreationPermissionChangedDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a ShowcaseViewDetails struct") + f.write_str("a SignTemplateCreationPermissionChangedDetails struct") } fn visit_map>(self, map: V) -> Result { - ShowcaseViewDetails::internal_deserialize(map) + SignTemplateCreationPermissionChangedDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("ShowcaseViewDetails", SHOWCASE_VIEW_DETAILS_FIELDS, StructVisitor) + deserializer.deserialize_struct("SignTemplateCreationPermissionChangedDetails", SIGN_TEMPLATE_CREATION_PERMISSION_CHANGED_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for ShowcaseViewDetails { +impl ::serde::ser::Serialize for SignTemplateCreationPermissionChangedDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("ShowcaseViewDetails", 1)?; + let mut s = serializer.serialize_struct("SignTemplateCreationPermissionChangedDetails", 2)?; self.internal_serialize::(&mut s)?; s.end() } @@ -105610,30 +128088,30 @@ impl ::serde::ser::Serialize for ShowcaseViewDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct ShowcaseViewType { +pub struct SignTemplateCreationPermissionChangedType { pub description: String, } -impl ShowcaseViewType { +impl SignTemplateCreationPermissionChangedType { pub fn new(description: String) -> Self { - ShowcaseViewType { + SignTemplateCreationPermissionChangedType { description, } } } -const SHOWCASE_VIEW_TYPE_FIELDS: &[&str] = &["description"]; -impl ShowcaseViewType { +const SIGN_TEMPLATE_CREATION_PERMISSION_CHANGED_TYPE_FIELDS: &[&str] = &["description"]; +impl SignTemplateCreationPermissionChangedType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -105654,7 +128132,7 @@ impl ShowcaseViewType { if optional && nothing { return Ok(None); } - let result = ShowcaseViewType { + let result = SignTemplateCreationPermissionChangedType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -105670,114 +128148,147 @@ impl ShowcaseViewType { } } -impl<'de> ::serde::de::Deserialize<'de> for ShowcaseViewType { +impl<'de> ::serde::de::Deserialize<'de> for SignTemplateCreationPermissionChangedType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = ShowcaseViewType; + type Value = SignTemplateCreationPermissionChangedType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a ShowcaseViewType struct") + f.write_str("a SignTemplateCreationPermissionChangedType struct") } fn visit_map>(self, map: V) -> Result { - ShowcaseViewType::internal_deserialize(map) + SignTemplateCreationPermissionChangedType::internal_deserialize(map) } } - deserializer.deserialize_struct("ShowcaseViewType", SHOWCASE_VIEW_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("SignTemplateCreationPermissionChangedType", SIGN_TEMPLATE_CREATION_PERMISSION_CHANGED_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for ShowcaseViewType { +impl ::serde::ser::Serialize for SignTemplateCreationPermissionChangedType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("ShowcaseViewType", 1)?; + let mut s = serializer.serialize_struct("SignTemplateCreationPermissionChangedType", 1)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Ended admin sign-in-as session. -#[derive(Debug, Clone, PartialEq, Eq, Default)] -#[non_exhaustive] // structs may have more fields added in the future. -pub struct SignInAsSessionEndDetails { -} - -const SIGN_IN_AS_SESSION_END_DETAILS_FIELDS: &[&str] = &[]; -impl SignInAsSessionEndDetails { - // no _opt deserializer - pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( - mut map: V, - ) -> Result { - // ignore any fields found; none are presently recognized - crate::eat_json_fields(&mut map)?; - Ok(SignInAsSessionEndDetails {}) - } +/// Policy for controlling if team members can create templates +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // variants may be added in the future +pub enum SignTemplateCreationPermissionPolicy { + Disabled, + Enabled, + /// Catch-all used for unrecognized values returned from the server. Encountering this value + /// typically indicates that this SDK version is out of date. + Other, } -impl<'de> ::serde::de::Deserialize<'de> for SignInAsSessionEndDetails { +impl<'de> ::serde::de::Deserialize<'de> for SignTemplateCreationPermissionPolicy { fn deserialize>(deserializer: D) -> Result { - // struct deserializer - use serde::de::{MapAccess, Visitor}; - struct StructVisitor; - impl<'de> Visitor<'de> for StructVisitor { - type Value = SignInAsSessionEndDetails; + // union deserializer + use serde::de::{self, MapAccess, Visitor}; + struct EnumVisitor; + impl<'de> Visitor<'de> for EnumVisitor { + type Value = SignTemplateCreationPermissionPolicy; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SignInAsSessionEndDetails struct") + f.write_str("a SignTemplateCreationPermissionPolicy structure") } - fn visit_map>(self, map: V) -> Result { - SignInAsSessionEndDetails::internal_deserialize(map) + fn visit_map>(self, mut map: V) -> Result { + let tag: &str = match map.next_key()? { + Some(".tag") => map.next_value()?, + _ => return Err(de::Error::missing_field(".tag")) + }; + let value = match tag { + "disabled" => SignTemplateCreationPermissionPolicy::Disabled, + "enabled" => SignTemplateCreationPermissionPolicy::Enabled, + _ => SignTemplateCreationPermissionPolicy::Other, + }; + crate::eat_json_fields(&mut map)?; + Ok(value) } } - deserializer.deserialize_struct("SignInAsSessionEndDetails", SIGN_IN_AS_SESSION_END_DETAILS_FIELDS, StructVisitor) + const VARIANTS: &[&str] = &["disabled", + "enabled", + "other"]; + deserializer.deserialize_struct("SignTemplateCreationPermissionPolicy", VARIANTS, EnumVisitor) } } -impl ::serde::ser::Serialize for SignInAsSessionEndDetails { +impl ::serde::ser::Serialize for SignTemplateCreationPermissionPolicy { fn serialize(&self, serializer: S) -> Result { - // struct serializer + // union serializer use serde::ser::SerializeStruct; - serializer.serialize_struct("SignInAsSessionEndDetails", 0)?.end() + match self { + SignTemplateCreationPermissionPolicy::Disabled => { + // unit + let mut s = serializer.serialize_struct("SignTemplateCreationPermissionPolicy", 1)?; + s.serialize_field(".tag", "disabled")?; + s.end() + } + SignTemplateCreationPermissionPolicy::Enabled => { + // unit + let mut s = serializer.serialize_struct("SignTemplateCreationPermissionPolicy", 1)?; + s.serialize_field(".tag", "enabled")?; + s.end() + } + SignTemplateCreationPermissionPolicy::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) + } } } +/// Shared template. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SignInAsSessionEndType { - pub description: String, +pub struct SignTemplateSharedDetails { + /// The access level of the template. + pub access_level: String, + /// The name of the related file. + pub file_name: String, } -impl SignInAsSessionEndType { - pub fn new(description: String) -> Self { - SignInAsSessionEndType { - description, +impl SignTemplateSharedDetails { + pub fn new(access_level: String, file_name: String) -> Self { + SignTemplateSharedDetails { + access_level, + file_name, } } } -const SIGN_IN_AS_SESSION_END_TYPE_FIELDS: &[&str] = &["description"]; -impl SignInAsSessionEndType { +const SIGN_TEMPLATE_SHARED_DETAILS_FIELDS: &[&str] = &["access_level", + "file_name"]; +impl SignTemplateSharedDetails { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { - let mut field_description = None; + ) -> Result, V::Error> { + let mut field_access_level = None; + let mut field_file_name = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; match key { - "description" => { - if field_description.is_some() { - return Err(::serde::de::Error::duplicate_field("description")); + "access_level" => { + if field_access_level.is_some() { + return Err(::serde::de::Error::duplicate_field("access_level")); } - field_description = Some(map.next_value()?); + field_access_level = Some(map.next_value()?); + } + "file_name" => { + if field_file_name.is_some() { + return Err(::serde::de::Error::duplicate_field("file_name")); + } + field_file_name = Some(map.next_value()?); } _ => { // unknown field allowed and ignored @@ -105788,8 +128299,9 @@ impl SignInAsSessionEndType { if optional && nothing { return Ok(None); } - let result = SignInAsSessionEndType { - description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + let result = SignTemplateSharedDetails { + access_level: field_access_level.ok_or_else(|| ::serde::de::Error::missing_field("access_level"))?, + file_name: field_file_name.ok_or_else(|| ::serde::de::Error::missing_field("file_name"))?, }; Ok(Some(result)) } @@ -105799,109 +128311,66 @@ impl SignInAsSessionEndType { s: &mut S::SerializeStruct, ) -> Result<(), S::Error> { use serde::ser::SerializeStruct; - s.serialize_field("description", &self.description)?; + s.serialize_field("access_level", &self.access_level)?; + s.serialize_field("file_name", &self.file_name)?; Ok(()) } } -impl<'de> ::serde::de::Deserialize<'de> for SignInAsSessionEndType { +impl<'de> ::serde::de::Deserialize<'de> for SignTemplateSharedDetails { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SignInAsSessionEndType; + type Value = SignTemplateSharedDetails; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SignInAsSessionEndType struct") + f.write_str("a SignTemplateSharedDetails struct") } fn visit_map>(self, map: V) -> Result { - SignInAsSessionEndType::internal_deserialize(map) + SignTemplateSharedDetails::internal_deserialize(map) } } - deserializer.deserialize_struct("SignInAsSessionEndType", SIGN_IN_AS_SESSION_END_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("SignTemplateSharedDetails", SIGN_TEMPLATE_SHARED_DETAILS_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SignInAsSessionEndType { +impl ::serde::ser::Serialize for SignTemplateSharedDetails { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SignInAsSessionEndType", 1)?; + let mut s = serializer.serialize_struct("SignTemplateSharedDetails", 2)?; self.internal_serialize::(&mut s)?; s.end() } } -/// Started admin sign-in-as session. -#[derive(Debug, Clone, PartialEq, Eq, Default)] -#[non_exhaustive] // structs may have more fields added in the future. -pub struct SignInAsSessionStartDetails { -} - -const SIGN_IN_AS_SESSION_START_DETAILS_FIELDS: &[&str] = &[]; -impl SignInAsSessionStartDetails { - // no _opt deserializer - pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( - mut map: V, - ) -> Result { - // ignore any fields found; none are presently recognized - crate::eat_json_fields(&mut map)?; - Ok(SignInAsSessionStartDetails {}) - } -} - -impl<'de> ::serde::de::Deserialize<'de> for SignInAsSessionStartDetails { - fn deserialize>(deserializer: D) -> Result { - // struct deserializer - use serde::de::{MapAccess, Visitor}; - struct StructVisitor; - impl<'de> Visitor<'de> for StructVisitor { - type Value = SignInAsSessionStartDetails; - fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SignInAsSessionStartDetails struct") - } - fn visit_map>(self, map: V) -> Result { - SignInAsSessionStartDetails::internal_deserialize(map) - } - } - deserializer.deserialize_struct("SignInAsSessionStartDetails", SIGN_IN_AS_SESSION_START_DETAILS_FIELDS, StructVisitor) - } -} - -impl ::serde::ser::Serialize for SignInAsSessionStartDetails { - fn serialize(&self, serializer: S) -> Result { - // struct serializer - use serde::ser::SerializeStruct; - serializer.serialize_struct("SignInAsSessionStartDetails", 0)?.end() - } -} - #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. -pub struct SignInAsSessionStartType { +pub struct SignTemplateSharedType { pub description: String, } -impl SignInAsSessionStartType { +impl SignTemplateSharedType { pub fn new(description: String) -> Self { - SignInAsSessionStartType { + SignTemplateSharedType { description, } } } -const SIGN_IN_AS_SESSION_START_TYPE_FIELDS: &[&str] = &["description"]; -impl SignInAsSessionStartType { +const SIGN_TEMPLATE_SHARED_TYPE_FIELDS: &[&str] = &["description"]; +impl SignTemplateSharedType { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, - ) -> Result { + ) -> Result { Self::internal_deserialize_opt(map, false).map(Option::unwrap) } pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( mut map: V, optional: bool, - ) -> Result, V::Error> { + ) -> Result, V::Error> { let mut field_description = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { @@ -105922,7 +128391,7 @@ impl SignInAsSessionStartType { if optional && nothing { return Ok(None); } - let result = SignInAsSessionStartType { + let result = SignTemplateSharedType { description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, }; Ok(Some(result)) @@ -105938,29 +128407,29 @@ impl SignInAsSessionStartType { } } -impl<'de> ::serde::de::Deserialize<'de> for SignInAsSessionStartType { +impl<'de> ::serde::de::Deserialize<'de> for SignTemplateSharedType { fn deserialize>(deserializer: D) -> Result { // struct deserializer use serde::de::{MapAccess, Visitor}; struct StructVisitor; impl<'de> Visitor<'de> for StructVisitor { - type Value = SignInAsSessionStartType; + type Value = SignTemplateSharedType; fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - f.write_str("a SignInAsSessionStartType struct") + f.write_str("a SignTemplateSharedType struct") } fn visit_map>(self, map: V) -> Result { - SignInAsSessionStartType::internal_deserialize(map) + SignTemplateSharedType::internal_deserialize(map) } } - deserializer.deserialize_struct("SignInAsSessionStartType", SIGN_IN_AS_SESSION_START_TYPE_FIELDS, StructVisitor) + deserializer.deserialize_struct("SignTemplateSharedType", SIGN_TEMPLATE_SHARED_TYPE_FIELDS, StructVisitor) } } -impl ::serde::ser::Serialize for SignInAsSessionStartType { +impl ::serde::ser::Serialize for SignTemplateSharedType { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("SignInAsSessionStartType", 1)?; + let mut s = serializer.serialize_struct("SignTemplateSharedType", 1)?; self.internal_serialize::(&mut s)?; s.end() } @@ -109291,6 +131760,281 @@ impl ::serde::ser::Serialize for SsoRemoveLogoutUrlType { } } +/// Policy for whether a team's content can be reached via Stacks owned by other teams +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // variants may be added in the future +pub enum StackCrossTeamAccessPolicy { + Allowed, + Default, + Disallowed, + /// Catch-all used for unrecognized values returned from the server. Encountering this value + /// typically indicates that this SDK version is out of date. + Other, +} + +impl<'de> ::serde::de::Deserialize<'de> for StackCrossTeamAccessPolicy { + fn deserialize>(deserializer: D) -> Result { + // union deserializer + use serde::de::{self, MapAccess, Visitor}; + struct EnumVisitor; + impl<'de> Visitor<'de> for EnumVisitor { + type Value = StackCrossTeamAccessPolicy; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a StackCrossTeamAccessPolicy structure") + } + fn visit_map>(self, mut map: V) -> Result { + let tag: &str = match map.next_key()? { + Some(".tag") => map.next_value()?, + _ => return Err(de::Error::missing_field(".tag")) + }; + let value = match tag { + "allowed" => StackCrossTeamAccessPolicy::Allowed, + "default" => StackCrossTeamAccessPolicy::Default, + "disallowed" => StackCrossTeamAccessPolicy::Disallowed, + _ => StackCrossTeamAccessPolicy::Other, + }; + crate::eat_json_fields(&mut map)?; + Ok(value) + } + } + const VARIANTS: &[&str] = &["allowed", + "default", + "disallowed", + "other"]; + deserializer.deserialize_struct("StackCrossTeamAccessPolicy", VARIANTS, EnumVisitor) + } +} + +impl ::serde::ser::Serialize for StackCrossTeamAccessPolicy { + fn serialize(&self, serializer: S) -> Result { + // union serializer + use serde::ser::SerializeStruct; + match self { + StackCrossTeamAccessPolicy::Allowed => { + // unit + let mut s = serializer.serialize_struct("StackCrossTeamAccessPolicy", 1)?; + s.serialize_field(".tag", "allowed")?; + s.end() + } + StackCrossTeamAccessPolicy::Default => { + // unit + let mut s = serializer.serialize_struct("StackCrossTeamAccessPolicy", 1)?; + s.serialize_field(".tag", "default")?; + s.end() + } + StackCrossTeamAccessPolicy::Disallowed => { + // unit + let mut s = serializer.serialize_struct("StackCrossTeamAccessPolicy", 1)?; + s.serialize_field(".tag", "disallowed")?; + s.end() + } + StackCrossTeamAccessPolicy::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) + } + } +} + +/// Changed cross-team Stack access policy for team. +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct StackCrossTeamAccessPolicyChangedDetails { + /// New cross-team Stack access policy. + pub new_value: StackCrossTeamAccessPolicy, + /// Previous cross-team Stack access policy. Might be missing due to historical data gap. + pub previous_value: Option, +} + +impl StackCrossTeamAccessPolicyChangedDetails { + pub fn new(new_value: StackCrossTeamAccessPolicy) -> Self { + StackCrossTeamAccessPolicyChangedDetails { + new_value, + previous_value: None, + } + } + + pub fn with_previous_value(mut self, value: StackCrossTeamAccessPolicy) -> Self { + self.previous_value = Some(value); + self + } +} + +const STACK_CROSS_TEAM_ACCESS_POLICY_CHANGED_DETAILS_FIELDS: &[&str] = &["new_value", + "previous_value"]; +impl StackCrossTeamAccessPolicyChangedDetails { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_new_value = None; + let mut field_previous_value = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "new_value" => { + if field_new_value.is_some() { + return Err(::serde::de::Error::duplicate_field("new_value")); + } + field_new_value = Some(map.next_value()?); + } + "previous_value" => { + if field_previous_value.is_some() { + return Err(::serde::de::Error::duplicate_field("previous_value")); + } + field_previous_value = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } + } + } + if optional && nothing { + return Ok(None); + } + let result = StackCrossTeamAccessPolicyChangedDetails { + new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, + previous_value: field_previous_value.and_then(Option::flatten), + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("new_value", &self.new_value)?; + if let Some(val) = &self.previous_value { + s.serialize_field("previous_value", val)?; + } + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for StackCrossTeamAccessPolicyChangedDetails { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = StackCrossTeamAccessPolicyChangedDetails; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a StackCrossTeamAccessPolicyChangedDetails struct") + } + fn visit_map>(self, map: V) -> Result { + StackCrossTeamAccessPolicyChangedDetails::internal_deserialize(map) + } + } + deserializer.deserialize_struct("StackCrossTeamAccessPolicyChangedDetails", STACK_CROSS_TEAM_ACCESS_POLICY_CHANGED_DETAILS_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for StackCrossTeamAccessPolicyChangedDetails { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("StackCrossTeamAccessPolicyChangedDetails", 2)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct StackCrossTeamAccessPolicyChangedType { + pub description: String, +} + +impl StackCrossTeamAccessPolicyChangedType { + pub fn new(description: String) -> Self { + StackCrossTeamAccessPolicyChangedType { + description, + } + } +} + +const STACK_CROSS_TEAM_ACCESS_POLICY_CHANGED_TYPE_FIELDS: &[&str] = &["description"]; +impl StackCrossTeamAccessPolicyChangedType { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_description = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); + } + field_description = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } + } + } + if optional && nothing { + return Ok(None); + } + let result = StackCrossTeamAccessPolicyChangedType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("description", &self.description)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for StackCrossTeamAccessPolicyChangedType { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = StackCrossTeamAccessPolicyChangedType; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a StackCrossTeamAccessPolicyChangedType struct") + } + fn visit_map>(self, map: V) -> Result { + StackCrossTeamAccessPolicyChangedType::internal_deserialize(map) + } + } + deserializer.deserialize_struct("StackCrossTeamAccessPolicyChangedType", STACK_CROSS_TEAM_ACCESS_POLICY_CHANGED_TYPE_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for StackCrossTeamAccessPolicyChangedType { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("StackCrossTeamAccessPolicyChangedType", 1)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + /// Started enterprise admin session. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. @@ -110204,6 +132948,188 @@ impl ::serde::ser::Serialize for TeamDetails { } } +/// Activated team encryption key. +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct TeamEncryptionKeyActivateKeyDetails { + /// Type of key management. + pub key_management_type: String, +} + +impl TeamEncryptionKeyActivateKeyDetails { + pub fn new(key_management_type: String) -> Self { + TeamEncryptionKeyActivateKeyDetails { + key_management_type, + } + } +} + +const TEAM_ENCRYPTION_KEY_ACTIVATE_KEY_DETAILS_FIELDS: &[&str] = &["key_management_type"]; +impl TeamEncryptionKeyActivateKeyDetails { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_key_management_type = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "key_management_type" => { + if field_key_management_type.is_some() { + return Err(::serde::de::Error::duplicate_field("key_management_type")); + } + field_key_management_type = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } + } + } + if optional && nothing { + return Ok(None); + } + let result = TeamEncryptionKeyActivateKeyDetails { + key_management_type: field_key_management_type.ok_or_else(|| ::serde::de::Error::missing_field("key_management_type"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("key_management_type", &self.key_management_type)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for TeamEncryptionKeyActivateKeyDetails { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = TeamEncryptionKeyActivateKeyDetails; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a TeamEncryptionKeyActivateKeyDetails struct") + } + fn visit_map>(self, map: V) -> Result { + TeamEncryptionKeyActivateKeyDetails::internal_deserialize(map) + } + } + deserializer.deserialize_struct("TeamEncryptionKeyActivateKeyDetails", TEAM_ENCRYPTION_KEY_ACTIVATE_KEY_DETAILS_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for TeamEncryptionKeyActivateKeyDetails { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("TeamEncryptionKeyActivateKeyDetails", 1)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct TeamEncryptionKeyActivateKeyType { + pub description: String, +} + +impl TeamEncryptionKeyActivateKeyType { + pub fn new(description: String) -> Self { + TeamEncryptionKeyActivateKeyType { + description, + } + } +} + +const TEAM_ENCRYPTION_KEY_ACTIVATE_KEY_TYPE_FIELDS: &[&str] = &["description"]; +impl TeamEncryptionKeyActivateKeyType { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_description = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); + } + field_description = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } + } + } + if optional && nothing { + return Ok(None); + } + let result = TeamEncryptionKeyActivateKeyType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("description", &self.description)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for TeamEncryptionKeyActivateKeyType { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = TeamEncryptionKeyActivateKeyType; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a TeamEncryptionKeyActivateKeyType struct") + } + fn visit_map>(self, map: V) -> Result { + TeamEncryptionKeyActivateKeyType::internal_deserialize(map) + } + } + deserializer.deserialize_struct("TeamEncryptionKeyActivateKeyType", TEAM_ENCRYPTION_KEY_ACTIVATE_KEY_TYPE_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for TeamEncryptionKeyActivateKeyType { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("TeamEncryptionKeyActivateKeyType", 1)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + /// Canceled team encryption key deletion. #[derive(Debug, Clone, PartialEq, Eq, Default)] #[non_exhaustive] // structs may have more fields added in the future. @@ -110472,6 +133398,140 @@ impl ::serde::ser::Serialize for TeamEncryptionKeyCreateKeyType { } } +/// Deactivated team encryption key. +#[derive(Debug, Clone, PartialEq, Eq, Default)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct TeamEncryptionKeyDeactivateKeyDetails { +} + +const TEAM_ENCRYPTION_KEY_DEACTIVATE_KEY_DETAILS_FIELDS: &[&str] = &[]; +impl TeamEncryptionKeyDeactivateKeyDetails { + // no _opt deserializer + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + ) -> Result { + // ignore any fields found; none are presently recognized + crate::eat_json_fields(&mut map)?; + Ok(TeamEncryptionKeyDeactivateKeyDetails {}) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for TeamEncryptionKeyDeactivateKeyDetails { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = TeamEncryptionKeyDeactivateKeyDetails; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a TeamEncryptionKeyDeactivateKeyDetails struct") + } + fn visit_map>(self, map: V) -> Result { + TeamEncryptionKeyDeactivateKeyDetails::internal_deserialize(map) + } + } + deserializer.deserialize_struct("TeamEncryptionKeyDeactivateKeyDetails", TEAM_ENCRYPTION_KEY_DEACTIVATE_KEY_DETAILS_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for TeamEncryptionKeyDeactivateKeyDetails { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + serializer.serialize_struct("TeamEncryptionKeyDeactivateKeyDetails", 0)?.end() + } +} + +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct TeamEncryptionKeyDeactivateKeyType { + pub description: String, +} + +impl TeamEncryptionKeyDeactivateKeyType { + pub fn new(description: String) -> Self { + TeamEncryptionKeyDeactivateKeyType { + description, + } + } +} + +const TEAM_ENCRYPTION_KEY_DEACTIVATE_KEY_TYPE_FIELDS: &[&str] = &["description"]; +impl TeamEncryptionKeyDeactivateKeyType { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_description = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); + } + field_description = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } + } + } + if optional && nothing { + return Ok(None); + } + let result = TeamEncryptionKeyDeactivateKeyType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("description", &self.description)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for TeamEncryptionKeyDeactivateKeyType { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = TeamEncryptionKeyDeactivateKeyType; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a TeamEncryptionKeyDeactivateKeyType struct") + } + fn visit_map>(self, map: V) -> Result { + TeamEncryptionKeyDeactivateKeyType::internal_deserialize(map) + } + } + deserializer.deserialize_struct("TeamEncryptionKeyDeactivateKeyType", TEAM_ENCRYPTION_KEY_DEACTIVATE_KEY_TYPE_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for TeamEncryptionKeyDeactivateKeyType { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("TeamEncryptionKeyDeactivateKeyType", 1)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + /// Deleted team encryption key. #[derive(Debug, Clone, PartialEq, Eq, Default)] #[non_exhaustive] // structs may have more fields added in the future. @@ -111155,17 +134215,16 @@ pub struct TeamEvent { /// The variable event schema applicable to this type of action, instantiated with respect to /// this particular action. pub details: EventDetails, - /// The entity who actually performed the action. Might be missing due to historical data gap. + /// The entity who actually performed the action. pub actor: Option, /// The origin from which the actor performed the action including information about host, ip /// address, location, session, etc. If the action was performed programmatically via the API /// the origin represents the API client. pub origin: Option, /// True if the action involved a non team member either as the actor or as one of the affected - /// users. Might be missing due to historical data gap. + /// users. pub involve_non_team_member: Option, - /// The user or team on whose behalf the actor performed the action. Might be missing due to - /// historical data gap. + /// The user or team on whose behalf the actor performed the action. pub context: Option, /// Zero or more users and/or groups that are affected by the action. Note that this list /// doesn't include any actors or users in context. @@ -112512,6 +135571,322 @@ impl ::serde::ser::Serialize for TeamFolderRenameType { } } +/// Created team folders report. +#[derive(Debug, Clone, PartialEq, Eq, Default)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct TeamFoldersCreateReportDetails { +} + +const TEAM_FOLDERS_CREATE_REPORT_DETAILS_FIELDS: &[&str] = &[]; +impl TeamFoldersCreateReportDetails { + // no _opt deserializer + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + ) -> Result { + // ignore any fields found; none are presently recognized + crate::eat_json_fields(&mut map)?; + Ok(TeamFoldersCreateReportDetails {}) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for TeamFoldersCreateReportDetails { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = TeamFoldersCreateReportDetails; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a TeamFoldersCreateReportDetails struct") + } + fn visit_map>(self, map: V) -> Result { + TeamFoldersCreateReportDetails::internal_deserialize(map) + } + } + deserializer.deserialize_struct("TeamFoldersCreateReportDetails", TEAM_FOLDERS_CREATE_REPORT_DETAILS_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for TeamFoldersCreateReportDetails { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + serializer.serialize_struct("TeamFoldersCreateReportDetails", 0)?.end() + } +} + +/// Couldn't generate team folders report. +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct TeamFoldersCreateReportFailedDetails { + /// Failure reason. + pub failure_reason: crate::types::team::TeamReportFailureReason, +} + +impl TeamFoldersCreateReportFailedDetails { + pub fn new(failure_reason: crate::types::team::TeamReportFailureReason) -> Self { + TeamFoldersCreateReportFailedDetails { + failure_reason, + } + } +} + +const TEAM_FOLDERS_CREATE_REPORT_FAILED_DETAILS_FIELDS: &[&str] = &["failure_reason"]; +impl TeamFoldersCreateReportFailedDetails { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_failure_reason = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "failure_reason" => { + if field_failure_reason.is_some() { + return Err(::serde::de::Error::duplicate_field("failure_reason")); + } + field_failure_reason = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } + } + } + if optional && nothing { + return Ok(None); + } + let result = TeamFoldersCreateReportFailedDetails { + failure_reason: field_failure_reason.ok_or_else(|| ::serde::de::Error::missing_field("failure_reason"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("failure_reason", &self.failure_reason)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for TeamFoldersCreateReportFailedDetails { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = TeamFoldersCreateReportFailedDetails; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a TeamFoldersCreateReportFailedDetails struct") + } + fn visit_map>(self, map: V) -> Result { + TeamFoldersCreateReportFailedDetails::internal_deserialize(map) + } + } + deserializer.deserialize_struct("TeamFoldersCreateReportFailedDetails", TEAM_FOLDERS_CREATE_REPORT_FAILED_DETAILS_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for TeamFoldersCreateReportFailedDetails { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("TeamFoldersCreateReportFailedDetails", 1)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct TeamFoldersCreateReportFailedType { + pub description: String, +} + +impl TeamFoldersCreateReportFailedType { + pub fn new(description: String) -> Self { + TeamFoldersCreateReportFailedType { + description, + } + } +} + +const TEAM_FOLDERS_CREATE_REPORT_FAILED_TYPE_FIELDS: &[&str] = &["description"]; +impl TeamFoldersCreateReportFailedType { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_description = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); + } + field_description = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } + } + } + if optional && nothing { + return Ok(None); + } + let result = TeamFoldersCreateReportFailedType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("description", &self.description)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for TeamFoldersCreateReportFailedType { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = TeamFoldersCreateReportFailedType; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a TeamFoldersCreateReportFailedType struct") + } + fn visit_map>(self, map: V) -> Result { + TeamFoldersCreateReportFailedType::internal_deserialize(map) + } + } + deserializer.deserialize_struct("TeamFoldersCreateReportFailedType", TEAM_FOLDERS_CREATE_REPORT_FAILED_TYPE_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for TeamFoldersCreateReportFailedType { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("TeamFoldersCreateReportFailedType", 1)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct TeamFoldersCreateReportType { + pub description: String, +} + +impl TeamFoldersCreateReportType { + pub fn new(description: String) -> Self { + TeamFoldersCreateReportType { + description, + } + } +} + +const TEAM_FOLDERS_CREATE_REPORT_TYPE_FIELDS: &[&str] = &["description"]; +impl TeamFoldersCreateReportType { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_description = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); + } + field_description = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } + } + } + if optional && nothing { + return Ok(None); + } + let result = TeamFoldersCreateReportType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("description", &self.description)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for TeamFoldersCreateReportType { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = TeamFoldersCreateReportType; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a TeamFoldersCreateReportType struct") + } + fn visit_map>(self, map: V) -> Result { + TeamFoldersCreateReportType::internal_deserialize(map) + } + } + deserializer.deserialize_struct("TeamFoldersCreateReportType", TEAM_FOLDERS_CREATE_REPORT_TYPE_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for TeamFoldersCreateReportType { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("TeamFoldersCreateReportType", 1)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + /// Details about team invites #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. @@ -113009,6 +136384,281 @@ impl From for UserLogInfo { UserLogInfo::TeamMember(subtype) } } +/// Policy for deciding whether team members can request increased storage limits from admins +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // variants may be added in the future +pub enum TeamMemberStorageRequestPolicy { + Default, + Disabled, + Enabled, + /// Catch-all used for unrecognized values returned from the server. Encountering this value + /// typically indicates that this SDK version is out of date. + Other, +} + +impl<'de> ::serde::de::Deserialize<'de> for TeamMemberStorageRequestPolicy { + fn deserialize>(deserializer: D) -> Result { + // union deserializer + use serde::de::{self, MapAccess, Visitor}; + struct EnumVisitor; + impl<'de> Visitor<'de> for EnumVisitor { + type Value = TeamMemberStorageRequestPolicy; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a TeamMemberStorageRequestPolicy structure") + } + fn visit_map>(self, mut map: V) -> Result { + let tag: &str = match map.next_key()? { + Some(".tag") => map.next_value()?, + _ => return Err(de::Error::missing_field(".tag")) + }; + let value = match tag { + "default" => TeamMemberStorageRequestPolicy::Default, + "disabled" => TeamMemberStorageRequestPolicy::Disabled, + "enabled" => TeamMemberStorageRequestPolicy::Enabled, + _ => TeamMemberStorageRequestPolicy::Other, + }; + crate::eat_json_fields(&mut map)?; + Ok(value) + } + } + const VARIANTS: &[&str] = &["default", + "disabled", + "enabled", + "other"]; + deserializer.deserialize_struct("TeamMemberStorageRequestPolicy", VARIANTS, EnumVisitor) + } +} + +impl ::serde::ser::Serialize for TeamMemberStorageRequestPolicy { + fn serialize(&self, serializer: S) -> Result { + // union serializer + use serde::ser::SerializeStruct; + match self { + TeamMemberStorageRequestPolicy::Default => { + // unit + let mut s = serializer.serialize_struct("TeamMemberStorageRequestPolicy", 1)?; + s.serialize_field(".tag", "default")?; + s.end() + } + TeamMemberStorageRequestPolicy::Disabled => { + // unit + let mut s = serializer.serialize_struct("TeamMemberStorageRequestPolicy", 1)?; + s.serialize_field(".tag", "disabled")?; + s.end() + } + TeamMemberStorageRequestPolicy::Enabled => { + // unit + let mut s = serializer.serialize_struct("TeamMemberStorageRequestPolicy", 1)?; + s.serialize_field(".tag", "enabled")?; + s.end() + } + TeamMemberStorageRequestPolicy::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) + } + } +} + +/// Changed team member storage request policy for team. +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct TeamMemberStorageRequestPolicyChangedDetails { + /// New team member storage request policy. + pub new_value: TeamMemberStorageRequestPolicy, + /// Previous team member storage request policy. Might be missing due to historical data gap. + pub previous_value: Option, +} + +impl TeamMemberStorageRequestPolicyChangedDetails { + pub fn new(new_value: TeamMemberStorageRequestPolicy) -> Self { + TeamMemberStorageRequestPolicyChangedDetails { + new_value, + previous_value: None, + } + } + + pub fn with_previous_value(mut self, value: TeamMemberStorageRequestPolicy) -> Self { + self.previous_value = Some(value); + self + } +} + +const TEAM_MEMBER_STORAGE_REQUEST_POLICY_CHANGED_DETAILS_FIELDS: &[&str] = &["new_value", + "previous_value"]; +impl TeamMemberStorageRequestPolicyChangedDetails { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_new_value = None; + let mut field_previous_value = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "new_value" => { + if field_new_value.is_some() { + return Err(::serde::de::Error::duplicate_field("new_value")); + } + field_new_value = Some(map.next_value()?); + } + "previous_value" => { + if field_previous_value.is_some() { + return Err(::serde::de::Error::duplicate_field("previous_value")); + } + field_previous_value = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } + } + } + if optional && nothing { + return Ok(None); + } + let result = TeamMemberStorageRequestPolicyChangedDetails { + new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, + previous_value: field_previous_value.and_then(Option::flatten), + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("new_value", &self.new_value)?; + if let Some(val) = &self.previous_value { + s.serialize_field("previous_value", val)?; + } + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for TeamMemberStorageRequestPolicyChangedDetails { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = TeamMemberStorageRequestPolicyChangedDetails; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a TeamMemberStorageRequestPolicyChangedDetails struct") + } + fn visit_map>(self, map: V) -> Result { + TeamMemberStorageRequestPolicyChangedDetails::internal_deserialize(map) + } + } + deserializer.deserialize_struct("TeamMemberStorageRequestPolicyChangedDetails", TEAM_MEMBER_STORAGE_REQUEST_POLICY_CHANGED_DETAILS_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for TeamMemberStorageRequestPolicyChangedDetails { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("TeamMemberStorageRequestPolicyChangedDetails", 2)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct TeamMemberStorageRequestPolicyChangedType { + pub description: String, +} + +impl TeamMemberStorageRequestPolicyChangedType { + pub fn new(description: String) -> Self { + TeamMemberStorageRequestPolicyChangedType { + description, + } + } +} + +const TEAM_MEMBER_STORAGE_REQUEST_POLICY_CHANGED_TYPE_FIELDS: &[&str] = &["description"]; +impl TeamMemberStorageRequestPolicyChangedType { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_description = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); + } + field_description = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } + } + } + if optional && nothing { + return Ok(None); + } + let result = TeamMemberStorageRequestPolicyChangedType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("description", &self.description)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for TeamMemberStorageRequestPolicyChangedType { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = TeamMemberStorageRequestPolicyChangedType; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a TeamMemberStorageRequestPolicyChangedType struct") + } + fn visit_map>(self, map: V) -> Result { + TeamMemberStorageRequestPolicyChangedType::internal_deserialize(map) + } + } + deserializer.deserialize_struct("TeamMemberStorageRequestPolicyChangedType", TEAM_MEMBER_STORAGE_REQUEST_POLICY_CHANGED_TYPE_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for TeamMemberStorageRequestPolicyChangedType { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("TeamMemberStorageRequestPolicyChangedType", 1)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // variants may be added in the future pub enum TeamMembershipType { @@ -113359,9 +137009,9 @@ impl ::serde::ser::Serialize for TeamMergeRequestAcceptedDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // variants may be added in the future pub enum TeamMergeRequestAcceptedExtraDetails { - /// Team merge request accepted details shown to the primary team. + /// Team merge request accepted details shown to the primary team PrimaryTeam(PrimaryTeamRequestAcceptedDetails), - /// Team merge request accepted details shown to the secondary team. + /// Team merge request accepted details shown to the secondary team SecondaryTeam(SecondaryTeamRequestAcceptedDetails), /// Catch-all used for unrecognized values returned from the server. Encountering this value /// typically indicates that this SDK version is out of date. @@ -114171,9 +137821,9 @@ impl ::serde::ser::Serialize for TeamMergeRequestCanceledDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // variants may be added in the future pub enum TeamMergeRequestCanceledExtraDetails { - /// Team merge request cancellation details shown to the primary team. + /// Team merge request cancellation details shown to the primary team PrimaryTeam(PrimaryTeamRequestCanceledDetails), - /// Team merge request cancellation details shown to the secondary team. + /// Team merge request cancellation details shown to the secondary team SecondaryTeam(SecondaryTeamRequestCanceledDetails), /// Catch-all used for unrecognized values returned from the server. Encountering this value /// typically indicates that this SDK version is out of date. @@ -114811,9 +138461,9 @@ impl ::serde::ser::Serialize for TeamMergeRequestExpiredDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // variants may be added in the future pub enum TeamMergeRequestExpiredExtraDetails { - /// Team merge request canceled details shown to the primary team. + /// Team merge request canceled details shown to the primary team PrimaryTeam(PrimaryTeamRequestExpiredDetails), - /// Team merge request canceled details shown to the secondary team. + /// Team merge request canceled details shown to the secondary team SecondaryTeam(SecondaryTeamRequestExpiredDetails), /// Catch-all used for unrecognized values returned from the server. Encountering this value /// typically indicates that this SDK version is out of date. @@ -115815,9 +139465,9 @@ impl ::serde::ser::Serialize for TeamMergeRequestReminderDetails { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // variants may be added in the future pub enum TeamMergeRequestReminderExtraDetails { - /// Team merge request reminder details shown to the primary team. + /// Team merge request reminder details shown to the primary team PrimaryTeam(PrimaryTeamRequestReminderDetails), - /// Team merge request reminder details shown to the secondary team. + /// Team merge request reminder details shown to the secondary team SecondaryTeam(SecondaryTeamRequestReminderDetails), /// Catch-all used for unrecognized values returned from the server. Encountering this value /// typically indicates that this SDK version is out of date. @@ -119054,7 +142704,323 @@ impl ::serde::ser::Serialize for TeamSharingWhitelistSubjectsChangedType { } } -/// Added backup phone for two-step verification. +/// Created team storage report. +#[derive(Debug, Clone, PartialEq, Eq, Default)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct TeamStorageCreateReportDetails { +} + +const TEAM_STORAGE_CREATE_REPORT_DETAILS_FIELDS: &[&str] = &[]; +impl TeamStorageCreateReportDetails { + // no _opt deserializer + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + ) -> Result { + // ignore any fields found; none are presently recognized + crate::eat_json_fields(&mut map)?; + Ok(TeamStorageCreateReportDetails {}) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for TeamStorageCreateReportDetails { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = TeamStorageCreateReportDetails; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a TeamStorageCreateReportDetails struct") + } + fn visit_map>(self, map: V) -> Result { + TeamStorageCreateReportDetails::internal_deserialize(map) + } + } + deserializer.deserialize_struct("TeamStorageCreateReportDetails", TEAM_STORAGE_CREATE_REPORT_DETAILS_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for TeamStorageCreateReportDetails { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + serializer.serialize_struct("TeamStorageCreateReportDetails", 0)?.end() + } +} + +/// Couldn't generate team storage report. +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct TeamStorageCreateReportFailedDetails { + /// Failure reason. + pub failure_reason: crate::types::team::TeamReportFailureReason, +} + +impl TeamStorageCreateReportFailedDetails { + pub fn new(failure_reason: crate::types::team::TeamReportFailureReason) -> Self { + TeamStorageCreateReportFailedDetails { + failure_reason, + } + } +} + +const TEAM_STORAGE_CREATE_REPORT_FAILED_DETAILS_FIELDS: &[&str] = &["failure_reason"]; +impl TeamStorageCreateReportFailedDetails { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_failure_reason = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "failure_reason" => { + if field_failure_reason.is_some() { + return Err(::serde::de::Error::duplicate_field("failure_reason")); + } + field_failure_reason = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } + } + } + if optional && nothing { + return Ok(None); + } + let result = TeamStorageCreateReportFailedDetails { + failure_reason: field_failure_reason.ok_or_else(|| ::serde::de::Error::missing_field("failure_reason"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("failure_reason", &self.failure_reason)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for TeamStorageCreateReportFailedDetails { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = TeamStorageCreateReportFailedDetails; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a TeamStorageCreateReportFailedDetails struct") + } + fn visit_map>(self, map: V) -> Result { + TeamStorageCreateReportFailedDetails::internal_deserialize(map) + } + } + deserializer.deserialize_struct("TeamStorageCreateReportFailedDetails", TEAM_STORAGE_CREATE_REPORT_FAILED_DETAILS_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for TeamStorageCreateReportFailedDetails { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("TeamStorageCreateReportFailedDetails", 1)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct TeamStorageCreateReportFailedType { + pub description: String, +} + +impl TeamStorageCreateReportFailedType { + pub fn new(description: String) -> Self { + TeamStorageCreateReportFailedType { + description, + } + } +} + +const TEAM_STORAGE_CREATE_REPORT_FAILED_TYPE_FIELDS: &[&str] = &["description"]; +impl TeamStorageCreateReportFailedType { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_description = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); + } + field_description = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } + } + } + if optional && nothing { + return Ok(None); + } + let result = TeamStorageCreateReportFailedType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("description", &self.description)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for TeamStorageCreateReportFailedType { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = TeamStorageCreateReportFailedType; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a TeamStorageCreateReportFailedType struct") + } + fn visit_map>(self, map: V) -> Result { + TeamStorageCreateReportFailedType::internal_deserialize(map) + } + } + deserializer.deserialize_struct("TeamStorageCreateReportFailedType", TEAM_STORAGE_CREATE_REPORT_FAILED_TYPE_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for TeamStorageCreateReportFailedType { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("TeamStorageCreateReportFailedType", 1)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct TeamStorageCreateReportType { + pub description: String, +} + +impl TeamStorageCreateReportType { + pub fn new(description: String) -> Self { + TeamStorageCreateReportType { + description, + } + } +} + +const TEAM_STORAGE_CREATE_REPORT_TYPE_FIELDS: &[&str] = &["description"]; +impl TeamStorageCreateReportType { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_description = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); + } + field_description = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } + } + } + if optional && nothing { + return Ok(None); + } + let result = TeamStorageCreateReportType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("description", &self.description)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for TeamStorageCreateReportType { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = TeamStorageCreateReportType; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a TeamStorageCreateReportType struct") + } + fn visit_map>(self, map: V) -> Result { + TeamStorageCreateReportType::internal_deserialize(map) + } + } + deserializer.deserialize_struct("TeamStorageCreateReportType", TEAM_STORAGE_CREATE_REPORT_TYPE_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for TeamStorageCreateReportType { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("TeamStorageCreateReportType", 1)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +/// Added backup phone for two-factor authentication. #[derive(Debug, Clone, PartialEq, Eq, Default)] #[non_exhaustive] // structs may have more fields added in the future. pub struct TfaAddBackupPhoneDetails { @@ -119322,7 +143288,7 @@ impl ::serde::ser::Serialize for TfaAddExceptionType { } } -/// Added security key for two-step verification. +/// Added security key for two-factor authentication. #[derive(Debug, Clone, PartialEq, Eq, Default)] #[non_exhaustive] // structs may have more fields added in the future. pub struct TfaAddSecurityKeyDetails { @@ -119456,7 +143422,7 @@ impl ::serde::ser::Serialize for TfaAddSecurityKeyType { } } -/// Changed backup phone for two-step verification. +/// Changed backup phone for two-factor authentication. #[derive(Debug, Clone, PartialEq, Eq, Default)] #[non_exhaustive] // structs may have more fields added in the future. pub struct TfaChangeBackupPhoneDetails { @@ -119590,7 +143556,7 @@ impl ::serde::ser::Serialize for TfaChangeBackupPhoneType { } } -/// Changed two-step verification setting for team. +/// Changed two-factor authentication setting for team. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. pub struct TfaChangePolicyDetails { @@ -119795,7 +143761,7 @@ impl ::serde::ser::Serialize for TfaChangePolicyType { } } -/// Enabled/disabled/changed two-step verification setting. +/// Enabled/disabled/changed two-factor authentication setting. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. pub struct TfaChangeStatusDetails { @@ -120101,7 +144067,7 @@ impl ::serde::ser::Serialize for TfaConfiguration { } } -/// Removed backup phone for two-step verification. +/// Removed backup phone for two-factor authentication. #[derive(Debug, Clone, PartialEq, Eq, Default)] #[non_exhaustive] // structs may have more fields added in the future. pub struct TfaRemoveBackupPhoneDetails { @@ -120369,7 +144335,7 @@ impl ::serde::ser::Serialize for TfaRemoveExceptionType { } } -/// Removed security key for two-step verification. +/// Removed security key for two-factor authentication. #[derive(Debug, Clone, PartialEq, Eq, Default)] #[non_exhaustive] // structs may have more fields added in the future. pub struct TfaRemoveSecurityKeyDetails { @@ -120503,7 +144469,7 @@ impl ::serde::ser::Serialize for TfaRemoveSecurityKeyType { } } -/// Reset two-step verification for team member. +/// Reset two-factor authentication for team member. #[derive(Debug, Clone, PartialEq, Eq, Default)] #[non_exhaustive] // structs may have more fields added in the future. pub struct TfaResetDetails { @@ -120754,6 +144720,265 @@ impl ::serde::ser::Serialize for TimeUnit { } } +/// Policy for deciding whether members can edit team folders at the top level of the team space +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // variants may be added in the future +pub enum TopLevelContentPolicy { + AdminsOnly, + Everyone, + /// Catch-all used for unrecognized values returned from the server. Encountering this value + /// typically indicates that this SDK version is out of date. + Other, +} + +impl<'de> ::serde::de::Deserialize<'de> for TopLevelContentPolicy { + fn deserialize>(deserializer: D) -> Result { + // union deserializer + use serde::de::{self, MapAccess, Visitor}; + struct EnumVisitor; + impl<'de> Visitor<'de> for EnumVisitor { + type Value = TopLevelContentPolicy; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a TopLevelContentPolicy structure") + } + fn visit_map>(self, mut map: V) -> Result { + let tag: &str = match map.next_key()? { + Some(".tag") => map.next_value()?, + _ => return Err(de::Error::missing_field(".tag")) + }; + let value = match tag { + "admins_only" => TopLevelContentPolicy::AdminsOnly, + "everyone" => TopLevelContentPolicy::Everyone, + _ => TopLevelContentPolicy::Other, + }; + crate::eat_json_fields(&mut map)?; + Ok(value) + } + } + const VARIANTS: &[&str] = &["admins_only", + "everyone", + "other"]; + deserializer.deserialize_struct("TopLevelContentPolicy", VARIANTS, EnumVisitor) + } +} + +impl ::serde::ser::Serialize for TopLevelContentPolicy { + fn serialize(&self, serializer: S) -> Result { + // union serializer + use serde::ser::SerializeStruct; + match self { + TopLevelContentPolicy::AdminsOnly => { + // unit + let mut s = serializer.serialize_struct("TopLevelContentPolicy", 1)?; + s.serialize_field(".tag", "admins_only")?; + s.end() + } + TopLevelContentPolicy::Everyone => { + // unit + let mut s = serializer.serialize_struct("TopLevelContentPolicy", 1)?; + s.serialize_field(".tag", "everyone")?; + s.end() + } + TopLevelContentPolicy::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) + } + } +} + +/// Changed top level content setting for team. +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct TopLevelContentPolicyChangedDetails { + /// To. + pub new_value: TopLevelContentPolicy, + /// From. + pub previous_value: TopLevelContentPolicy, +} + +impl TopLevelContentPolicyChangedDetails { + pub fn new(new_value: TopLevelContentPolicy, previous_value: TopLevelContentPolicy) -> Self { + TopLevelContentPolicyChangedDetails { + new_value, + previous_value, + } + } +} + +const TOP_LEVEL_CONTENT_POLICY_CHANGED_DETAILS_FIELDS: &[&str] = &["new_value", + "previous_value"]; +impl TopLevelContentPolicyChangedDetails { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_new_value = None; + let mut field_previous_value = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "new_value" => { + if field_new_value.is_some() { + return Err(::serde::de::Error::duplicate_field("new_value")); + } + field_new_value = Some(map.next_value()?); + } + "previous_value" => { + if field_previous_value.is_some() { + return Err(::serde::de::Error::duplicate_field("previous_value")); + } + field_previous_value = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } + } + } + if optional && nothing { + return Ok(None); + } + let result = TopLevelContentPolicyChangedDetails { + new_value: field_new_value.ok_or_else(|| ::serde::de::Error::missing_field("new_value"))?, + previous_value: field_previous_value.ok_or_else(|| ::serde::de::Error::missing_field("previous_value"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("new_value", &self.new_value)?; + s.serialize_field("previous_value", &self.previous_value)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for TopLevelContentPolicyChangedDetails { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = TopLevelContentPolicyChangedDetails; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a TopLevelContentPolicyChangedDetails struct") + } + fn visit_map>(self, map: V) -> Result { + TopLevelContentPolicyChangedDetails::internal_deserialize(map) + } + } + deserializer.deserialize_struct("TopLevelContentPolicyChangedDetails", TOP_LEVEL_CONTENT_POLICY_CHANGED_DETAILS_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for TopLevelContentPolicyChangedDetails { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("TopLevelContentPolicyChangedDetails", 2)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // structs may have more fields added in the future. +pub struct TopLevelContentPolicyChangedType { + pub description: String, +} + +impl TopLevelContentPolicyChangedType { + pub fn new(description: String) -> Self { + TopLevelContentPolicyChangedType { + description, + } + } +} + +const TOP_LEVEL_CONTENT_POLICY_CHANGED_TYPE_FIELDS: &[&str] = &["description"]; +impl TopLevelContentPolicyChangedType { + pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( + map: V, + ) -> Result { + Self::internal_deserialize_opt(map, false).map(Option::unwrap) + } + + pub(crate) fn internal_deserialize_opt<'de, V: ::serde::de::MapAccess<'de>>( + mut map: V, + optional: bool, + ) -> Result, V::Error> { + let mut field_description = None; + let mut nothing = true; + while let Some(key) = map.next_key::<&str>()? { + nothing = false; + match key { + "description" => { + if field_description.is_some() { + return Err(::serde::de::Error::duplicate_field("description")); + } + field_description = Some(map.next_value()?); + } + _ => { + // unknown field allowed and ignored + map.next_value::<::serde_json::Value>()?; + } + } + } + if optional && nothing { + return Ok(None); + } + let result = TopLevelContentPolicyChangedType { + description: field_description.ok_or_else(|| ::serde::de::Error::missing_field("description"))?, + }; + Ok(Some(result)) + } + + pub(crate) fn internal_serialize( + &self, + s: &mut S::SerializeStruct, + ) -> Result<(), S::Error> { + use serde::ser::SerializeStruct; + s.serialize_field("description", &self.description)?; + Ok(()) + } +} + +impl<'de> ::serde::de::Deserialize<'de> for TopLevelContentPolicyChangedType { + fn deserialize>(deserializer: D) -> Result { + // struct deserializer + use serde::de::{MapAccess, Visitor}; + struct StructVisitor; + impl<'de> Visitor<'de> for StructVisitor { + type Value = TopLevelContentPolicyChangedType; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a TopLevelContentPolicyChangedType struct") + } + fn visit_map>(self, map: V) -> Result { + TopLevelContentPolicyChangedType::internal_deserialize(map) + } + } + deserializer.deserialize_struct("TopLevelContentPolicyChangedType", TOP_LEVEL_CONTENT_POLICY_CHANGED_TYPE_FIELDS, StructVisitor) + } +} + +impl ::serde::ser::Serialize for TopLevelContentPolicyChangedType { + fn serialize(&self, serializer: S) -> Result { + // struct serializer + use serde::ser::SerializeStruct; + let mut s = serializer.serialize_struct("TopLevelContentPolicyChangedType", 1)?; + self.internal_serialize::(&mut s)?; + s.end() + } +} + /// User that is not a member of the team but considered trusted. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. @@ -121803,9 +146028,9 @@ impl From for AppLogInfo { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // variants may be added in the future pub enum UserLogInfo { + NonTeamMember(NonTeamMemberLogInfo), TeamMember(TeamMemberLogInfo), TrustedNonTeamMember(TrustedNonTeamMemberLogInfo), - NonTeamMember(NonTeamMemberLogInfo), /// Catch-all used for unrecognized values returned from the server. Encountering this value /// typically indicates that this SDK version is out of date. Other, @@ -121827,9 +146052,9 @@ impl<'de> ::serde::de::Deserialize<'de> for UserLogInfo { _ => return Err(de::Error::missing_field(".tag")) }; match tag { + "non_team_member" => Ok(UserLogInfo::NonTeamMember(NonTeamMemberLogInfo::internal_deserialize(map)?)), "team_member" => Ok(UserLogInfo::TeamMember(TeamMemberLogInfo::internal_deserialize(map)?)), "trusted_non_team_member" => Ok(UserLogInfo::TrustedNonTeamMember(TrustedNonTeamMemberLogInfo::internal_deserialize(map)?)), - "non_team_member" => Ok(UserLogInfo::NonTeamMember(NonTeamMemberLogInfo::internal_deserialize(map)?)), _ => { crate::eat_json_fields(&mut map)?; Ok(UserLogInfo::Other) @@ -121837,9 +146062,9 @@ impl<'de> ::serde::de::Deserialize<'de> for UserLogInfo { } } } - const VARIANTS: &[&str] = &["team_member", - "trusted_non_team_member", - "non_team_member"]; + const VARIANTS: &[&str] = &["non_team_member", + "team_member", + "trusted_non_team_member"]; deserializer.deserialize_struct("UserLogInfo", VARIANTS, EnumVisitor) } } @@ -121849,6 +146074,12 @@ impl ::serde::ser::Serialize for UserLogInfo { // polymorphic struct serializer use serde::ser::SerializeStruct; match self { + UserLogInfo::NonTeamMember(x) => { + let mut s = serializer.serialize_struct("UserLogInfo", 4)?; + s.serialize_field(".tag", "non_team_member")?; + x.internal_serialize::(&mut s)?; + s.end() + } UserLogInfo::TeamMember(x) => { let mut s = serializer.serialize_struct("UserLogInfo", 7)?; s.serialize_field(".tag", "team_member")?; @@ -121861,12 +146092,6 @@ impl ::serde::ser::Serialize for UserLogInfo { x.internal_serialize::(&mut s)?; s.end() } - UserLogInfo::NonTeamMember(x) => { - let mut s = serializer.serialize_struct("UserLogInfo", 4)?; - s.serialize_field(".tag", "non_team_member")?; - x.internal_serialize::(&mut s)?; - s.end() - } UserLogInfo::Other => Err(::serde::ser::Error::custom("cannot serialize unknown variant")) } } diff --git a/src/generated/types/team_policies.rs b/src/generated/types/team_policies.rs index a1e6d52f..69fc890a 100644 --- a/src/generated/types/team_policies.rs +++ b/src/generated/types/team_policies.rs @@ -148,6 +148,132 @@ impl ::serde::ser::Serialize for ComputerBackupPolicyState { } } +/// Policy governing default expiration date for new links shared outside the team. +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // variants may be added in the future +pub enum DefaultLinkExpirationDaysPolicy { + /// New links shared outside the team default to no expiration date. + None, + /// New links shared outside the team default to expire in one day. + Day1, + /// New links shared outside the team default to expire in three days. + Day3, + /// New links shared outside the team default to expire in seven days. + Day7, + /// New links shared outside the team default to expire in 30 days. + Day30, + /// New links shared outside the team default to expire in 90 days. + Day90, + /// New links shared outside the team default to expire in 180 days. + Day180, + /// New links shared outside the team default to expire in 365 days. + Year1, + /// Catch-all used for unrecognized values returned from the server. Encountering this value + /// typically indicates that this SDK version is out of date. + Other, +} + +impl<'de> ::serde::de::Deserialize<'de> for DefaultLinkExpirationDaysPolicy { + fn deserialize>(deserializer: D) -> Result { + // union deserializer + use serde::de::{self, MapAccess, Visitor}; + struct EnumVisitor; + impl<'de> Visitor<'de> for EnumVisitor { + type Value = DefaultLinkExpirationDaysPolicy; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a DefaultLinkExpirationDaysPolicy structure") + } + fn visit_map>(self, mut map: V) -> Result { + let tag: &str = match map.next_key()? { + Some(".tag") => map.next_value()?, + _ => return Err(de::Error::missing_field(".tag")) + }; + let value = match tag { + "none" => DefaultLinkExpirationDaysPolicy::None, + "day_1" => DefaultLinkExpirationDaysPolicy::Day1, + "day_3" => DefaultLinkExpirationDaysPolicy::Day3, + "day_7" => DefaultLinkExpirationDaysPolicy::Day7, + "day_30" => DefaultLinkExpirationDaysPolicy::Day30, + "day_90" => DefaultLinkExpirationDaysPolicy::Day90, + "day_180" => DefaultLinkExpirationDaysPolicy::Day180, + "year_1" => DefaultLinkExpirationDaysPolicy::Year1, + _ => DefaultLinkExpirationDaysPolicy::Other, + }; + crate::eat_json_fields(&mut map)?; + Ok(value) + } + } + const VARIANTS: &[&str] = &["none", + "day_1", + "day_3", + "day_7", + "day_30", + "day_90", + "day_180", + "year_1", + "other"]; + deserializer.deserialize_struct("DefaultLinkExpirationDaysPolicy", VARIANTS, EnumVisitor) + } +} + +impl ::serde::ser::Serialize for DefaultLinkExpirationDaysPolicy { + fn serialize(&self, serializer: S) -> Result { + // union serializer + use serde::ser::SerializeStruct; + match self { + DefaultLinkExpirationDaysPolicy::None => { + // unit + let mut s = serializer.serialize_struct("DefaultLinkExpirationDaysPolicy", 1)?; + s.serialize_field(".tag", "none")?; + s.end() + } + DefaultLinkExpirationDaysPolicy::Day1 => { + // unit + let mut s = serializer.serialize_struct("DefaultLinkExpirationDaysPolicy", 1)?; + s.serialize_field(".tag", "day_1")?; + s.end() + } + DefaultLinkExpirationDaysPolicy::Day3 => { + // unit + let mut s = serializer.serialize_struct("DefaultLinkExpirationDaysPolicy", 1)?; + s.serialize_field(".tag", "day_3")?; + s.end() + } + DefaultLinkExpirationDaysPolicy::Day7 => { + // unit + let mut s = serializer.serialize_struct("DefaultLinkExpirationDaysPolicy", 1)?; + s.serialize_field(".tag", "day_7")?; + s.end() + } + DefaultLinkExpirationDaysPolicy::Day30 => { + // unit + let mut s = serializer.serialize_struct("DefaultLinkExpirationDaysPolicy", 1)?; + s.serialize_field(".tag", "day_30")?; + s.end() + } + DefaultLinkExpirationDaysPolicy::Day90 => { + // unit + let mut s = serializer.serialize_struct("DefaultLinkExpirationDaysPolicy", 1)?; + s.serialize_field(".tag", "day_90")?; + s.end() + } + DefaultLinkExpirationDaysPolicy::Day180 => { + // unit + let mut s = serializer.serialize_struct("DefaultLinkExpirationDaysPolicy", 1)?; + s.serialize_field(".tag", "day_180")?; + s.end() + } + DefaultLinkExpirationDaysPolicy::Year1 => { + // unit + let mut s = serializer.serialize_struct("DefaultLinkExpirationDaysPolicy", 1)?; + s.serialize_field(".tag", "year_1")?; + s.end() + } + DefaultLinkExpirationDaysPolicy::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) + } + } +} + #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // variants may be added in the future pub enum EmmState { @@ -223,6 +349,72 @@ impl ::serde::ser::Serialize for EmmState { } } +/// Policy governing whether new links shared outside the team require passwords. +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // variants may be added in the future +pub enum EnforceLinkPasswordPolicy { + /// New links shared outside the team do not require passwords. + Optional, + /// New links shared outside the team require passwords. + Required, + /// Catch-all used for unrecognized values returned from the server. Encountering this value + /// typically indicates that this SDK version is out of date. + Other, +} + +impl<'de> ::serde::de::Deserialize<'de> for EnforceLinkPasswordPolicy { + fn deserialize>(deserializer: D) -> Result { + // union deserializer + use serde::de::{self, MapAccess, Visitor}; + struct EnumVisitor; + impl<'de> Visitor<'de> for EnumVisitor { + type Value = EnforceLinkPasswordPolicy; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a EnforceLinkPasswordPolicy structure") + } + fn visit_map>(self, mut map: V) -> Result { + let tag: &str = match map.next_key()? { + Some(".tag") => map.next_value()?, + _ => return Err(de::Error::missing_field(".tag")) + }; + let value = match tag { + "optional" => EnforceLinkPasswordPolicy::Optional, + "required" => EnforceLinkPasswordPolicy::Required, + _ => EnforceLinkPasswordPolicy::Other, + }; + crate::eat_json_fields(&mut map)?; + Ok(value) + } + } + const VARIANTS: &[&str] = &["optional", + "required", + "other"]; + deserializer.deserialize_struct("EnforceLinkPasswordPolicy", VARIANTS, EnumVisitor) + } +} + +impl ::serde::ser::Serialize for EnforceLinkPasswordPolicy { + fn serialize(&self, serializer: S) -> Result { + // union serializer + use serde::ser::SerializeStruct; + match self { + EnforceLinkPasswordPolicy::Optional => { + // unit + let mut s = serializer.serialize_struct("EnforceLinkPasswordPolicy", 1)?; + s.serialize_field(".tag", "optional")?; + s.end() + } + EnforceLinkPasswordPolicy::Required => { + // unit + let mut s = serializer.serialize_struct("EnforceLinkPasswordPolicy", 1)?; + s.serialize_field(".tag", "required")?; + s.end() + } + EnforceLinkPasswordPolicy::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) + } + } +} + #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // variants may be added in the future pub enum ExternalDriveBackupPolicyState { @@ -372,6 +564,8 @@ pub enum FileProviderMigrationPolicyState { Enabled, /// Team admin has default value based on team tier. Default, + /// Team admin has chosen to do File Provider Migration immediately for the team. + Immediate, /// Catch-all used for unrecognized values returned from the server. Encountering this value /// typically indicates that this SDK version is out of date. Other, @@ -396,6 +590,7 @@ impl<'de> ::serde::de::Deserialize<'de> for FileProviderMigrationPolicyState { "disabled" => FileProviderMigrationPolicyState::Disabled, "enabled" => FileProviderMigrationPolicyState::Enabled, "default" => FileProviderMigrationPolicyState::Default, + "immediate" => FileProviderMigrationPolicyState::Immediate, _ => FileProviderMigrationPolicyState::Other, }; crate::eat_json_fields(&mut map)?; @@ -405,6 +600,7 @@ impl<'de> ::serde::de::Deserialize<'de> for FileProviderMigrationPolicyState { const VARIANTS: &[&str] = &["disabled", "enabled", "default", + "immediate", "other"]; deserializer.deserialize_struct("FileProviderMigrationPolicyState", VARIANTS, EnumVisitor) } @@ -433,6 +629,12 @@ impl ::serde::ser::Serialize for FileProviderMigrationPolicyState { s.serialize_field(".tag", "default")?; s.end() } + FileProviderMigrationPolicyState::Immediate => { + // unit + let mut s = serializer.serialize_struct("FileProviderMigrationPolicyState", 1)?; + s.serialize_field(".tag", "immediate")?; + s.end() + } FileProviderMigrationPolicyState::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) } } @@ -901,11 +1103,15 @@ impl ::serde::ser::Serialize for PasswordControlMode { #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // variants may be added in the future pub enum PasswordStrengthPolicy { - /// User passwords will adhere to the minimal password strength policy. + /// User passwords will not adhere to a password strength policy. MinimalRequirements, - /// User passwords will adhere to the moderate password strength policy. + /// User passwords will adhere to the strong password strength policy. Note that product + /// surfaces refer to this as the strong policy but the value must be kept as is for backwards + /// compatability. ModeratePassword, - /// User passwords will adhere to the very strong password strength policy. + /// User passwords will adhere to the very strong password strength policy. Note that product + /// surfaces refer to this as the very strong policy but the value must be kept as is for + /// backwards compatability. StrongPassword, /// Catch-all used for unrecognized values returned from the server. Encountering this value /// typically indicates that this SDK version is out of date. @@ -1182,6 +1388,8 @@ pub enum SharedFolderMemberPolicy { Team, /// Anyone can be a member of a folder shared by a team member. Anyone, + /// Only a teammate and approved people can be a member of a folder shared by a team member. + TeamAndApproved, /// Catch-all used for unrecognized values returned from the server. Encountering this value /// typically indicates that this SDK version is out of date. Other, @@ -1205,6 +1413,7 @@ impl<'de> ::serde::de::Deserialize<'de> for SharedFolderMemberPolicy { let value = match tag { "team" => SharedFolderMemberPolicy::Team, "anyone" => SharedFolderMemberPolicy::Anyone, + "team_and_approved" => SharedFolderMemberPolicy::TeamAndApproved, _ => SharedFolderMemberPolicy::Other, }; crate::eat_json_fields(&mut map)?; @@ -1213,6 +1422,7 @@ impl<'de> ::serde::de::Deserialize<'de> for SharedFolderMemberPolicy { } const VARIANTS: &[&str] = &["team", "anyone", + "team_and_approved", "other"]; deserializer.deserialize_struct("SharedFolderMemberPolicy", VARIANTS, EnumVisitor) } @@ -1235,6 +1445,12 @@ impl ::serde::ser::Serialize for SharedFolderMemberPolicy { s.serialize_field(".tag", "anyone")?; s.end() } + SharedFolderMemberPolicy::TeamAndApproved => { + // unit + let mut s = serializer.serialize_struct("SharedFolderMemberPolicy", 1)?; + s.serialize_field(".tag", "team_and_approved")?; + s.end() + } SharedFolderMemberPolicy::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) } } @@ -1331,6 +1547,81 @@ impl ::serde::ser::Serialize for SharedLinkCreatePolicy { } } +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // variants may be added in the future +pub enum SharedLinkDefaultPermissionsPolicy { + /// No team default. Member defaults used instead. + Default, + /// Default to edit when creating new sharing links + Edit, + /// Default to view-only when creating new sharing links + View, + /// Catch-all used for unrecognized values returned from the server. Encountering this value + /// typically indicates that this SDK version is out of date. + Other, +} + +impl<'de> ::serde::de::Deserialize<'de> for SharedLinkDefaultPermissionsPolicy { + fn deserialize>(deserializer: D) -> Result { + // union deserializer + use serde::de::{self, MapAccess, Visitor}; + struct EnumVisitor; + impl<'de> Visitor<'de> for EnumVisitor { + type Value = SharedLinkDefaultPermissionsPolicy; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a SharedLinkDefaultPermissionsPolicy structure") + } + fn visit_map>(self, mut map: V) -> Result { + let tag: &str = match map.next_key()? { + Some(".tag") => map.next_value()?, + _ => return Err(de::Error::missing_field(".tag")) + }; + let value = match tag { + "default" => SharedLinkDefaultPermissionsPolicy::Default, + "edit" => SharedLinkDefaultPermissionsPolicy::Edit, + "view" => SharedLinkDefaultPermissionsPolicy::View, + _ => SharedLinkDefaultPermissionsPolicy::Other, + }; + crate::eat_json_fields(&mut map)?; + Ok(value) + } + } + const VARIANTS: &[&str] = &["default", + "edit", + "view", + "other"]; + deserializer.deserialize_struct("SharedLinkDefaultPermissionsPolicy", VARIANTS, EnumVisitor) + } +} + +impl ::serde::ser::Serialize for SharedLinkDefaultPermissionsPolicy { + fn serialize(&self, serializer: S) -> Result { + // union serializer + use serde::ser::SerializeStruct; + match self { + SharedLinkDefaultPermissionsPolicy::Default => { + // unit + let mut s = serializer.serialize_struct("SharedLinkDefaultPermissionsPolicy", 1)?; + s.serialize_field(".tag", "default")?; + s.end() + } + SharedLinkDefaultPermissionsPolicy::Edit => { + // unit + let mut s = serializer.serialize_struct("SharedLinkDefaultPermissionsPolicy", 1)?; + s.serialize_field(".tag", "edit")?; + s.end() + } + SharedLinkDefaultPermissionsPolicy::View => { + // unit + let mut s = serializer.serialize_struct("SharedLinkDefaultPermissionsPolicy", 1)?; + s.serialize_field(".tag", "view")?; + s.end() + } + SharedLinkDefaultPermissionsPolicy::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) + } + } +} + #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // variants may be added in the future pub enum ShowcaseDownloadPolicy { @@ -1813,6 +2104,9 @@ pub struct TeamMemberPolicies { /// The team policy on if teammembers are allowed to suggest users for admins to invite to the /// team. pub suggest_members_policy: SuggestMembersPolicy, + /// Policy for deciding whether members can edit team folders at the top level of the team + /// space. + pub top_level_content_policy: TopLevelContentPolicy, } impl TeamMemberPolicies { @@ -1821,12 +2115,14 @@ impl TeamMemberPolicies { emm_state: EmmState, office_addin: OfficeAddInPolicy, suggest_members_policy: SuggestMembersPolicy, + top_level_content_policy: TopLevelContentPolicy, ) -> Self { TeamMemberPolicies { sharing, emm_state, office_addin, suggest_members_policy, + top_level_content_policy, } } } @@ -1834,7 +2130,8 @@ impl TeamMemberPolicies { const TEAM_MEMBER_POLICIES_FIELDS: &[&str] = &["sharing", "emm_state", "office_addin", - "suggest_members_policy"]; + "suggest_members_policy", + "top_level_content_policy"]; impl TeamMemberPolicies { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, @@ -1850,6 +2147,7 @@ impl TeamMemberPolicies { let mut field_emm_state = None; let mut field_office_addin = None; let mut field_suggest_members_policy = None; + let mut field_top_level_content_policy = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; @@ -1878,6 +2176,12 @@ impl TeamMemberPolicies { } field_suggest_members_policy = Some(map.next_value()?); } + "top_level_content_policy" => { + if field_top_level_content_policy.is_some() { + return Err(::serde::de::Error::duplicate_field("top_level_content_policy")); + } + field_top_level_content_policy = Some(map.next_value()?); + } _ => { // unknown field allowed and ignored map.next_value::<::serde_json::Value>()?; @@ -1892,6 +2196,7 @@ impl TeamMemberPolicies { emm_state: field_emm_state.ok_or_else(|| ::serde::de::Error::missing_field("emm_state"))?, office_addin: field_office_addin.ok_or_else(|| ::serde::de::Error::missing_field("office_addin"))?, suggest_members_policy: field_suggest_members_policy.ok_or_else(|| ::serde::de::Error::missing_field("suggest_members_policy"))?, + top_level_content_policy: field_top_level_content_policy.ok_or_else(|| ::serde::de::Error::missing_field("top_level_content_policy"))?, }; Ok(Some(result)) } @@ -1905,6 +2210,7 @@ impl TeamMemberPolicies { s.serialize_field("emm_state", &self.emm_state)?; s.serialize_field("office_addin", &self.office_addin)?; s.serialize_field("suggest_members_policy", &self.suggest_members_policy)?; + s.serialize_field("top_level_content_policy", &self.top_level_content_policy)?; Ok(()) } } @@ -1931,7 +2237,7 @@ impl ::serde::ser::Serialize for TeamMemberPolicies { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("TeamMemberPolicies", 4)?; + let mut s = serializer.serialize_struct("TeamMemberPolicies", 5)?; self.internal_serialize::(&mut s)?; s.end() } @@ -1951,6 +2257,12 @@ pub struct TeamSharingPolicies { pub group_creation_policy: GroupCreation, /// Who can view links to content in shared folders. pub shared_folder_link_restriction_policy: SharedFolderBlanketLinkRestrictionPolicy, + /// If passwords are required for new links shared outside the team. + pub enforce_link_password_policy: EnforceLinkPasswordPolicy, + /// Default expiration date for new links shared outside the team. + pub default_link_expiration_days_policy: DefaultLinkExpirationDaysPolicy, + /// Default access level for new links shared by team members. + pub shared_link_default_permissions_policy: SharedLinkDefaultPermissionsPolicy, } impl TeamSharingPolicies { @@ -1960,6 +2272,9 @@ impl TeamSharingPolicies { shared_link_create_policy: SharedLinkCreatePolicy, group_creation_policy: GroupCreation, shared_folder_link_restriction_policy: SharedFolderBlanketLinkRestrictionPolicy, + enforce_link_password_policy: EnforceLinkPasswordPolicy, + default_link_expiration_days_policy: DefaultLinkExpirationDaysPolicy, + shared_link_default_permissions_policy: SharedLinkDefaultPermissionsPolicy, ) -> Self { TeamSharingPolicies { shared_folder_member_policy, @@ -1967,6 +2282,9 @@ impl TeamSharingPolicies { shared_link_create_policy, group_creation_policy, shared_folder_link_restriction_policy, + enforce_link_password_policy, + default_link_expiration_days_policy, + shared_link_default_permissions_policy, } } } @@ -1975,7 +2293,10 @@ const TEAM_SHARING_POLICIES_FIELDS: &[&str] = &["shared_folder_member_policy", "shared_folder_join_policy", "shared_link_create_policy", "group_creation_policy", - "shared_folder_link_restriction_policy"]; + "shared_folder_link_restriction_policy", + "enforce_link_password_policy", + "default_link_expiration_days_policy", + "shared_link_default_permissions_policy"]; impl TeamSharingPolicies { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, @@ -1992,6 +2313,9 @@ impl TeamSharingPolicies { let mut field_shared_link_create_policy = None; let mut field_group_creation_policy = None; let mut field_shared_folder_link_restriction_policy = None; + let mut field_enforce_link_password_policy = None; + let mut field_default_link_expiration_days_policy = None; + let mut field_shared_link_default_permissions_policy = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; @@ -2026,6 +2350,24 @@ impl TeamSharingPolicies { } field_shared_folder_link_restriction_policy = Some(map.next_value()?); } + "enforce_link_password_policy" => { + if field_enforce_link_password_policy.is_some() { + return Err(::serde::de::Error::duplicate_field("enforce_link_password_policy")); + } + field_enforce_link_password_policy = Some(map.next_value()?); + } + "default_link_expiration_days_policy" => { + if field_default_link_expiration_days_policy.is_some() { + return Err(::serde::de::Error::duplicate_field("default_link_expiration_days_policy")); + } + field_default_link_expiration_days_policy = Some(map.next_value()?); + } + "shared_link_default_permissions_policy" => { + if field_shared_link_default_permissions_policy.is_some() { + return Err(::serde::de::Error::duplicate_field("shared_link_default_permissions_policy")); + } + field_shared_link_default_permissions_policy = Some(map.next_value()?); + } _ => { // unknown field allowed and ignored map.next_value::<::serde_json::Value>()?; @@ -2041,6 +2383,9 @@ impl TeamSharingPolicies { shared_link_create_policy: field_shared_link_create_policy.ok_or_else(|| ::serde::de::Error::missing_field("shared_link_create_policy"))?, group_creation_policy: field_group_creation_policy.ok_or_else(|| ::serde::de::Error::missing_field("group_creation_policy"))?, shared_folder_link_restriction_policy: field_shared_folder_link_restriction_policy.ok_or_else(|| ::serde::de::Error::missing_field("shared_folder_link_restriction_policy"))?, + enforce_link_password_policy: field_enforce_link_password_policy.ok_or_else(|| ::serde::de::Error::missing_field("enforce_link_password_policy"))?, + default_link_expiration_days_policy: field_default_link_expiration_days_policy.ok_or_else(|| ::serde::de::Error::missing_field("default_link_expiration_days_policy"))?, + shared_link_default_permissions_policy: field_shared_link_default_permissions_policy.ok_or_else(|| ::serde::de::Error::missing_field("shared_link_default_permissions_policy"))?, }; Ok(Some(result)) } @@ -2055,6 +2400,9 @@ impl TeamSharingPolicies { s.serialize_field("shared_link_create_policy", &self.shared_link_create_policy)?; s.serialize_field("group_creation_policy", &self.group_creation_policy)?; s.serialize_field("shared_folder_link_restriction_policy", &self.shared_folder_link_restriction_policy)?; + s.serialize_field("enforce_link_password_policy", &self.enforce_link_password_policy)?; + s.serialize_field("default_link_expiration_days_policy", &self.default_link_expiration_days_policy)?; + s.serialize_field("shared_link_default_permissions_policy", &self.shared_link_default_permissions_policy)?; Ok(()) } } @@ -2081,12 +2429,77 @@ impl ::serde::ser::Serialize for TeamSharingPolicies { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("TeamSharingPolicies", 5)?; + let mut s = serializer.serialize_struct("TeamSharingPolicies", 8)?; self.internal_serialize::(&mut s)?; s.end() } } +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // variants may be added in the future +pub enum TopLevelContentPolicy { + /// Only admins can edit team folders at the top level of the team space. + AdminOnly, + /// Everyone on the team can edit team folders at the top level of the team space. + Everyone, + /// Catch-all used for unrecognized values returned from the server. Encountering this value + /// typically indicates that this SDK version is out of date. + Other, +} + +impl<'de> ::serde::de::Deserialize<'de> for TopLevelContentPolicy { + fn deserialize>(deserializer: D) -> Result { + // union deserializer + use serde::de::{self, MapAccess, Visitor}; + struct EnumVisitor; + impl<'de> Visitor<'de> for EnumVisitor { + type Value = TopLevelContentPolicy; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a TopLevelContentPolicy structure") + } + fn visit_map>(self, mut map: V) -> Result { + let tag: &str = match map.next_key()? { + Some(".tag") => map.next_value()?, + _ => return Err(de::Error::missing_field(".tag")) + }; + let value = match tag { + "admin_only" => TopLevelContentPolicy::AdminOnly, + "everyone" => TopLevelContentPolicy::Everyone, + _ => TopLevelContentPolicy::Other, + }; + crate::eat_json_fields(&mut map)?; + Ok(value) + } + } + const VARIANTS: &[&str] = &["admin_only", + "everyone", + "other"]; + deserializer.deserialize_struct("TopLevelContentPolicy", VARIANTS, EnumVisitor) + } +} + +impl ::serde::ser::Serialize for TopLevelContentPolicy { + fn serialize(&self, serializer: S) -> Result { + // union serializer + use serde::ser::SerializeStruct; + match self { + TopLevelContentPolicy::AdminOnly => { + // unit + let mut s = serializer.serialize_struct("TopLevelContentPolicy", 1)?; + s.serialize_field(".tag", "admin_only")?; + s.end() + } + TopLevelContentPolicy::Everyone => { + // unit + let mut s = serializer.serialize_struct("TopLevelContentPolicy", 1)?; + s.serialize_field(".tag", "everyone")?; + s.end() + } + TopLevelContentPolicy::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) + } + } +} + #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // variants may be added in the future pub enum TwoStepVerificationPolicy { diff --git a/src/generated/types/users.rs b/src/generated/types/users.rs index 0a537050..774f9d18 100644 --- a/src/generated/types/users.rs +++ b/src/generated/types/users.rs @@ -404,6 +404,70 @@ impl From for Account { } } } +/// The value for [`UserFeature::DistinctMemberHome`]. +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // variants may be added in the future +pub enum DistinctMemberHomeValue { + /// When this value is True, the user have distinct home and root ns. When the value is False + /// the user's home ns and root ns are the same. + Enabled(bool), + /// Catch-all used for unrecognized values returned from the server. Encountering this value + /// typically indicates that this SDK version is out of date. + Other, +} + +impl<'de> ::serde::de::Deserialize<'de> for DistinctMemberHomeValue { + fn deserialize>(deserializer: D) -> Result { + // union deserializer + use serde::de::{self, MapAccess, Visitor}; + struct EnumVisitor; + impl<'de> Visitor<'de> for EnumVisitor { + type Value = DistinctMemberHomeValue; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a DistinctMemberHomeValue structure") + } + fn visit_map>(self, mut map: V) -> Result { + let tag: &str = match map.next_key()? { + Some(".tag") => map.next_value()?, + _ => return Err(de::Error::missing_field(".tag")) + }; + let value = match tag { + "enabled" => { + match map.next_key()? { + Some("enabled") => DistinctMemberHomeValue::Enabled(map.next_value()?), + None => return Err(de::Error::missing_field("enabled")), + _ => return Err(de::Error::unknown_field(tag, VARIANTS)) + } + } + _ => DistinctMemberHomeValue::Other, + }; + crate::eat_json_fields(&mut map)?; + Ok(value) + } + } + const VARIANTS: &[&str] = &["enabled", + "other"]; + deserializer.deserialize_struct("DistinctMemberHomeValue", VARIANTS, EnumVisitor) + } +} + +impl ::serde::ser::Serialize for DistinctMemberHomeValue { + fn serialize(&self, serializer: S) -> Result { + // union serializer + use serde::ser::SerializeStruct; + match self { + DistinctMemberHomeValue::Enabled(x) => { + // primitive + let mut s = serializer.serialize_struct("DistinctMemberHomeValue", 2)?; + s.serialize_field(".tag", "enabled")?; + s.serialize_field("enabled", x)?; + s.end() + } + DistinctMemberHomeValue::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) + } + } +} + /// The value for [`UserFeature::FileLocking`]. #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // variants may be added in the future @@ -798,6 +862,9 @@ pub struct FullTeam { pub sharing_policies: crate::types::team_policies::TeamSharingPolicies, /// Team policy governing the use of the Office Add-In. pub office_addin_policy: crate::types::team_policies::OfficeAddInPolicy, + /// Team policy governing whether members can edit team folders at the top level of the team + /// space. + pub top_level_content_policy: crate::types::team_policies::TopLevelContentPolicy, } impl FullTeam { @@ -806,12 +873,14 @@ impl FullTeam { name: String, sharing_policies: crate::types::team_policies::TeamSharingPolicies, office_addin_policy: crate::types::team_policies::OfficeAddInPolicy, + top_level_content_policy: crate::types::team_policies::TopLevelContentPolicy, ) -> Self { FullTeam { id, name, sharing_policies, office_addin_policy, + top_level_content_policy, } } } @@ -819,7 +888,8 @@ impl FullTeam { const FULL_TEAM_FIELDS: &[&str] = &["id", "name", "sharing_policies", - "office_addin_policy"]; + "office_addin_policy", + "top_level_content_policy"]; impl FullTeam { pub(crate) fn internal_deserialize<'de, V: ::serde::de::MapAccess<'de>>( map: V, @@ -835,6 +905,7 @@ impl FullTeam { let mut field_name = None; let mut field_sharing_policies = None; let mut field_office_addin_policy = None; + let mut field_top_level_content_policy = None; let mut nothing = true; while let Some(key) = map.next_key::<&str>()? { nothing = false; @@ -863,6 +934,12 @@ impl FullTeam { } field_office_addin_policy = Some(map.next_value()?); } + "top_level_content_policy" => { + if field_top_level_content_policy.is_some() { + return Err(::serde::de::Error::duplicate_field("top_level_content_policy")); + } + field_top_level_content_policy = Some(map.next_value()?); + } _ => { // unknown field allowed and ignored map.next_value::<::serde_json::Value>()?; @@ -877,6 +954,7 @@ impl FullTeam { name: field_name.ok_or_else(|| ::serde::de::Error::missing_field("name"))?, sharing_policies: field_sharing_policies.ok_or_else(|| ::serde::de::Error::missing_field("sharing_policies"))?, office_addin_policy: field_office_addin_policy.ok_or_else(|| ::serde::de::Error::missing_field("office_addin_policy"))?, + top_level_content_policy: field_top_level_content_policy.ok_or_else(|| ::serde::de::Error::missing_field("top_level_content_policy"))?, }; Ok(Some(result)) } @@ -890,6 +968,7 @@ impl FullTeam { s.serialize_field("name", &self.name)?; s.serialize_field("sharing_policies", &self.sharing_policies)?; s.serialize_field("office_addin_policy", &self.office_addin_policy)?; + s.serialize_field("top_level_content_policy", &self.top_level_content_policy)?; Ok(()) } } @@ -916,7 +995,7 @@ impl ::serde::ser::Serialize for FullTeam { fn serialize(&self, serializer: S) -> Result { // struct serializer use serde::ser::SerializeStruct; - let mut s = serializer.serialize_struct("FullTeam", 4)?; + let mut s = serializer.serialize_struct("FullTeam", 5)?; self.internal_serialize::(&mut s)?; s.end() } @@ -1838,6 +1917,70 @@ impl ::serde::ser::Serialize for Team { } } +/// The value for [`UserFeature::TeamSharedDropbox`]. +#[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] // variants may be added in the future +pub enum TeamSharedDropboxValue { + /// When this value is True, the user have a shared team root. When the value is False the user + /// have distinct root. + Enabled(bool), + /// Catch-all used for unrecognized values returned from the server. Encountering this value + /// typically indicates that this SDK version is out of date. + Other, +} + +impl<'de> ::serde::de::Deserialize<'de> for TeamSharedDropboxValue { + fn deserialize>(deserializer: D) -> Result { + // union deserializer + use serde::de::{self, MapAccess, Visitor}; + struct EnumVisitor; + impl<'de> Visitor<'de> for EnumVisitor { + type Value = TeamSharedDropboxValue; + fn expecting(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + f.write_str("a TeamSharedDropboxValue structure") + } + fn visit_map>(self, mut map: V) -> Result { + let tag: &str = match map.next_key()? { + Some(".tag") => map.next_value()?, + _ => return Err(de::Error::missing_field(".tag")) + }; + let value = match tag { + "enabled" => { + match map.next_key()? { + Some("enabled") => TeamSharedDropboxValue::Enabled(map.next_value()?), + None => return Err(de::Error::missing_field("enabled")), + _ => return Err(de::Error::unknown_field(tag, VARIANTS)) + } + } + _ => TeamSharedDropboxValue::Other, + }; + crate::eat_json_fields(&mut map)?; + Ok(value) + } + } + const VARIANTS: &[&str] = &["enabled", + "other"]; + deserializer.deserialize_struct("TeamSharedDropboxValue", VARIANTS, EnumVisitor) + } +} + +impl ::serde::ser::Serialize for TeamSharedDropboxValue { + fn serialize(&self, serializer: S) -> Result { + // union serializer + use serde::ser::SerializeStruct; + match self { + TeamSharedDropboxValue::Enabled(x) => { + // primitive + let mut s = serializer.serialize_struct("TeamSharedDropboxValue", 2)?; + s.serialize_field(".tag", "enabled")?; + s.serialize_field("enabled", x)?; + s.end() + } + TeamSharedDropboxValue::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) + } + } +} + #[derive(Debug, Clone, PartialEq, Eq)] #[non_exhaustive] // structs may have more fields added in the future. pub struct TeamSpaceAllocation { @@ -1996,6 +2139,12 @@ pub enum UserFeature { PaperAsFiles, /// This feature allows users to lock files in order to restrict other users from editing them. FileLocking, + /// This feature contains information about whether or not the user is part of a team with a + /// shared team root. + TeamSharedDropbox, + /// This feature contains information about whether or not the user's home namespace is distinct + /// from their root namespace. + DistinctMemberHome, /// Catch-all used for unrecognized values returned from the server. Encountering this value /// typically indicates that this SDK version is out of date. Other, @@ -2019,6 +2168,8 @@ impl<'de> ::serde::de::Deserialize<'de> for UserFeature { let value = match tag { "paper_as_files" => UserFeature::PaperAsFiles, "file_locking" => UserFeature::FileLocking, + "team_shared_dropbox" => UserFeature::TeamSharedDropbox, + "distinct_member_home" => UserFeature::DistinctMemberHome, _ => UserFeature::Other, }; crate::eat_json_fields(&mut map)?; @@ -2027,6 +2178,8 @@ impl<'de> ::serde::de::Deserialize<'de> for UserFeature { } const VARIANTS: &[&str] = &["paper_as_files", "file_locking", + "team_shared_dropbox", + "distinct_member_home", "other"]; deserializer.deserialize_struct("UserFeature", VARIANTS, EnumVisitor) } @@ -2049,6 +2202,18 @@ impl ::serde::ser::Serialize for UserFeature { s.serialize_field(".tag", "file_locking")?; s.end() } + UserFeature::TeamSharedDropbox => { + // unit + let mut s = serializer.serialize_struct("UserFeature", 1)?; + s.serialize_field(".tag", "team_shared_dropbox")?; + s.end() + } + UserFeature::DistinctMemberHome => { + // unit + let mut s = serializer.serialize_struct("UserFeature", 1)?; + s.serialize_field(".tag", "distinct_member_home")?; + s.end() + } UserFeature::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) } } @@ -2060,6 +2225,8 @@ impl ::serde::ser::Serialize for UserFeature { pub enum UserFeatureValue { PaperAsFiles(PaperAsFilesValue), FileLocking(FileLockingValue), + TeamSharedDropbox(TeamSharedDropboxValue), + DistinctMemberHome(DistinctMemberHomeValue), /// Catch-all used for unrecognized values returned from the server. Encountering this value /// typically indicates that this SDK version is out of date. Other, @@ -2095,6 +2262,20 @@ impl<'de> ::serde::de::Deserialize<'de> for UserFeatureValue { _ => return Err(de::Error::unknown_field(tag, VARIANTS)) } } + "team_shared_dropbox" => { + match map.next_key()? { + Some("team_shared_dropbox") => UserFeatureValue::TeamSharedDropbox(map.next_value()?), + None => return Err(de::Error::missing_field("team_shared_dropbox")), + _ => return Err(de::Error::unknown_field(tag, VARIANTS)) + } + } + "distinct_member_home" => { + match map.next_key()? { + Some("distinct_member_home") => UserFeatureValue::DistinctMemberHome(map.next_value()?), + None => return Err(de::Error::missing_field("distinct_member_home")), + _ => return Err(de::Error::unknown_field(tag, VARIANTS)) + } + } _ => UserFeatureValue::Other, }; crate::eat_json_fields(&mut map)?; @@ -2103,6 +2284,8 @@ impl<'de> ::serde::de::Deserialize<'de> for UserFeatureValue { } const VARIANTS: &[&str] = &["paper_as_files", "file_locking", + "team_shared_dropbox", + "distinct_member_home", "other"]; deserializer.deserialize_struct("UserFeatureValue", VARIANTS, EnumVisitor) } @@ -2127,6 +2310,20 @@ impl ::serde::ser::Serialize for UserFeatureValue { s.serialize_field("file_locking", x)?; s.end() } + UserFeatureValue::TeamSharedDropbox(x) => { + // union or polymporphic struct + let mut s = serializer.serialize_struct("UserFeatureValue", 2)?; + s.serialize_field(".tag", "team_shared_dropbox")?; + s.serialize_field("team_shared_dropbox", x)?; + s.end() + } + UserFeatureValue::DistinctMemberHome(x) => { + // union or polymporphic struct + let mut s = serializer.serialize_struct("UserFeatureValue", 2)?; + s.serialize_field(".tag", "distinct_member_home")?; + s.serialize_field("distinct_member_home", x)?; + s.end() + } UserFeatureValue::Other => Err(::serde::ser::Error::custom("cannot serialize 'Other' variant")) } }