# Copyright 2015 Google Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. require 'date' require 'google/apis/core/base_service' require 'google/apis/core/json_representation' require 'google/apis/core/hashable' require 'google/apis/errors' module Google module Apis module DriveV2 # An item with user information and settings. class About include Google::Apis::Core::Hashable # Information about supported additional roles per file type. The most specific # type takes precedence. # Corresponds to the JSON property `additionalRoleInfo` # @return [Array] attr_accessor :additional_role_info # Whether the user can create shared drives. # Corresponds to the JSON property `canCreateDrives` # @return [Boolean] attr_accessor :can_create_drives alias_method :can_create_drives?, :can_create_drives # Deprecated - use canCreateDrives instead. # Corresponds to the JSON property `canCreateTeamDrives` # @return [Boolean] attr_accessor :can_create_team_drives alias_method :can_create_team_drives?, :can_create_team_drives # The domain sharing policy for the current user. Possible values are: # - allowed # - allowedWithWarning # - incomingOnly # - disallowed # Corresponds to the JSON property `domainSharingPolicy` # @return [String] attr_accessor :domain_sharing_policy # A list of themes that are supported for shared drives. # Corresponds to the JSON property `driveThemes` # @return [Array] attr_accessor :drive_themes # The ETag of the item. # Corresponds to the JSON property `etag` # @return [String] attr_accessor :etag # The allowable export formats. # Corresponds to the JSON property `exportFormats` # @return [Array] attr_accessor :export_formats # List of additional features enabled on this account. # Corresponds to the JSON property `features` # @return [Array] attr_accessor :features # The palette of allowable folder colors as RGB hex strings. # Corresponds to the JSON property `folderColorPalette` # @return [Array] attr_accessor :folder_color_palette # The allowable import formats. # Corresponds to the JSON property `importFormats` # @return [Array] attr_accessor :import_formats # A boolean indicating whether the authenticated app is installed by the # authenticated user. # Corresponds to the JSON property `isCurrentAppInstalled` # @return [Boolean] attr_accessor :is_current_app_installed alias_method :is_current_app_installed?, :is_current_app_installed # This is always drive#about. # Corresponds to the JSON property `kind` # @return [String] attr_accessor :kind # The user's language or locale code, as defined by BCP 47, with some extensions # from Unicode's LDML format (http://www.unicode.org/reports/tr35/). # Corresponds to the JSON property `languageCode` # @return [String] attr_accessor :language_code # The largest change id. # Corresponds to the JSON property `largestChangeId` # @return [Fixnum] attr_accessor :largest_change_id # List of max upload sizes for each file type. The most specific type takes # precedence. # Corresponds to the JSON property `maxUploadSizes` # @return [Array] attr_accessor :max_upload_sizes # The name of the current user. # Corresponds to the JSON property `name` # @return [String] attr_accessor :name # The current user's ID as visible in the permissions collection. # Corresponds to the JSON property `permissionId` # @return [String] attr_accessor :permission_id # The amount of storage quota used by different Google services. # Corresponds to the JSON property `quotaBytesByService` # @return [Array] attr_accessor :quota_bytes_by_service # The total number of quota bytes. This is only relevant when quotaType is # LIMITED. # Corresponds to the JSON property `quotaBytesTotal` # @return [Fixnum] attr_accessor :quota_bytes_total # The number of quota bytes used by Google Drive. # Corresponds to the JSON property `quotaBytesUsed` # @return [Fixnum] attr_accessor :quota_bytes_used # The number of quota bytes used by all Google apps (Drive, Picasa, etc.). # Corresponds to the JSON property `quotaBytesUsedAggregate` # @return [Fixnum] attr_accessor :quota_bytes_used_aggregate # The number of quota bytes used by trashed items. # Corresponds to the JSON property `quotaBytesUsedInTrash` # @return [Fixnum] attr_accessor :quota_bytes_used_in_trash # The type of the user's storage quota. Possible values are: # - LIMITED # - UNLIMITED # Corresponds to the JSON property `quotaType` # @return [String] attr_accessor :quota_type # The number of remaining change ids, limited to no more than 2500. # Corresponds to the JSON property `remainingChangeIds` # @return [Fixnum] attr_accessor :remaining_change_ids # The id of the root folder. # Corresponds to the JSON property `rootFolderId` # @return [String] attr_accessor :root_folder_id # A link back to this item. # Corresponds to the JSON property `selfLink` # @return [String] attr_accessor :self_link # Deprecated - use driveThemes instead. # Corresponds to the JSON property `teamDriveThemes` # @return [Array] attr_accessor :team_drive_themes # Information about a Drive user. # Corresponds to the JSON property `user` # @return [Google::Apis::DriveV2::User] attr_accessor :user def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @additional_role_info = args[:additional_role_info] if args.key?(:additional_role_info) @can_create_drives = args[:can_create_drives] if args.key?(:can_create_drives) @can_create_team_drives = args[:can_create_team_drives] if args.key?(:can_create_team_drives) @domain_sharing_policy = args[:domain_sharing_policy] if args.key?(:domain_sharing_policy) @drive_themes = args[:drive_themes] if args.key?(:drive_themes) @etag = args[:etag] if args.key?(:etag) @export_formats = args[:export_formats] if args.key?(:export_formats) @features = args[:features] if args.key?(:features) @folder_color_palette = args[:folder_color_palette] if args.key?(:folder_color_palette) @import_formats = args[:import_formats] if args.key?(:import_formats) @is_current_app_installed = args[:is_current_app_installed] if args.key?(:is_current_app_installed) @kind = args[:kind] if args.key?(:kind) @language_code = args[:language_code] if args.key?(:language_code) @largest_change_id = args[:largest_change_id] if args.key?(:largest_change_id) @max_upload_sizes = args[:max_upload_sizes] if args.key?(:max_upload_sizes) @name = args[:name] if args.key?(:name) @permission_id = args[:permission_id] if args.key?(:permission_id) @quota_bytes_by_service = args[:quota_bytes_by_service] if args.key?(:quota_bytes_by_service) @quota_bytes_total = args[:quota_bytes_total] if args.key?(:quota_bytes_total) @quota_bytes_used = args[:quota_bytes_used] if args.key?(:quota_bytes_used) @quota_bytes_used_aggregate = args[:quota_bytes_used_aggregate] if args.key?(:quota_bytes_used_aggregate) @quota_bytes_used_in_trash = args[:quota_bytes_used_in_trash] if args.key?(:quota_bytes_used_in_trash) @quota_type = args[:quota_type] if args.key?(:quota_type) @remaining_change_ids = args[:remaining_change_ids] if args.key?(:remaining_change_ids) @root_folder_id = args[:root_folder_id] if args.key?(:root_folder_id) @self_link = args[:self_link] if args.key?(:self_link) @team_drive_themes = args[:team_drive_themes] if args.key?(:team_drive_themes) @user = args[:user] if args.key?(:user) end # class AdditionalRoleInfo include Google::Apis::Core::Hashable # The supported additional roles per primary role. # Corresponds to the JSON property `roleSets` # @return [Array] attr_accessor :role_sets # The content type that this additional role info applies to. # Corresponds to the JSON property `type` # @return [String] attr_accessor :type def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @role_sets = args[:role_sets] if args.key?(:role_sets) @type = args[:type] if args.key?(:type) end # class RoleSet include Google::Apis::Core::Hashable # The supported additional roles with the primary role. # Corresponds to the JSON property `additionalRoles` # @return [Array] attr_accessor :additional_roles # A primary permission role. # Corresponds to the JSON property `primaryRole` # @return [String] attr_accessor :primary_role def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @additional_roles = args[:additional_roles] if args.key?(:additional_roles) @primary_role = args[:primary_role] if args.key?(:primary_role) end end end # class DriveTheme include Google::Apis::Core::Hashable # A link to this theme's background image. # Corresponds to the JSON property `backgroundImageLink` # @return [String] attr_accessor :background_image_link # The color of this theme as an RGB hex string. # Corresponds to the JSON property `colorRgb` # @return [String] attr_accessor :color_rgb # The ID of the theme. # Corresponds to the JSON property `id` # @return [String] attr_accessor :id def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @background_image_link = args[:background_image_link] if args.key?(:background_image_link) @color_rgb = args[:color_rgb] if args.key?(:color_rgb) @id = args[:id] if args.key?(:id) end end # class ExportFormat include Google::Apis::Core::Hashable # The content type to convert from. # Corresponds to the JSON property `source` # @return [String] attr_accessor :source # The possible content types to convert to. # Corresponds to the JSON property `targets` # @return [Array] attr_accessor :targets def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @source = args[:source] if args.key?(:source) @targets = args[:targets] if args.key?(:targets) end end # class Feature include Google::Apis::Core::Hashable # The name of the feature. # Corresponds to the JSON property `featureName` # @return [String] attr_accessor :feature_name # The request limit rate for this feature, in queries per second. # Corresponds to the JSON property `featureRate` # @return [Float] attr_accessor :feature_rate def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @feature_name = args[:feature_name] if args.key?(:feature_name) @feature_rate = args[:feature_rate] if args.key?(:feature_rate) end end # class ImportFormat include Google::Apis::Core::Hashable # The imported file's content type to convert from. # Corresponds to the JSON property `source` # @return [String] attr_accessor :source # The possible content types to convert to. # Corresponds to the JSON property `targets` # @return [Array] attr_accessor :targets def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @source = args[:source] if args.key?(:source) @targets = args[:targets] if args.key?(:targets) end end # class MaxUploadSize include Google::Apis::Core::Hashable # The max upload size for this type. # Corresponds to the JSON property `size` # @return [Fixnum] attr_accessor :size # The file type. # Corresponds to the JSON property `type` # @return [String] attr_accessor :type def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @size = args[:size] if args.key?(:size) @type = args[:type] if args.key?(:type) end end # class QuotaBytesByService include Google::Apis::Core::Hashable # The storage quota bytes used by the service. # Corresponds to the JSON property `bytesUsed` # @return [Fixnum] attr_accessor :bytes_used # The service's name, e.g. DRIVE, GMAIL, or PHOTOS. # Corresponds to the JSON property `serviceName` # @return [String] attr_accessor :service_name def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @bytes_used = args[:bytes_used] if args.key?(:bytes_used) @service_name = args[:service_name] if args.key?(:service_name) end end # class TeamDriveTheme include Google::Apis::Core::Hashable # Deprecated - use driveThemes/backgroundImageLink instead. # Corresponds to the JSON property `backgroundImageLink` # @return [String] attr_accessor :background_image_link # Deprecated - use driveThemes/colorRgb instead. # Corresponds to the JSON property `colorRgb` # @return [String] attr_accessor :color_rgb # Deprecated - use driveThemes/id instead. # Corresponds to the JSON property `id` # @return [String] attr_accessor :id def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @background_image_link = args[:background_image_link] if args.key?(:background_image_link) @color_rgb = args[:color_rgb] if args.key?(:color_rgb) @id = args[:id] if args.key?(:id) end end end # The apps resource provides a list of the apps that a user has installed, with # information about each app's supported MIME types, file extensions, and other # details. class App include Google::Apis::Core::Hashable # Whether the app is authorized to access data on the user's Drive. # Corresponds to the JSON property `authorized` # @return [Boolean] attr_accessor :authorized alias_method :authorized?, :authorized # The template url to create a new file with this app in a given folder. The # template will contain `folderId` to be replaced by the folder to create the # new file in. # Corresponds to the JSON property `createInFolderTemplate` # @return [String] attr_accessor :create_in_folder_template # The url to create a new file with this app. # Corresponds to the JSON property `createUrl` # @return [String] attr_accessor :create_url # Whether the app has drive-wide scope. An app with drive-wide scope can access # all files in the user's drive. # Corresponds to the JSON property `hasDriveWideScope` # @return [Boolean] attr_accessor :has_drive_wide_scope alias_method :has_drive_wide_scope?, :has_drive_wide_scope # The various icons for the app. # Corresponds to the JSON property `icons` # @return [Array] attr_accessor :icons # The ID of the app. # Corresponds to the JSON property `id` # @return [String] attr_accessor :id # Whether the app is installed. # Corresponds to the JSON property `installed` # @return [Boolean] attr_accessor :installed alias_method :installed?, :installed # This is always drive#app. # Corresponds to the JSON property `kind` # @return [String] attr_accessor :kind # A long description of the app. # Corresponds to the JSON property `longDescription` # @return [String] attr_accessor :long_description # The name of the app. # Corresponds to the JSON property `name` # @return [String] attr_accessor :name # The type of object this app creates (e.g. Chart). If empty, the app name # should be used instead. # Corresponds to the JSON property `objectType` # @return [String] attr_accessor :object_type # The template url for opening files with this app. The template will contain ` # ids` and/or `exportIds` to be replaced by the actual file ids. See Open Files # for the full documentation. # Corresponds to the JSON property `openUrlTemplate` # @return [String] attr_accessor :open_url_template # The list of primary file extensions. # Corresponds to the JSON property `primaryFileExtensions` # @return [Array] attr_accessor :primary_file_extensions # The list of primary mime types. # Corresponds to the JSON property `primaryMimeTypes` # @return [Array] attr_accessor :primary_mime_types # The ID of the product listing for this app. # Corresponds to the JSON property `productId` # @return [String] attr_accessor :product_id # A link to the product listing for this app. # Corresponds to the JSON property `productUrl` # @return [String] attr_accessor :product_url # The list of secondary file extensions. # Corresponds to the JSON property `secondaryFileExtensions` # @return [Array] attr_accessor :secondary_file_extensions # The list of secondary mime types. # Corresponds to the JSON property `secondaryMimeTypes` # @return [Array] attr_accessor :secondary_mime_types # A short description of the app. # Corresponds to the JSON property `shortDescription` # @return [String] attr_accessor :short_description # Whether this app supports creating new objects. # Corresponds to the JSON property `supportsCreate` # @return [Boolean] attr_accessor :supports_create alias_method :supports_create?, :supports_create # Whether this app supports importing from Docs Editors. # Corresponds to the JSON property `supportsImport` # @return [Boolean] attr_accessor :supports_import alias_method :supports_import?, :supports_import # Whether this app supports opening more than one file. # Corresponds to the JSON property `supportsMultiOpen` # @return [Boolean] attr_accessor :supports_multi_open alias_method :supports_multi_open?, :supports_multi_open # Whether this app supports creating new files when offline. # Corresponds to the JSON property `supportsOfflineCreate` # @return [Boolean] attr_accessor :supports_offline_create alias_method :supports_offline_create?, :supports_offline_create # Whether the app is selected as the default handler for the types it supports. # Corresponds to the JSON property `useByDefault` # @return [Boolean] attr_accessor :use_by_default alias_method :use_by_default?, :use_by_default def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @authorized = args[:authorized] if args.key?(:authorized) @create_in_folder_template = args[:create_in_folder_template] if args.key?(:create_in_folder_template) @create_url = args[:create_url] if args.key?(:create_url) @has_drive_wide_scope = args[:has_drive_wide_scope] if args.key?(:has_drive_wide_scope) @icons = args[:icons] if args.key?(:icons) @id = args[:id] if args.key?(:id) @installed = args[:installed] if args.key?(:installed) @kind = args[:kind] if args.key?(:kind) @long_description = args[:long_description] if args.key?(:long_description) @name = args[:name] if args.key?(:name) @object_type = args[:object_type] if args.key?(:object_type) @open_url_template = args[:open_url_template] if args.key?(:open_url_template) @primary_file_extensions = args[:primary_file_extensions] if args.key?(:primary_file_extensions) @primary_mime_types = args[:primary_mime_types] if args.key?(:primary_mime_types) @product_id = args[:product_id] if args.key?(:product_id) @product_url = args[:product_url] if args.key?(:product_url) @secondary_file_extensions = args[:secondary_file_extensions] if args.key?(:secondary_file_extensions) @secondary_mime_types = args[:secondary_mime_types] if args.key?(:secondary_mime_types) @short_description = args[:short_description] if args.key?(:short_description) @supports_create = args[:supports_create] if args.key?(:supports_create) @supports_import = args[:supports_import] if args.key?(:supports_import) @supports_multi_open = args[:supports_multi_open] if args.key?(:supports_multi_open) @supports_offline_create = args[:supports_offline_create] if args.key?(:supports_offline_create) @use_by_default = args[:use_by_default] if args.key?(:use_by_default) end # class Icon include Google::Apis::Core::Hashable # Category of the icon. Allowed values are: # - application - icon for the application # - document - icon for a file associated with the app # - documentShared - icon for a shared file associated with the app # Corresponds to the JSON property `category` # @return [String] attr_accessor :category # URL for the icon. # Corresponds to the JSON property `iconUrl` # @return [String] attr_accessor :icon_url # Size of the icon. Represented as the maximum of the width and height. # Corresponds to the JSON property `size` # @return [Fixnum] attr_accessor :size def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @category = args[:category] if args.key?(:category) @icon_url = args[:icon_url] if args.key?(:icon_url) @size = args[:size] if args.key?(:size) end end end # A list of third-party applications which the user has installed or given # access to Google Drive. class AppList include Google::Apis::Core::Hashable # List of app IDs that the user has specified to use by default. The list is in # reverse-priority order (lowest to highest). # Corresponds to the JSON property `defaultAppIds` # @return [Array] attr_accessor :default_app_ids # The ETag of the list. # Corresponds to the JSON property `etag` # @return [String] attr_accessor :etag # The list of apps. # Corresponds to the JSON property `items` # @return [Array] attr_accessor :items # This is always drive#appList. # Corresponds to the JSON property `kind` # @return [String] attr_accessor :kind # A link back to this list. # Corresponds to the JSON property `selfLink` # @return [String] attr_accessor :self_link def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @default_app_ids = args[:default_app_ids] if args.key?(:default_app_ids) @etag = args[:etag] if args.key?(:etag) @items = args[:items] if args.key?(:items) @kind = args[:kind] if args.key?(:kind) @self_link = args[:self_link] if args.key?(:self_link) end end # Representation of a change to a file or shared drive. class Change include Google::Apis::Core::Hashable # The type of the change. Possible values are file and drive. # Corresponds to the JSON property `changeType` # @return [String] attr_accessor :change_type # Whether the file or shared drive has been removed from this list of changes, # for example by deletion or loss of access. # Corresponds to the JSON property `deleted` # @return [Boolean] attr_accessor :deleted alias_method :deleted?, :deleted # Representation of a shared drive. # Corresponds to the JSON property `drive` # @return [Google::Apis::DriveV2::Drive] attr_accessor :drive # The ID of the shared drive associated with this change. # Corresponds to the JSON property `driveId` # @return [String] attr_accessor :drive_id # The metadata for a file. # Corresponds to the JSON property `file` # @return [Google::Apis::DriveV2::File] attr_accessor :file # The ID of the file associated with this change. # Corresponds to the JSON property `fileId` # @return [String] attr_accessor :file_id # The ID of the change. # Corresponds to the JSON property `id` # @return [Fixnum] attr_accessor :id # This is always drive#change. # Corresponds to the JSON property `kind` # @return [String] attr_accessor :kind # The time of this modification. # Corresponds to the JSON property `modificationDate` # @return [DateTime] attr_accessor :modification_date # A link back to this change. # Corresponds to the JSON property `selfLink` # @return [String] attr_accessor :self_link # Deprecated: use the drive collection instead. # Corresponds to the JSON property `teamDrive` # @return [Google::Apis::DriveV2::TeamDrive] attr_accessor :team_drive # Deprecated - use driveId instead. # Corresponds to the JSON property `teamDriveId` # @return [String] attr_accessor :team_drive_id # Deprecated - use changeType instead. # Corresponds to the JSON property `type` # @return [String] attr_accessor :type def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @change_type = args[:change_type] if args.key?(:change_type) @deleted = args[:deleted] if args.key?(:deleted) @drive = args[:drive] if args.key?(:drive) @drive_id = args[:drive_id] if args.key?(:drive_id) @file = args[:file] if args.key?(:file) @file_id = args[:file_id] if args.key?(:file_id) @id = args[:id] if args.key?(:id) @kind = args[:kind] if args.key?(:kind) @modification_date = args[:modification_date] if args.key?(:modification_date) @self_link = args[:self_link] if args.key?(:self_link) @team_drive = args[:team_drive] if args.key?(:team_drive) @team_drive_id = args[:team_drive_id] if args.key?(:team_drive_id) @type = args[:type] if args.key?(:type) end end # A list of changes for a user. class ChangeList include Google::Apis::Core::Hashable # The ETag of the list. # Corresponds to the JSON property `etag` # @return [String] attr_accessor :etag # The list of changes. If nextPageToken is populated, then this list may be # incomplete and an additional page of results should be fetched. # Corresponds to the JSON property `items` # @return [Array] attr_accessor :items # This is always drive#changeList. # Corresponds to the JSON property `kind` # @return [String] attr_accessor :kind # The current largest change ID. # Corresponds to the JSON property `largestChangeId` # @return [Fixnum] attr_accessor :largest_change_id # The starting page token for future changes. This will be present only if the # end of the current changes list has been reached. # Corresponds to the JSON property `newStartPageToken` # @return [String] attr_accessor :new_start_page_token # A link to the next page of changes. # Corresponds to the JSON property `nextLink` # @return [String] attr_accessor :next_link # The page token for the next page of changes. This will be absent if the end of # the changes list has been reached. If the token is rejected for any reason, it # should be discarded, and pagination should be restarted from the first page of # results. # Corresponds to the JSON property `nextPageToken` # @return [String] attr_accessor :next_page_token # A link back to this list. # Corresponds to the JSON property `selfLink` # @return [String] attr_accessor :self_link def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @etag = args[:etag] if args.key?(:etag) @items = args[:items] if args.key?(:items) @kind = args[:kind] if args.key?(:kind) @largest_change_id = args[:largest_change_id] if args.key?(:largest_change_id) @new_start_page_token = args[:new_start_page_token] if args.key?(:new_start_page_token) @next_link = args[:next_link] if args.key?(:next_link) @next_page_token = args[:next_page_token] if args.key?(:next_page_token) @self_link = args[:self_link] if args.key?(:self_link) end end # An notification channel used to watch for resource changes. class Channel include Google::Apis::Core::Hashable # The address where notifications are delivered for this channel. # Corresponds to the JSON property `address` # @return [String] attr_accessor :address # Date and time of notification channel expiration, expressed as a Unix # timestamp, in milliseconds. Optional. # Corresponds to the JSON property `expiration` # @return [Fixnum] attr_accessor :expiration # A UUID or similar unique string that identifies this channel. # Corresponds to the JSON property `id` # @return [String] attr_accessor :id # Identifies this as a notification channel used to watch for changes to a # resource, which is "api#channel". # Corresponds to the JSON property `kind` # @return [String] attr_accessor :kind # Additional parameters controlling delivery channel behavior. Optional. # Corresponds to the JSON property `params` # @return [Hash] attr_accessor :params # A Boolean value to indicate whether payload is wanted. Optional. # Corresponds to the JSON property `payload` # @return [Boolean] attr_accessor :payload alias_method :payload?, :payload # An opaque ID that identifies the resource being watched on this channel. # Stable across different API versions. # Corresponds to the JSON property `resourceId` # @return [String] attr_accessor :resource_id # A version-specific identifier for the watched resource. # Corresponds to the JSON property `resourceUri` # @return [String] attr_accessor :resource_uri # An arbitrary string delivered to the target address with each notification # delivered over this channel. Optional. # Corresponds to the JSON property `token` # @return [String] attr_accessor :token # The type of delivery mechanism used for this channel. # Corresponds to the JSON property `type` # @return [String] attr_accessor :type def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @address = args[:address] if args.key?(:address) @expiration = args[:expiration] if args.key?(:expiration) @id = args[:id] if args.key?(:id) @kind = args[:kind] if args.key?(:kind) @params = args[:params] if args.key?(:params) @payload = args[:payload] if args.key?(:payload) @resource_id = args[:resource_id] if args.key?(:resource_id) @resource_uri = args[:resource_uri] if args.key?(:resource_uri) @token = args[:token] if args.key?(:token) @type = args[:type] if args.key?(:type) end end # A list of children of a file. class ChildList include Google::Apis::Core::Hashable # The ETag of the list. # Corresponds to the JSON property `etag` # @return [String] attr_accessor :etag # The list of children. If nextPageToken is populated, then this list may be # incomplete and an additional page of results should be fetched. # Corresponds to the JSON property `items` # @return [Array] attr_accessor :items # This is always drive#childList. # Corresponds to the JSON property `kind` # @return [String] attr_accessor :kind # A link to the next page of children. # Corresponds to the JSON property `nextLink` # @return [String] attr_accessor :next_link # The page token for the next page of children. This will be absent if the end # of the children list has been reached. If the token is rejected for any reason, # it should be discarded, and pagination should be restarted from the first # page of results. # Corresponds to the JSON property `nextPageToken` # @return [String] attr_accessor :next_page_token # A link back to this list. # Corresponds to the JSON property `selfLink` # @return [String] attr_accessor :self_link def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @etag = args[:etag] if args.key?(:etag) @items = args[:items] if args.key?(:items) @kind = args[:kind] if args.key?(:kind) @next_link = args[:next_link] if args.key?(:next_link) @next_page_token = args[:next_page_token] if args.key?(:next_page_token) @self_link = args[:self_link] if args.key?(:self_link) end end # A reference to a folder's child. class ChildReference include Google::Apis::Core::Hashable # A link to the child. # Corresponds to the JSON property `childLink` # @return [String] attr_accessor :child_link # The ID of the child. # Corresponds to the JSON property `id` # @return [String] attr_accessor :id # This is always drive#childReference. # Corresponds to the JSON property `kind` # @return [String] attr_accessor :kind # A link back to this reference. # Corresponds to the JSON property `selfLink` # @return [String] attr_accessor :self_link def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @child_link = args[:child_link] if args.key?(:child_link) @id = args[:id] if args.key?(:id) @kind = args[:kind] if args.key?(:kind) @self_link = args[:self_link] if args.key?(:self_link) end end # A comment on a file in Google Drive. class Comment include Google::Apis::Core::Hashable # A region of the document represented as a JSON string. See anchor # documentation for details on how to define and interpret anchor properties. # Corresponds to the JSON property `anchor` # @return [String] attr_accessor :anchor # Information about a Drive user. # Corresponds to the JSON property `author` # @return [Google::Apis::DriveV2::User] attr_accessor :author # The ID of the comment. # Corresponds to the JSON property `commentId` # @return [String] attr_accessor :comment_id # The plain text content used to create this comment. This is not HTML safe and # should only be used as a starting point to make edits to a comment's content. # Corresponds to the JSON property `content` # @return [String] attr_accessor :content # The context of the file which is being commented on. # Corresponds to the JSON property `context` # @return [Google::Apis::DriveV2::Comment::Context] attr_accessor :context # The date when this comment was first created. # Corresponds to the JSON property `createdDate` # @return [DateTime] attr_accessor :created_date # Whether this comment has been deleted. If a comment has been deleted the # content will be cleared and this will only represent a comment that once # existed. # Corresponds to the JSON property `deleted` # @return [Boolean] attr_accessor :deleted alias_method :deleted?, :deleted # The file which this comment is addressing. # Corresponds to the JSON property `fileId` # @return [String] attr_accessor :file_id # The title of the file which this comment is addressing. # Corresponds to the JSON property `fileTitle` # @return [String] attr_accessor :file_title # HTML formatted content for this comment. # Corresponds to the JSON property `htmlContent` # @return [String] attr_accessor :html_content # This is always drive#comment. # Corresponds to the JSON property `kind` # @return [String] attr_accessor :kind # The date when this comment or any of its replies were last modified. # Corresponds to the JSON property `modifiedDate` # @return [DateTime] attr_accessor :modified_date # Replies to this post. # Corresponds to the JSON property `replies` # @return [Array] attr_accessor :replies # A link back to this comment. # Corresponds to the JSON property `selfLink` # @return [String] attr_accessor :self_link # The status of this comment. Status can be changed by posting a reply to a # comment with the desired status. # - "open" - The comment is still open. # - "resolved" - The comment has been resolved by one of its replies. # Corresponds to the JSON property `status` # @return [String] attr_accessor :status def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @anchor = args[:anchor] if args.key?(:anchor) @author = args[:author] if args.key?(:author) @comment_id = args[:comment_id] if args.key?(:comment_id) @content = args[:content] if args.key?(:content) @context = args[:context] if args.key?(:context) @created_date = args[:created_date] if args.key?(:created_date) @deleted = args[:deleted] if args.key?(:deleted) @file_id = args[:file_id] if args.key?(:file_id) @file_title = args[:file_title] if args.key?(:file_title) @html_content = args[:html_content] if args.key?(:html_content) @kind = args[:kind] if args.key?(:kind) @modified_date = args[:modified_date] if args.key?(:modified_date) @replies = args[:replies] if args.key?(:replies) @self_link = args[:self_link] if args.key?(:self_link) @status = args[:status] if args.key?(:status) end # The context of the file which is being commented on. class Context include Google::Apis::Core::Hashable # The MIME type of the context snippet. # Corresponds to the JSON property `type` # @return [String] attr_accessor :type # Data representation of the segment of the file being commented on. In the case # of a text file for example, this would be the actual text that the comment is # about. # Corresponds to the JSON property `value` # @return [String] attr_accessor :value def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @type = args[:type] if args.key?(:type) @value = args[:value] if args.key?(:value) end end end # A list of comments on a file in Google Drive. class CommentList include Google::Apis::Core::Hashable # The list of comments. If nextPageToken is populated, then this list may be # incomplete and an additional page of results should be fetched. # Corresponds to the JSON property `items` # @return [Array] attr_accessor :items # This is always drive#commentList. # Corresponds to the JSON property `kind` # @return [String] attr_accessor :kind # A link to the next page of comments. # Corresponds to the JSON property `nextLink` # @return [String] attr_accessor :next_link # The page token for the next page of comments. This will be absent if the end # of the comments list has been reached. If the token is rejected for any reason, # it should be discarded, and pagination should be restarted from the first # page of results. # Corresponds to the JSON property `nextPageToken` # @return [String] attr_accessor :next_page_token # A link back to this list. # Corresponds to the JSON property `selfLink` # @return [String] attr_accessor :self_link def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @items = args[:items] if args.key?(:items) @kind = args[:kind] if args.key?(:kind) @next_link = args[:next_link] if args.key?(:next_link) @next_page_token = args[:next_page_token] if args.key?(:next_page_token) @self_link = args[:self_link] if args.key?(:self_link) end end # A comment on a file in Google Drive. class CommentReply include Google::Apis::Core::Hashable # Information about a Drive user. # Corresponds to the JSON property `author` # @return [Google::Apis::DriveV2::User] attr_accessor :author # The plain text content used to create this reply. This is not HTML safe and # should only be used as a starting point to make edits to a reply's content. # This field is required on inserts if no verb is specified (resolve/reopen). # Corresponds to the JSON property `content` # @return [String] attr_accessor :content # The date when this reply was first created. # Corresponds to the JSON property `createdDate` # @return [DateTime] attr_accessor :created_date # Whether this reply has been deleted. If a reply has been deleted the content # will be cleared and this will only represent a reply that once existed. # Corresponds to the JSON property `deleted` # @return [Boolean] attr_accessor :deleted alias_method :deleted?, :deleted # HTML formatted content for this reply. # Corresponds to the JSON property `htmlContent` # @return [String] attr_accessor :html_content # This is always drive#commentReply. # Corresponds to the JSON property `kind` # @return [String] attr_accessor :kind # The date when this reply was last modified. # Corresponds to the JSON property `modifiedDate` # @return [DateTime] attr_accessor :modified_date # The ID of the reply. # Corresponds to the JSON property `replyId` # @return [String] attr_accessor :reply_id # The action this reply performed to the parent comment. When creating a new # reply this is the action to be perform to the parent comment. Possible values # are: # - "resolve" - To resolve a comment. # - "reopen" - To reopen (un-resolve) a comment. # Corresponds to the JSON property `verb` # @return [String] attr_accessor :verb def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @author = args[:author] if args.key?(:author) @content = args[:content] if args.key?(:content) @created_date = args[:created_date] if args.key?(:created_date) @deleted = args[:deleted] if args.key?(:deleted) @html_content = args[:html_content] if args.key?(:html_content) @kind = args[:kind] if args.key?(:kind) @modified_date = args[:modified_date] if args.key?(:modified_date) @reply_id = args[:reply_id] if args.key?(:reply_id) @verb = args[:verb] if args.key?(:verb) end end # A list of replies to a comment on a file in Google Drive. class CommentReplyList include Google::Apis::Core::Hashable # The list of replies. If nextPageToken is populated, then this list may be # incomplete and an additional page of results should be fetched. # Corresponds to the JSON property `items` # @return [Array] attr_accessor :items # This is always drive#commentReplyList. # Corresponds to the JSON property `kind` # @return [String] attr_accessor :kind # A link to the next page of replies. # Corresponds to the JSON property `nextLink` # @return [String] attr_accessor :next_link # The page token for the next page of replies. This will be absent if the end of # the replies list has been reached. If the token is rejected for any reason, it # should be discarded, and pagination should be restarted from the first page of # results. # Corresponds to the JSON property `nextPageToken` # @return [String] attr_accessor :next_page_token # A link back to this list. # Corresponds to the JSON property `selfLink` # @return [String] attr_accessor :self_link def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @items = args[:items] if args.key?(:items) @kind = args[:kind] if args.key?(:kind) @next_link = args[:next_link] if args.key?(:next_link) @next_page_token = args[:next_page_token] if args.key?(:next_page_token) @self_link = args[:self_link] if args.key?(:self_link) end end # A restriction for accessing the content of the file. class ContentRestriction include Google::Apis::Core::Hashable # Whether the content of the file is read-only. If a file is read-only, a new # revision of the file may not be added, comments may not be added or modified, # and the title of the file may not be modified. # Corresponds to the JSON property `readOnly` # @return [Boolean] attr_accessor :read_only alias_method :read_only?, :read_only # Reason for why the content of the file is restricted. This is only mutable on # requests that also set readOnly=true. # Corresponds to the JSON property `reason` # @return [String] attr_accessor :reason # Information about a Drive user. # Corresponds to the JSON property `restrictingUser` # @return [Google::Apis::DriveV2::User] attr_accessor :restricting_user # The time at which the content restriction was set (formatted RFC 3339 # timestamp). Only populated if readOnly is true. # Corresponds to the JSON property `restrictionDate` # @return [DateTime] attr_accessor :restriction_date # The type of the content restriction. Currently the only possible value is # globalContentRestriction. # Corresponds to the JSON property `type` # @return [String] attr_accessor :type def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @read_only = args[:read_only] if args.key?(:read_only) @reason = args[:reason] if args.key?(:reason) @restricting_user = args[:restricting_user] if args.key?(:restricting_user) @restriction_date = args[:restriction_date] if args.key?(:restriction_date) @type = args[:type] if args.key?(:type) end end # Representation of a shared drive. class Drive include Google::Apis::Core::Hashable # An image file and cropping parameters from which a background image for this # shared drive is set. This is a write only field; it can only be set on drive. # drives.update requests that don't set themeId. When specified, all fields of # the backgroundImageFile must be set. # Corresponds to the JSON property `backgroundImageFile` # @return [Google::Apis::DriveV2::Drive::BackgroundImageFile] attr_accessor :background_image_file # A short-lived link to this shared drive's background image. # Corresponds to the JSON property `backgroundImageLink` # @return [String] attr_accessor :background_image_link # Capabilities the current user has on this shared drive. # Corresponds to the JSON property `capabilities` # @return [Google::Apis::DriveV2::Drive::Capabilities] attr_accessor :capabilities # The color of this shared drive as an RGB hex string. It can only be set on a # drive.drives.update request that does not set themeId. # Corresponds to the JSON property `colorRgb` # @return [String] attr_accessor :color_rgb # The time at which the shared drive was created (RFC 3339 date-time). # Corresponds to the JSON property `createdDate` # @return [DateTime] attr_accessor :created_date # Whether the shared drive is hidden from default view. # Corresponds to the JSON property `hidden` # @return [Boolean] attr_accessor :hidden alias_method :hidden?, :hidden # The ID of this shared drive which is also the ID of the top level folder of # this shared drive. # Corresponds to the JSON property `id` # @return [String] attr_accessor :id # This is always drive#drive # Corresponds to the JSON property `kind` # @return [String] attr_accessor :kind # The name of this shared drive. # Corresponds to the JSON property `name` # @return [String] attr_accessor :name # A set of restrictions that apply to this shared drive or items inside this # shared drive. # Corresponds to the JSON property `restrictions` # @return [Google::Apis::DriveV2::Drive::Restrictions] attr_accessor :restrictions # The ID of the theme from which the background image and color will be set. The # set of possible driveThemes can be retrieved from a drive.about.get response. # When not specified on a drive.drives.insert request, a random theme is chosen # from which the background image and color are set. This is a write-only field; # it can only be set on requests that don't set colorRgb or backgroundImageFile. # Corresponds to the JSON property `themeId` # @return [String] attr_accessor :theme_id def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @background_image_file = args[:background_image_file] if args.key?(:background_image_file) @background_image_link = args[:background_image_link] if args.key?(:background_image_link) @capabilities = args[:capabilities] if args.key?(:capabilities) @color_rgb = args[:color_rgb] if args.key?(:color_rgb) @created_date = args[:created_date] if args.key?(:created_date) @hidden = args[:hidden] if args.key?(:hidden) @id = args[:id] if args.key?(:id) @kind = args[:kind] if args.key?(:kind) @name = args[:name] if args.key?(:name) @restrictions = args[:restrictions] if args.key?(:restrictions) @theme_id = args[:theme_id] if args.key?(:theme_id) end # An image file and cropping parameters from which a background image for this # shared drive is set. This is a write only field; it can only be set on drive. # drives.update requests that don't set themeId. When specified, all fields of # the backgroundImageFile must be set. class BackgroundImageFile include Google::Apis::Core::Hashable # The ID of an image file in Google Drive to use for the background image. # Corresponds to the JSON property `id` # @return [String] attr_accessor :id # The width of the cropped image in the closed range of 0 to 1. This value # represents the width of the cropped image divided by the width of the entire # image. The height is computed by applying a width to height aspect ratio of 80 # to 9. The resulting image must be at least 1280 pixels wide and 144 pixels # high. # Corresponds to the JSON property `width` # @return [Float] attr_accessor :width # The X coordinate of the upper left corner of the cropping area in the # background image. This is a value in the closed range of 0 to 1. This value # represents the horizontal distance from the left side of the entire image to # the left side of the cropping area divided by the width of the entire image. # Corresponds to the JSON property `xCoordinate` # @return [Float] attr_accessor :x_coordinate # The Y coordinate of the upper left corner of the cropping area in the # background image. This is a value in the closed range of 0 to 1. This value # represents the vertical distance from the top side of the entire image to the # top side of the cropping area divided by the height of the entire image. # Corresponds to the JSON property `yCoordinate` # @return [Float] attr_accessor :y_coordinate def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @id = args[:id] if args.key?(:id) @width = args[:width] if args.key?(:width) @x_coordinate = args[:x_coordinate] if args.key?(:x_coordinate) @y_coordinate = args[:y_coordinate] if args.key?(:y_coordinate) end end # Capabilities the current user has on this shared drive. class Capabilities include Google::Apis::Core::Hashable # Whether the current user can add children to folders in this shared drive. # Corresponds to the JSON property `canAddChildren` # @return [Boolean] attr_accessor :can_add_children alias_method :can_add_children?, :can_add_children # Whether the current user can change the copyRequiresWriterPermission # restriction of this shared drive. # Corresponds to the JSON property `canChangeCopyRequiresWriterPermissionRestriction` # @return [Boolean] attr_accessor :can_change_copy_requires_writer_permission_restriction alias_method :can_change_copy_requires_writer_permission_restriction?, :can_change_copy_requires_writer_permission_restriction # Whether the current user can change the domainUsersOnly restriction of this # shared drive. # Corresponds to the JSON property `canChangeDomainUsersOnlyRestriction` # @return [Boolean] attr_accessor :can_change_domain_users_only_restriction alias_method :can_change_domain_users_only_restriction?, :can_change_domain_users_only_restriction # Whether the current user can change the background of this shared drive. # Corresponds to the JSON property `canChangeDriveBackground` # @return [Boolean] attr_accessor :can_change_drive_background alias_method :can_change_drive_background?, :can_change_drive_background # Whether the current user can change the driveMembersOnly restriction of this # shared drive. # Corresponds to the JSON property `canChangeDriveMembersOnlyRestriction` # @return [Boolean] attr_accessor :can_change_drive_members_only_restriction alias_method :can_change_drive_members_only_restriction?, :can_change_drive_members_only_restriction # Whether the current user can comment on files in this shared drive. # Corresponds to the JSON property `canComment` # @return [Boolean] attr_accessor :can_comment alias_method :can_comment?, :can_comment # Whether the current user can copy files in this shared drive. # Corresponds to the JSON property `canCopy` # @return [Boolean] attr_accessor :can_copy alias_method :can_copy?, :can_copy # Whether the current user can delete children from folders in this shared drive. # Corresponds to the JSON property `canDeleteChildren` # @return [Boolean] attr_accessor :can_delete_children alias_method :can_delete_children?, :can_delete_children # Whether the current user can delete this shared drive. Attempting to delete # the shared drive may still fail if there are untrashed items inside the shared # drive. # Corresponds to the JSON property `canDeleteDrive` # @return [Boolean] attr_accessor :can_delete_drive alias_method :can_delete_drive?, :can_delete_drive # Whether the current user can download files in this shared drive. # Corresponds to the JSON property `canDownload` # @return [Boolean] attr_accessor :can_download alias_method :can_download?, :can_download # Whether the current user can edit files in this shared drive # Corresponds to the JSON property `canEdit` # @return [Boolean] attr_accessor :can_edit alias_method :can_edit?, :can_edit # Whether the current user can list the children of folders in this shared drive. # Corresponds to the JSON property `canListChildren` # @return [Boolean] attr_accessor :can_list_children alias_method :can_list_children?, :can_list_children # Whether the current user can add members to this shared drive or remove them # or change their role. # Corresponds to the JSON property `canManageMembers` # @return [Boolean] attr_accessor :can_manage_members alias_method :can_manage_members?, :can_manage_members # Whether the current user can read the revisions resource of files in this # shared drive. # Corresponds to the JSON property `canReadRevisions` # @return [Boolean] attr_accessor :can_read_revisions alias_method :can_read_revisions?, :can_read_revisions # Whether the current user can rename files or folders in this shared drive. # Corresponds to the JSON property `canRename` # @return [Boolean] attr_accessor :can_rename alias_method :can_rename?, :can_rename # Whether the current user can rename this shared drive. # Corresponds to the JSON property `canRenameDrive` # @return [Boolean] attr_accessor :can_rename_drive alias_method :can_rename_drive?, :can_rename_drive # Whether the current user can share files or folders in this shared drive. # Corresponds to the JSON property `canShare` # @return [Boolean] attr_accessor :can_share alias_method :can_share?, :can_share # Whether the current user can trash children from folders in this shared drive. # Corresponds to the JSON property `canTrashChildren` # @return [Boolean] attr_accessor :can_trash_children alias_method :can_trash_children?, :can_trash_children def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @can_add_children = args[:can_add_children] if args.key?(:can_add_children) @can_change_copy_requires_writer_permission_restriction = args[:can_change_copy_requires_writer_permission_restriction] if args.key?(:can_change_copy_requires_writer_permission_restriction) @can_change_domain_users_only_restriction = args[:can_change_domain_users_only_restriction] if args.key?(:can_change_domain_users_only_restriction) @can_change_drive_background = args[:can_change_drive_background] if args.key?(:can_change_drive_background) @can_change_drive_members_only_restriction = args[:can_change_drive_members_only_restriction] if args.key?(:can_change_drive_members_only_restriction) @can_comment = args[:can_comment] if args.key?(:can_comment) @can_copy = args[:can_copy] if args.key?(:can_copy) @can_delete_children = args[:can_delete_children] if args.key?(:can_delete_children) @can_delete_drive = args[:can_delete_drive] if args.key?(:can_delete_drive) @can_download = args[:can_download] if args.key?(:can_download) @can_edit = args[:can_edit] if args.key?(:can_edit) @can_list_children = args[:can_list_children] if args.key?(:can_list_children) @can_manage_members = args[:can_manage_members] if args.key?(:can_manage_members) @can_read_revisions = args[:can_read_revisions] if args.key?(:can_read_revisions) @can_rename = args[:can_rename] if args.key?(:can_rename) @can_rename_drive = args[:can_rename_drive] if args.key?(:can_rename_drive) @can_share = args[:can_share] if args.key?(:can_share) @can_trash_children = args[:can_trash_children] if args.key?(:can_trash_children) end end # A set of restrictions that apply to this shared drive or items inside this # shared drive. class Restrictions include Google::Apis::Core::Hashable # Whether administrative privileges on this shared drive are required to modify # restrictions. # Corresponds to the JSON property `adminManagedRestrictions` # @return [Boolean] attr_accessor :admin_managed_restrictions alias_method :admin_managed_restrictions?, :admin_managed_restrictions # Whether the options to copy, print, or download files inside this shared drive, # should be disabled for readers and commenters. When this restriction is set # to true, it will override the similarly named field to true for any file # inside this shared drive. # Corresponds to the JSON property `copyRequiresWriterPermission` # @return [Boolean] attr_accessor :copy_requires_writer_permission alias_method :copy_requires_writer_permission?, :copy_requires_writer_permission # Whether access to this shared drive and items inside this shared drive is # restricted to users of the domain to which this shared drive belongs. This # restriction may be overridden by other sharing policies controlled outside of # this shared drive. # Corresponds to the JSON property `domainUsersOnly` # @return [Boolean] attr_accessor :domain_users_only alias_method :domain_users_only?, :domain_users_only # Whether access to items inside this shared drive is restricted to its members. # Corresponds to the JSON property `driveMembersOnly` # @return [Boolean] attr_accessor :drive_members_only alias_method :drive_members_only?, :drive_members_only def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @admin_managed_restrictions = args[:admin_managed_restrictions] if args.key?(:admin_managed_restrictions) @copy_requires_writer_permission = args[:copy_requires_writer_permission] if args.key?(:copy_requires_writer_permission) @domain_users_only = args[:domain_users_only] if args.key?(:domain_users_only) @drive_members_only = args[:drive_members_only] if args.key?(:drive_members_only) end end end # A list of shared drives. class DriveList include Google::Apis::Core::Hashable # The list of shared drives. If nextPageToken is populated, then this list may # be incomplete and an additional page of results should be fetched. # Corresponds to the JSON property `items` # @return [Array] attr_accessor :items # This is always drive#driveList # Corresponds to the JSON property `kind` # @return [String] attr_accessor :kind # The page token for the next page of shared drives. This will be absent if the # end of the list has been reached. If the token is rejected for any reason, it # should be discarded, and pagination should be restarted from the first page of # results. # Corresponds to the JSON property `nextPageToken` # @return [String] attr_accessor :next_page_token def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @items = args[:items] if args.key?(:items) @kind = args[:kind] if args.key?(:kind) @next_page_token = args[:next_page_token] if args.key?(:next_page_token) end end # The metadata for a file. class File include Google::Apis::Core::Hashable # A link for opening the file in a relevant Google editor or viewer. # Corresponds to the JSON property `alternateLink` # @return [String] attr_accessor :alternate_link # Whether this file is in the Application Data folder. # Corresponds to the JSON property `appDataContents` # @return [Boolean] attr_accessor :app_data_contents alias_method :app_data_contents?, :app_data_contents # Deprecated: use capabilities/canComment. # Corresponds to the JSON property `canComment` # @return [Boolean] attr_accessor :can_comment alias_method :can_comment?, :can_comment # Deprecated: use capabilities/canReadRevisions. # Corresponds to the JSON property `canReadRevisions` # @return [Boolean] attr_accessor :can_read_revisions alias_method :can_read_revisions?, :can_read_revisions # Capabilities the current user has on this file. Each capability corresponds to # a fine-grained action that a user may take. # Corresponds to the JSON property `capabilities` # @return [Google::Apis::DriveV2::File::Capabilities] attr_accessor :capabilities # Restrictions for accessing the content of the file. Only populated if such a # restriction exists. # Corresponds to the JSON property `contentRestrictions` # @return [Array] attr_accessor :content_restrictions # Whether the options to copy, print, or download this file, should be disabled # for readers and commenters. # Corresponds to the JSON property `copyRequiresWriterPermission` # @return [Boolean] attr_accessor :copy_requires_writer_permission alias_method :copy_requires_writer_permission?, :copy_requires_writer_permission # Deprecated: use capabilities/canCopy. # Corresponds to the JSON property `copyable` # @return [Boolean] attr_accessor :copyable alias_method :copyable?, :copyable # Create time for this file (formatted RFC 3339 timestamp). # Corresponds to the JSON property `createdDate` # @return [DateTime] attr_accessor :created_date # A link to open this file with the user's default app for this file. Only # populated when the drive.apps.readonly scope is used. # Corresponds to the JSON property `defaultOpenWithLink` # @return [String] attr_accessor :default_open_with_link # A short description of the file. # Corresponds to the JSON property `description` # @return [String] attr_accessor :description # Short lived download URL for the file. This field is only populated for files # with content stored in Google Drive; it is not populated for Docs Editors or # shortcut files. # Corresponds to the JSON property `downloadUrl` # @return [String] attr_accessor :download_url # ID of the shared drive the file resides in. Only populated for items in shared # drives. # Corresponds to the JSON property `driveId` # @return [String] attr_accessor :drive_id # Deprecated: use capabilities/canEdit. # Corresponds to the JSON property `editable` # @return [Boolean] attr_accessor :editable alias_method :editable?, :editable # A link for embedding the file. # Corresponds to the JSON property `embedLink` # @return [String] attr_accessor :embed_link # ETag of the file. # Corresponds to the JSON property `etag` # @return [String] attr_accessor :etag # Whether this file has been explicitly trashed, as opposed to recursively # trashed. # Corresponds to the JSON property `explicitlyTrashed` # @return [Boolean] attr_accessor :explicitly_trashed alias_method :explicitly_trashed?, :explicitly_trashed # Links for exporting Docs Editors files to specific formats. # Corresponds to the JSON property `exportLinks` # @return [Hash] attr_accessor :export_links # The final component of fullFileExtension with trailing text that does not # appear to be part of the extension removed. This field is only populated for # files with content stored in Google Drive; it is not populated for Docs # Editors or shortcut files. # Corresponds to the JSON property `fileExtension` # @return [String] attr_accessor :file_extension # The size of the file in bytes. This field is populated for files with content # stored in Google Drive and for files in Docs Editors; it is not populated for # shortcut files. # Corresponds to the JSON property `fileSize` # @return [Fixnum] attr_accessor :file_size # Folder color as an RGB hex string if the file is a folder. The list of # supported colors is available in the folderColorPalette field of the About # resource. If an unsupported color is specified, it will be changed to the # closest color in the palette. Not populated for items in shared drives. # Corresponds to the JSON property `folderColorRgb` # @return [String] attr_accessor :folder_color_rgb # The full file extension; extracted from the title. May contain multiple # concatenated extensions, such as "tar.gz". Removing an extension from the # title does not clear this field; however, changing the extension on the title # does update this field. This field is only populated for files with content # stored in Google Drive; it is not populated for Docs Editors or shortcut files. # Corresponds to the JSON property `fullFileExtension` # @return [String] attr_accessor :full_file_extension # Whether there are permissions directly on this file. This field is only # populated for items in shared drives. # Corresponds to the JSON property `hasAugmentedPermissions` # @return [Boolean] attr_accessor :has_augmented_permissions alias_method :has_augmented_permissions?, :has_augmented_permissions # Whether this file has a thumbnail. This does not indicate whether the # requesting app has access to the thumbnail. To check access, look for the # presence of the thumbnailLink field. # Corresponds to the JSON property `hasThumbnail` # @return [Boolean] attr_accessor :has_thumbnail alias_method :has_thumbnail?, :has_thumbnail # The ID of the file's head revision. This field is only populated for files # with content stored in Google Drive; it is not populated for Docs Editors or # shortcut files. # Corresponds to the JSON property `headRevisionId` # @return [String] attr_accessor :head_revision_id # A link to the file's icon. # Corresponds to the JSON property `iconLink` # @return [String] attr_accessor :icon_link # The ID of the file. # Corresponds to the JSON property `id` # @return [String] attr_accessor :id # Metadata about image media. This will only be present for image types, and its # contents will depend on what can be parsed from the image content. # Corresponds to the JSON property `imageMediaMetadata` # @return [Google::Apis::DriveV2::File::ImageMediaMetadata] attr_accessor :image_media_metadata # Indexable text attributes for the file (can only be written) # Corresponds to the JSON property `indexableText` # @return [Google::Apis::DriveV2::File::IndexableText] attr_accessor :indexable_text # Whether the file was created or opened by the requesting app. # Corresponds to the JSON property `isAppAuthorized` # @return [Boolean] attr_accessor :is_app_authorized alias_method :is_app_authorized?, :is_app_authorized # The type of file. This is always drive#file. # Corresponds to the JSON property `kind` # @return [String] attr_accessor :kind # A group of labels for the file. # Corresponds to the JSON property `labels` # @return [Google::Apis::DriveV2::File::Labels] attr_accessor :labels # Information about a Drive user. # Corresponds to the JSON property `lastModifyingUser` # @return [Google::Apis::DriveV2::User] attr_accessor :last_modifying_user # Name of the last user to modify this file. # Corresponds to the JSON property `lastModifyingUserName` # @return [String] attr_accessor :last_modifying_user_name # Last time this file was viewed by the user (formatted RFC 3339 timestamp). # Corresponds to the JSON property `lastViewedByMeDate` # @return [DateTime] attr_accessor :last_viewed_by_me_date # Deprecated. # Corresponds to the JSON property `markedViewedByMeDate` # @return [DateTime] attr_accessor :marked_viewed_by_me_date # An MD5 checksum for the content of this file. This field is only populated for # files with content stored in Google Drive; it is not populated for Docs # Editors or shortcut files. # Corresponds to the JSON property `md5Checksum` # @return [String] attr_accessor :md5_checksum # The MIME type of the file. This is only mutable on update when uploading new # content. This field can be left blank, and the mimetype will be determined # from the uploaded content's MIME type. # Corresponds to the JSON property `mimeType` # @return [String] attr_accessor :mime_type # Last time this file was modified by the user (formatted RFC 3339 timestamp). # Note that setting modifiedDate will also update the modifiedByMe date for the # user which set the date. # Corresponds to the JSON property `modifiedByMeDate` # @return [DateTime] attr_accessor :modified_by_me_date # Last time this file was modified by anyone (formatted RFC 3339 timestamp). # This is only mutable on update when the setModifiedDate parameter is set. # Corresponds to the JSON property `modifiedDate` # @return [DateTime] attr_accessor :modified_date # A map of the id of each of the user's apps to a link to open this file with # that app. Only populated when the drive.apps.readonly scope is used. # Corresponds to the JSON property `openWithLinks` # @return [Hash] attr_accessor :open_with_links # The original filename of the uploaded content if available, or else the # original value of the title field. This is only available for files with # binary content in Google Drive. # Corresponds to the JSON property `originalFilename` # @return [String] attr_accessor :original_filename # Whether the file is owned by the current user. Not populated for items in # shared drives. # Corresponds to the JSON property `ownedByMe` # @return [Boolean] attr_accessor :owned_by_me alias_method :owned_by_me?, :owned_by_me # Name(s) of the owner(s) of this file. Not populated for items in shared drives. # Corresponds to the JSON property `ownerNames` # @return [Array] attr_accessor :owner_names # The owner(s) of this file. Not populated for items in shared drives. # Corresponds to the JSON property `owners` # @return [Array] attr_accessor :owners # Collection of parent folders which contain this file. # If not specified as part of an insert request, the file will be placed # directly in the user's My Drive folder. If not specified as part of a copy # request, the file will inherit any discoverable parents of the source file. # Update requests can also use the addParents and removeParents parameters to # modify the parents list. # Corresponds to the JSON property `parents` # @return [Array] attr_accessor :parents # List of permission IDs for users with access to this file. # Corresponds to the JSON property `permissionIds` # @return [Array] attr_accessor :permission_ids # The list of permissions for users with access to this file. Not populated for # items in shared drives. # Corresponds to the JSON property `permissions` # @return [Array] attr_accessor :permissions # The list of properties. # Corresponds to the JSON property `properties` # @return [Array] attr_accessor :properties # The number of quota bytes used by this file. # Corresponds to the JSON property `quotaBytesUsed` # @return [Fixnum] attr_accessor :quota_bytes_used # A link back to this file. # Corresponds to the JSON property `selfLink` # @return [String] attr_accessor :self_link # Deprecated: use capabilities/canShare. # Corresponds to the JSON property `shareable` # @return [Boolean] attr_accessor :shareable alias_method :shareable?, :shareable # Whether the file has been shared. Not populated for items in shared drives. # Corresponds to the JSON property `shared` # @return [Boolean] attr_accessor :shared alias_method :shared?, :shared # Time at which this file was shared with the user (formatted RFC 3339 timestamp) # . # Corresponds to the JSON property `sharedWithMeDate` # @return [DateTime] attr_accessor :shared_with_me_date # Information about a Drive user. # Corresponds to the JSON property `sharingUser` # @return [Google::Apis::DriveV2::User] attr_accessor :sharing_user # Shortcut file details. Only populated for shortcut files, which have the # mimeType field set to application/vnd.google-apps.shortcut. # Corresponds to the JSON property `shortcutDetails` # @return [Google::Apis::DriveV2::File::ShortcutDetails] attr_accessor :shortcut_details # The list of spaces which contain the file. Supported values are 'drive', ' # appDataFolder' and 'photos'. # Corresponds to the JSON property `spaces` # @return [Array] attr_accessor :spaces # Deprecated - use driveId instead. # Corresponds to the JSON property `teamDriveId` # @return [String] attr_accessor :team_drive_id # A thumbnail for the file. This will only be used if a standard thumbnail # cannot be generated. # Corresponds to the JSON property `thumbnail` # @return [Google::Apis::DriveV2::File::Thumbnail] attr_accessor :thumbnail # A short-lived link to the file's thumbnail. Typically lasts on the order of # hours. Only populated when the requesting app can access the file's content. # If the file isn't shared publicly, the URL returned in Files.thumbnailLink # must be fetched using a credentialed request. # Corresponds to the JSON property `thumbnailLink` # @return [String] attr_accessor :thumbnail_link # The thumbnail version for use in thumbnail cache invalidation. # Corresponds to the JSON property `thumbnailVersion` # @return [Fixnum] attr_accessor :thumbnail_version # The title of this file. Note that for immutable items such as the top level # folders of shared drives, My Drive root folder, and Application Data folder # the title is constant. # Corresponds to the JSON property `title` # @return [String] attr_accessor :title # The time that the item was trashed (formatted RFC 3339 timestamp). Only # populated for items in shared drives. # Corresponds to the JSON property `trashedDate` # @return [DateTime] attr_accessor :trashed_date # Information about a Drive user. # Corresponds to the JSON property `trashingUser` # @return [Google::Apis::DriveV2::User] attr_accessor :trashing_user # A permission for a file. # Corresponds to the JSON property `userPermission` # @return [Google::Apis::DriveV2::Permission] attr_accessor :user_permission # A monotonically increasing version number for the file. This reflects every # change made to the file on the server, even those not visible to the # requesting user. # Corresponds to the JSON property `version` # @return [Fixnum] attr_accessor :version # Metadata about video media. This will only be present for video types. # Corresponds to the JSON property `videoMediaMetadata` # @return [Google::Apis::DriveV2::File::VideoMediaMetadata] attr_accessor :video_media_metadata # A link for downloading the content of the file in a browser using cookie based # authentication. In cases where the content is shared publicly, the content can # be downloaded without any credentials. # Corresponds to the JSON property `webContentLink` # @return [String] attr_accessor :web_content_link # A link only available on public folders for viewing their static web assets ( # HTML, CSS, JS, etc) via Google Drive's Website Hosting. # Corresponds to the JSON property `webViewLink` # @return [String] attr_accessor :web_view_link # Whether writers can share the document with other users. Not populated for # items in shared drives. # Corresponds to the JSON property `writersCanShare` # @return [Boolean] attr_accessor :writers_can_share alias_method :writers_can_share?, :writers_can_share def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @alternate_link = args[:alternate_link] if args.key?(:alternate_link) @app_data_contents = args[:app_data_contents] if args.key?(:app_data_contents) @can_comment = args[:can_comment] if args.key?(:can_comment) @can_read_revisions = args[:can_read_revisions] if args.key?(:can_read_revisions) @capabilities = args[:capabilities] if args.key?(:capabilities) @content_restrictions = args[:content_restrictions] if args.key?(:content_restrictions) @copy_requires_writer_permission = args[:copy_requires_writer_permission] if args.key?(:copy_requires_writer_permission) @copyable = args[:copyable] if args.key?(:copyable) @created_date = args[:created_date] if args.key?(:created_date) @default_open_with_link = args[:default_open_with_link] if args.key?(:default_open_with_link) @description = args[:description] if args.key?(:description) @download_url = args[:download_url] if args.key?(:download_url) @drive_id = args[:drive_id] if args.key?(:drive_id) @editable = args[:editable] if args.key?(:editable) @embed_link = args[:embed_link] if args.key?(:embed_link) @etag = args[:etag] if args.key?(:etag) @explicitly_trashed = args[:explicitly_trashed] if args.key?(:explicitly_trashed) @export_links = args[:export_links] if args.key?(:export_links) @file_extension = args[:file_extension] if args.key?(:file_extension) @file_size = args[:file_size] if args.key?(:file_size) @folder_color_rgb = args[:folder_color_rgb] if args.key?(:folder_color_rgb) @full_file_extension = args[:full_file_extension] if args.key?(:full_file_extension) @has_augmented_permissions = args[:has_augmented_permissions] if args.key?(:has_augmented_permissions) @has_thumbnail = args[:has_thumbnail] if args.key?(:has_thumbnail) @head_revision_id = args[:head_revision_id] if args.key?(:head_revision_id) @icon_link = args[:icon_link] if args.key?(:icon_link) @id = args[:id] if args.key?(:id) @image_media_metadata = args[:image_media_metadata] if args.key?(:image_media_metadata) @indexable_text = args[:indexable_text] if args.key?(:indexable_text) @is_app_authorized = args[:is_app_authorized] if args.key?(:is_app_authorized) @kind = args[:kind] if args.key?(:kind) @labels = args[:labels] if args.key?(:labels) @last_modifying_user = args[:last_modifying_user] if args.key?(:last_modifying_user) @last_modifying_user_name = args[:last_modifying_user_name] if args.key?(:last_modifying_user_name) @last_viewed_by_me_date = args[:last_viewed_by_me_date] if args.key?(:last_viewed_by_me_date) @marked_viewed_by_me_date = args[:marked_viewed_by_me_date] if args.key?(:marked_viewed_by_me_date) @md5_checksum = args[:md5_checksum] if args.key?(:md5_checksum) @mime_type = args[:mime_type] if args.key?(:mime_type) @modified_by_me_date = args[:modified_by_me_date] if args.key?(:modified_by_me_date) @modified_date = args[:modified_date] if args.key?(:modified_date) @open_with_links = args[:open_with_links] if args.key?(:open_with_links) @original_filename = args[:original_filename] if args.key?(:original_filename) @owned_by_me = args[:owned_by_me] if args.key?(:owned_by_me) @owner_names = args[:owner_names] if args.key?(:owner_names) @owners = args[:owners] if args.key?(:owners) @parents = args[:parents] if args.key?(:parents) @permission_ids = args[:permission_ids] if args.key?(:permission_ids) @permissions = args[:permissions] if args.key?(:permissions) @properties = args[:properties] if args.key?(:properties) @quota_bytes_used = args[:quota_bytes_used] if args.key?(:quota_bytes_used) @self_link = args[:self_link] if args.key?(:self_link) @shareable = args[:shareable] if args.key?(:shareable) @shared = args[:shared] if args.key?(:shared) @shared_with_me_date = args[:shared_with_me_date] if args.key?(:shared_with_me_date) @sharing_user = args[:sharing_user] if args.key?(:sharing_user) @shortcut_details = args[:shortcut_details] if args.key?(:shortcut_details) @spaces = args[:spaces] if args.key?(:spaces) @team_drive_id = args[:team_drive_id] if args.key?(:team_drive_id) @thumbnail = args[:thumbnail] if args.key?(:thumbnail) @thumbnail_link = args[:thumbnail_link] if args.key?(:thumbnail_link) @thumbnail_version = args[:thumbnail_version] if args.key?(:thumbnail_version) @title = args[:title] if args.key?(:title) @trashed_date = args[:trashed_date] if args.key?(:trashed_date) @trashing_user = args[:trashing_user] if args.key?(:trashing_user) @user_permission = args[:user_permission] if args.key?(:user_permission) @version = args[:version] if args.key?(:version) @video_media_metadata = args[:video_media_metadata] if args.key?(:video_media_metadata) @web_content_link = args[:web_content_link] if args.key?(:web_content_link) @web_view_link = args[:web_view_link] if args.key?(:web_view_link) @writers_can_share = args[:writers_can_share] if args.key?(:writers_can_share) end # Capabilities the current user has on this file. Each capability corresponds to # a fine-grained action that a user may take. class Capabilities include Google::Apis::Core::Hashable # Whether the current user can add children to this folder. This is always false # when the item is not a folder. # Corresponds to the JSON property `canAddChildren` # @return [Boolean] attr_accessor :can_add_children alias_method :can_add_children?, :can_add_children # Whether the current user can add a folder from another drive (different shared # drive or My Drive) to this folder. This is false when the item is not a folder. # Only populated for items in shared drives. # Corresponds to the JSON property `canAddFolderFromAnotherDrive` # @return [Boolean] attr_accessor :can_add_folder_from_another_drive alias_method :can_add_folder_from_another_drive?, :can_add_folder_from_another_drive # Whether the current user can add a parent for the item without removing an # existing parent in the same request. Not populated for shared drive files. # Corresponds to the JSON property `canAddMyDriveParent` # @return [Boolean] attr_accessor :can_add_my_drive_parent alias_method :can_add_my_drive_parent?, :can_add_my_drive_parent # Whether the current user can change the copyRequiresWriterPermission # restriction of this file. # Corresponds to the JSON property `canChangeCopyRequiresWriterPermission` # @return [Boolean] attr_accessor :can_change_copy_requires_writer_permission alias_method :can_change_copy_requires_writer_permission?, :can_change_copy_requires_writer_permission # Deprecated # Corresponds to the JSON property `canChangeRestrictedDownload` # @return [Boolean] attr_accessor :can_change_restricted_download alias_method :can_change_restricted_download?, :can_change_restricted_download # Whether the current user can comment on this file. # Corresponds to the JSON property `canComment` # @return [Boolean] attr_accessor :can_comment alias_method :can_comment?, :can_comment # Whether the current user can copy this file. For an item in a shared drive, # whether the current user can copy non-folder descendants of this item, or this # item itself if it is not a folder. # Corresponds to the JSON property `canCopy` # @return [Boolean] attr_accessor :can_copy alias_method :can_copy?, :can_copy # Whether the current user can delete this file. # Corresponds to the JSON property `canDelete` # @return [Boolean] attr_accessor :can_delete alias_method :can_delete?, :can_delete # Whether the current user can delete children of this folder. This is false # when the item is not a folder. Only populated for items in shared drives. # Corresponds to the JSON property `canDeleteChildren` # @return [Boolean] attr_accessor :can_delete_children alias_method :can_delete_children?, :can_delete_children # Whether the current user can download this file. # Corresponds to the JSON property `canDownload` # @return [Boolean] attr_accessor :can_download alias_method :can_download?, :can_download # Whether the current user can edit this file. Other factors may limit the type # of changes a user can make to a file. For example, see # canChangeCopyRequiresWriterPermission or canModifyContent. # Corresponds to the JSON property `canEdit` # @return [Boolean] attr_accessor :can_edit alias_method :can_edit?, :can_edit # Whether the current user can list the children of this folder. This is always # false when the item is not a folder. # Corresponds to the JSON property `canListChildren` # @return [Boolean] attr_accessor :can_list_children alias_method :can_list_children?, :can_list_children # Whether the current user can modify the content of this file. # Corresponds to the JSON property `canModifyContent` # @return [Boolean] attr_accessor :can_modify_content alias_method :can_modify_content?, :can_modify_content # Whether the current user can modify restrictions on content of this file. # Corresponds to the JSON property `canModifyContentRestriction` # @return [Boolean] attr_accessor :can_modify_content_restriction alias_method :can_modify_content_restriction?, :can_modify_content_restriction # Whether the current user can move children of this folder outside of the # shared drive. This is false when the item is not a folder. Only populated for # items in shared drives. # Corresponds to the JSON property `canMoveChildrenOutOfDrive` # @return [Boolean] attr_accessor :can_move_children_out_of_drive alias_method :can_move_children_out_of_drive?, :can_move_children_out_of_drive # Deprecated - use canMoveChildrenOutOfDrive instead. # Corresponds to the JSON property `canMoveChildrenOutOfTeamDrive` # @return [Boolean] attr_accessor :can_move_children_out_of_team_drive alias_method :can_move_children_out_of_team_drive?, :can_move_children_out_of_team_drive # Whether the current user can move children of this folder within this drive. # This is false when the item is not a folder. Note that a request to move the # child may still fail depending on the current user's access to the child and # to the destination folder. # Corresponds to the JSON property `canMoveChildrenWithinDrive` # @return [Boolean] attr_accessor :can_move_children_within_drive alias_method :can_move_children_within_drive?, :can_move_children_within_drive # Deprecated - use canMoveChildrenWithinDrive instead. # Corresponds to the JSON property `canMoveChildrenWithinTeamDrive` # @return [Boolean] attr_accessor :can_move_children_within_team_drive alias_method :can_move_children_within_team_drive?, :can_move_children_within_team_drive # Deprecated - use canMoveItemOutOfDrive instead. # Corresponds to the JSON property `canMoveItemIntoTeamDrive` # @return [Boolean] attr_accessor :can_move_item_into_team_drive alias_method :can_move_item_into_team_drive?, :can_move_item_into_team_drive # Whether the current user can move this item outside of this drive by changing # its parent. Note that a request to change the parent of the item may still # fail depending on the new parent that is being added. # Corresponds to the JSON property `canMoveItemOutOfDrive` # @return [Boolean] attr_accessor :can_move_item_out_of_drive alias_method :can_move_item_out_of_drive?, :can_move_item_out_of_drive # Deprecated - use canMoveItemOutOfDrive instead. # Corresponds to the JSON property `canMoveItemOutOfTeamDrive` # @return [Boolean] attr_accessor :can_move_item_out_of_team_drive alias_method :can_move_item_out_of_team_drive?, :can_move_item_out_of_team_drive # Whether the current user can move this item within this drive. Note that a # request to change the parent of the item may still fail depending on the new # parent that is being added and the parent that is being removed. # Corresponds to the JSON property `canMoveItemWithinDrive` # @return [Boolean] attr_accessor :can_move_item_within_drive alias_method :can_move_item_within_drive?, :can_move_item_within_drive # Deprecated - use canMoveItemWithinDrive instead. # Corresponds to the JSON property `canMoveItemWithinTeamDrive` # @return [Boolean] attr_accessor :can_move_item_within_team_drive alias_method :can_move_item_within_team_drive?, :can_move_item_within_team_drive # Deprecated - use canMoveItemWithinDrive or canMoveItemOutOfDrive instead. # Corresponds to the JSON property `canMoveTeamDriveItem` # @return [Boolean] attr_accessor :can_move_team_drive_item alias_method :can_move_team_drive_item?, :can_move_team_drive_item # Whether the current user can read the shared drive to which this file belongs. # Only populated for items in shared drives. # Corresponds to the JSON property `canReadDrive` # @return [Boolean] attr_accessor :can_read_drive alias_method :can_read_drive?, :can_read_drive # Whether the current user can read the revisions resource of this file. For a # shared drive item, whether revisions of non-folder descendants of this item, # or this item itself if it is not a folder, can be read. # Corresponds to the JSON property `canReadRevisions` # @return [Boolean] attr_accessor :can_read_revisions alias_method :can_read_revisions?, :can_read_revisions # Deprecated - use canReadDrive instead. # Corresponds to the JSON property `canReadTeamDrive` # @return [Boolean] attr_accessor :can_read_team_drive alias_method :can_read_team_drive?, :can_read_team_drive # Whether the current user can remove children from this folder. This is always # false when the item is not a folder. For a folder in a shared drive, use # canDeleteChildren or canTrashChildren instead. # Corresponds to the JSON property `canRemoveChildren` # @return [Boolean] attr_accessor :can_remove_children alias_method :can_remove_children?, :can_remove_children # Whether the current user can remove a parent from the item without adding # another parent in the same request. Not populated for shared drive files. # Corresponds to the JSON property `canRemoveMyDriveParent` # @return [Boolean] attr_accessor :can_remove_my_drive_parent alias_method :can_remove_my_drive_parent?, :can_remove_my_drive_parent # Whether the current user can rename this file. # Corresponds to the JSON property `canRename` # @return [Boolean] attr_accessor :can_rename alias_method :can_rename?, :can_rename # Whether the current user can modify the sharing settings for this file. # Corresponds to the JSON property `canShare` # @return [Boolean] attr_accessor :can_share alias_method :can_share?, :can_share # Whether the current user can move this file to trash. # Corresponds to the JSON property `canTrash` # @return [Boolean] attr_accessor :can_trash alias_method :can_trash?, :can_trash # Whether the current user can trash children of this folder. This is false when # the item is not a folder. Only populated for items in shared drives. # Corresponds to the JSON property `canTrashChildren` # @return [Boolean] attr_accessor :can_trash_children alias_method :can_trash_children?, :can_trash_children # Whether the current user can restore this file from trash. # Corresponds to the JSON property `canUntrash` # @return [Boolean] attr_accessor :can_untrash alias_method :can_untrash?, :can_untrash def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @can_add_children = args[:can_add_children] if args.key?(:can_add_children) @can_add_folder_from_another_drive = args[:can_add_folder_from_another_drive] if args.key?(:can_add_folder_from_another_drive) @can_add_my_drive_parent = args[:can_add_my_drive_parent] if args.key?(:can_add_my_drive_parent) @can_change_copy_requires_writer_permission = args[:can_change_copy_requires_writer_permission] if args.key?(:can_change_copy_requires_writer_permission) @can_change_restricted_download = args[:can_change_restricted_download] if args.key?(:can_change_restricted_download) @can_comment = args[:can_comment] if args.key?(:can_comment) @can_copy = args[:can_copy] if args.key?(:can_copy) @can_delete = args[:can_delete] if args.key?(:can_delete) @can_delete_children = args[:can_delete_children] if args.key?(:can_delete_children) @can_download = args[:can_download] if args.key?(:can_download) @can_edit = args[:can_edit] if args.key?(:can_edit) @can_list_children = args[:can_list_children] if args.key?(:can_list_children) @can_modify_content = args[:can_modify_content] if args.key?(:can_modify_content) @can_modify_content_restriction = args[:can_modify_content_restriction] if args.key?(:can_modify_content_restriction) @can_move_children_out_of_drive = args[:can_move_children_out_of_drive] if args.key?(:can_move_children_out_of_drive) @can_move_children_out_of_team_drive = args[:can_move_children_out_of_team_drive] if args.key?(:can_move_children_out_of_team_drive) @can_move_children_within_drive = args[:can_move_children_within_drive] if args.key?(:can_move_children_within_drive) @can_move_children_within_team_drive = args[:can_move_children_within_team_drive] if args.key?(:can_move_children_within_team_drive) @can_move_item_into_team_drive = args[:can_move_item_into_team_drive] if args.key?(:can_move_item_into_team_drive) @can_move_item_out_of_drive = args[:can_move_item_out_of_drive] if args.key?(:can_move_item_out_of_drive) @can_move_item_out_of_team_drive = args[:can_move_item_out_of_team_drive] if args.key?(:can_move_item_out_of_team_drive) @can_move_item_within_drive = args[:can_move_item_within_drive] if args.key?(:can_move_item_within_drive) @can_move_item_within_team_drive = args[:can_move_item_within_team_drive] if args.key?(:can_move_item_within_team_drive) @can_move_team_drive_item = args[:can_move_team_drive_item] if args.key?(:can_move_team_drive_item) @can_read_drive = args[:can_read_drive] if args.key?(:can_read_drive) @can_read_revisions = args[:can_read_revisions] if args.key?(:can_read_revisions) @can_read_team_drive = args[:can_read_team_drive] if args.key?(:can_read_team_drive) @can_remove_children = args[:can_remove_children] if args.key?(:can_remove_children) @can_remove_my_drive_parent = args[:can_remove_my_drive_parent] if args.key?(:can_remove_my_drive_parent) @can_rename = args[:can_rename] if args.key?(:can_rename) @can_share = args[:can_share] if args.key?(:can_share) @can_trash = args[:can_trash] if args.key?(:can_trash) @can_trash_children = args[:can_trash_children] if args.key?(:can_trash_children) @can_untrash = args[:can_untrash] if args.key?(:can_untrash) end end # Metadata about image media. This will only be present for image types, and its # contents will depend on what can be parsed from the image content. class ImageMediaMetadata include Google::Apis::Core::Hashable # The aperture used to create the photo (f-number). # Corresponds to the JSON property `aperture` # @return [Float] attr_accessor :aperture # The make of the camera used to create the photo. # Corresponds to the JSON property `cameraMake` # @return [String] attr_accessor :camera_make # The model of the camera used to create the photo. # Corresponds to the JSON property `cameraModel` # @return [String] attr_accessor :camera_model # The color space of the photo. # Corresponds to the JSON property `colorSpace` # @return [String] attr_accessor :color_space # The date and time the photo was taken (EXIF format timestamp). # Corresponds to the JSON property `date` # @return [String] attr_accessor :date # The exposure bias of the photo (APEX value). # Corresponds to the JSON property `exposureBias` # @return [Float] attr_accessor :exposure_bias # The exposure mode used to create the photo. # Corresponds to the JSON property `exposureMode` # @return [String] attr_accessor :exposure_mode # The length of the exposure, in seconds. # Corresponds to the JSON property `exposureTime` # @return [Float] attr_accessor :exposure_time # Whether a flash was used to create the photo. # Corresponds to the JSON property `flashUsed` # @return [Boolean] attr_accessor :flash_used alias_method :flash_used?, :flash_used # The focal length used to create the photo, in millimeters. # Corresponds to the JSON property `focalLength` # @return [Float] attr_accessor :focal_length # The height of the image in pixels. # Corresponds to the JSON property `height` # @return [Fixnum] attr_accessor :height # The ISO speed used to create the photo. # Corresponds to the JSON property `isoSpeed` # @return [Fixnum] attr_accessor :iso_speed # The lens used to create the photo. # Corresponds to the JSON property `lens` # @return [String] attr_accessor :lens # Geographic location information stored in the image. # Corresponds to the JSON property `location` # @return [Google::Apis::DriveV2::File::ImageMediaMetadata::Location] attr_accessor :location # The smallest f-number of the lens at the focal length used to create the photo # (APEX value). # Corresponds to the JSON property `maxApertureValue` # @return [Float] attr_accessor :max_aperture_value # The metering mode used to create the photo. # Corresponds to the JSON property `meteringMode` # @return [String] attr_accessor :metering_mode # The number of clockwise 90 degree rotations applied from the image's original # orientation. # Corresponds to the JSON property `rotation` # @return [Fixnum] attr_accessor :rotation # The type of sensor used to create the photo. # Corresponds to the JSON property `sensor` # @return [String] attr_accessor :sensor # The distance to the subject of the photo, in meters. # Corresponds to the JSON property `subjectDistance` # @return [Fixnum] attr_accessor :subject_distance # The white balance mode used to create the photo. # Corresponds to the JSON property `whiteBalance` # @return [String] attr_accessor :white_balance # The width of the image in pixels. # Corresponds to the JSON property `width` # @return [Fixnum] attr_accessor :width def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @aperture = args[:aperture] if args.key?(:aperture) @camera_make = args[:camera_make] if args.key?(:camera_make) @camera_model = args[:camera_model] if args.key?(:camera_model) @color_space = args[:color_space] if args.key?(:color_space) @date = args[:date] if args.key?(:date) @exposure_bias = args[:exposure_bias] if args.key?(:exposure_bias) @exposure_mode = args[:exposure_mode] if args.key?(:exposure_mode) @exposure_time = args[:exposure_time] if args.key?(:exposure_time) @flash_used = args[:flash_used] if args.key?(:flash_used) @focal_length = args[:focal_length] if args.key?(:focal_length) @height = args[:height] if args.key?(:height) @iso_speed = args[:iso_speed] if args.key?(:iso_speed) @lens = args[:lens] if args.key?(:lens) @location = args[:location] if args.key?(:location) @max_aperture_value = args[:max_aperture_value] if args.key?(:max_aperture_value) @metering_mode = args[:metering_mode] if args.key?(:metering_mode) @rotation = args[:rotation] if args.key?(:rotation) @sensor = args[:sensor] if args.key?(:sensor) @subject_distance = args[:subject_distance] if args.key?(:subject_distance) @white_balance = args[:white_balance] if args.key?(:white_balance) @width = args[:width] if args.key?(:width) end # Geographic location information stored in the image. class Location include Google::Apis::Core::Hashable # The altitude stored in the image. # Corresponds to the JSON property `altitude` # @return [Float] attr_accessor :altitude # The latitude stored in the image. # Corresponds to the JSON property `latitude` # @return [Float] attr_accessor :latitude # The longitude stored in the image. # Corresponds to the JSON property `longitude` # @return [Float] attr_accessor :longitude def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @altitude = args[:altitude] if args.key?(:altitude) @latitude = args[:latitude] if args.key?(:latitude) @longitude = args[:longitude] if args.key?(:longitude) end end end # Indexable text attributes for the file (can only be written) class IndexableText include Google::Apis::Core::Hashable # The text to be indexed for this file. # Corresponds to the JSON property `text` # @return [String] attr_accessor :text def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @text = args[:text] if args.key?(:text) end end # A group of labels for the file. class Labels include Google::Apis::Core::Hashable # Deprecated. # Corresponds to the JSON property `hidden` # @return [Boolean] attr_accessor :hidden alias_method :hidden?, :hidden # Whether the file has been modified by this user. # Corresponds to the JSON property `modified` # @return [Boolean] attr_accessor :modified alias_method :modified?, :modified # Deprecated - use copyRequiresWriterPermission instead. # Corresponds to the JSON property `restricted` # @return [Boolean] attr_accessor :restricted alias_method :restricted?, :restricted # Whether this file is starred by the user. # Corresponds to the JSON property `starred` # @return [Boolean] attr_accessor :starred alias_method :starred?, :starred # Whether the file has been trashed, either explicitly or from a trashed parent # folder. Only the owner may trash a file. The trashed item is excluded from all # files.list responses returned for any user who does not own the file. However, # all users with access to the file can see the trashed item metadata in an API # response. All users with access can copy, download, export, and share the file. # Corresponds to the JSON property `trashed` # @return [Boolean] attr_accessor :trashed alias_method :trashed?, :trashed # Whether this file has been viewed by this user. # Corresponds to the JSON property `viewed` # @return [Boolean] attr_accessor :viewed alias_method :viewed?, :viewed def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @hidden = args[:hidden] if args.key?(:hidden) @modified = args[:modified] if args.key?(:modified) @restricted = args[:restricted] if args.key?(:restricted) @starred = args[:starred] if args.key?(:starred) @trashed = args[:trashed] if args.key?(:trashed) @viewed = args[:viewed] if args.key?(:viewed) end end # Shortcut file details. Only populated for shortcut files, which have the # mimeType field set to application/vnd.google-apps.shortcut. class ShortcutDetails include Google::Apis::Core::Hashable # The ID of the file that this shortcut points to. # Corresponds to the JSON property `targetId` # @return [String] attr_accessor :target_id # The MIME type of the file that this shortcut points to. The value of this # field is a snapshot of the target's MIME type, captured when the shortcut is # created. # Corresponds to the JSON property `targetMimeType` # @return [String] attr_accessor :target_mime_type def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @target_id = args[:target_id] if args.key?(:target_id) @target_mime_type = args[:target_mime_type] if args.key?(:target_mime_type) end end # A thumbnail for the file. This will only be used if a standard thumbnail # cannot be generated. class Thumbnail include Google::Apis::Core::Hashable # The URL-safe Base64 encoded bytes of the thumbnail image. It should conform to # RFC 4648 section 5. # Corresponds to the JSON property `image` # NOTE: Values are automatically base64 encoded/decoded in the client library. # @return [String] attr_accessor :image # The MIME type of the thumbnail. # Corresponds to the JSON property `mimeType` # @return [String] attr_accessor :mime_type def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @image = args[:image] if args.key?(:image) @mime_type = args[:mime_type] if args.key?(:mime_type) end end # Metadata about video media. This will only be present for video types. class VideoMediaMetadata include Google::Apis::Core::Hashable # The duration of the video in milliseconds. # Corresponds to the JSON property `durationMillis` # @return [Fixnum] attr_accessor :duration_millis # The height of the video in pixels. # Corresponds to the JSON property `height` # @return [Fixnum] attr_accessor :height # The width of the video in pixels. # Corresponds to the JSON property `width` # @return [Fixnum] attr_accessor :width def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @duration_millis = args[:duration_millis] if args.key?(:duration_millis) @height = args[:height] if args.key?(:height) @width = args[:width] if args.key?(:width) end end end # A list of files. class FileList include Google::Apis::Core::Hashable # The ETag of the list. # Corresponds to the JSON property `etag` # @return [String] attr_accessor :etag # Whether the search process was incomplete. If true, then some search results # may be missing, since all documents were not searched. This may occur when # searching multiple drives with the "allDrives" corpora, but all corpora could # not be searched. When this happens, it is suggested that clients narrow their # query by choosing a different corpus such as "default" or "drive". # Corresponds to the JSON property `incompleteSearch` # @return [Boolean] attr_accessor :incomplete_search alias_method :incomplete_search?, :incomplete_search # The list of files. If nextPageToken is populated, then this list may be # incomplete and an additional page of results should be fetched. # Corresponds to the JSON property `items` # @return [Array] attr_accessor :items # This is always drive#fileList. # Corresponds to the JSON property `kind` # @return [String] attr_accessor :kind # A link to the next page of files. # Corresponds to the JSON property `nextLink` # @return [String] attr_accessor :next_link # The page token for the next page of files. This will be absent if the end of # the files list has been reached. If the token is rejected for any reason, it # should be discarded, and pagination should be restarted from the first page of # results. # Corresponds to the JSON property `nextPageToken` # @return [String] attr_accessor :next_page_token # A link back to this list. # Corresponds to the JSON property `selfLink` # @return [String] attr_accessor :self_link def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @etag = args[:etag] if args.key?(:etag) @incomplete_search = args[:incomplete_search] if args.key?(:incomplete_search) @items = args[:items] if args.key?(:items) @kind = args[:kind] if args.key?(:kind) @next_link = args[:next_link] if args.key?(:next_link) @next_page_token = args[:next_page_token] if args.key?(:next_page_token) @self_link = args[:self_link] if args.key?(:self_link) end end # A list of generated IDs which can be provided in insert requests class GeneratedIds include Google::Apis::Core::Hashable # The IDs generated for the requesting user in the specified space. # Corresponds to the JSON property `ids` # @return [Array] attr_accessor :ids # This is always drive#generatedIds # Corresponds to the JSON property `kind` # @return [String] attr_accessor :kind # The type of file that can be created with these IDs. # Corresponds to the JSON property `space` # @return [String] attr_accessor :space def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @ids = args[:ids] if args.key?(:ids) @kind = args[:kind] if args.key?(:kind) @space = args[:space] if args.key?(:space) end end # A list of a file's parents. class ParentList include Google::Apis::Core::Hashable # The ETag of the list. # Corresponds to the JSON property `etag` # @return [String] attr_accessor :etag # The list of parents. # Corresponds to the JSON property `items` # @return [Array] attr_accessor :items # This is always drive#parentList. # Corresponds to the JSON property `kind` # @return [String] attr_accessor :kind # A link back to this list. # Corresponds to the JSON property `selfLink` # @return [String] attr_accessor :self_link def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @etag = args[:etag] if args.key?(:etag) @items = args[:items] if args.key?(:items) @kind = args[:kind] if args.key?(:kind) @self_link = args[:self_link] if args.key?(:self_link) end end # A reference to a file's parent. class ParentReference include Google::Apis::Core::Hashable # The ID of the parent. # Corresponds to the JSON property `id` # @return [String] attr_accessor :id # Whether or not the parent is the root folder. # Corresponds to the JSON property `isRoot` # @return [Boolean] attr_accessor :is_root alias_method :is_root?, :is_root # This is always drive#parentReference. # Corresponds to the JSON property `kind` # @return [String] attr_accessor :kind # A link to the parent. # Corresponds to the JSON property `parentLink` # @return [String] attr_accessor :parent_link # A link back to this reference. # Corresponds to the JSON property `selfLink` # @return [String] attr_accessor :self_link def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @id = args[:id] if args.key?(:id) @is_root = args[:is_root] if args.key?(:is_root) @kind = args[:kind] if args.key?(:kind) @parent_link = args[:parent_link] if args.key?(:parent_link) @self_link = args[:self_link] if args.key?(:self_link) end end # A permission for a file. class Permission include Google::Apis::Core::Hashable # Additional roles for this user. Only commenter is currently allowed, though # more may be supported in the future. # Corresponds to the JSON property `additionalRoles` # @return [Array] attr_accessor :additional_roles # Deprecated. # Corresponds to the JSON property `authKey` # @return [String] attr_accessor :auth_key # Whether the account associated with this permission has been deleted. This # field only pertains to user and group permissions. # Corresponds to the JSON property `deleted` # @return [Boolean] attr_accessor :deleted alias_method :deleted?, :deleted # The domain name of the entity this permission refers to. This is an output- # only field which is present when the permission type is user, group or domain. # Corresponds to the JSON property `domain` # @return [String] attr_accessor :domain # The email address of the user or group this permission refers to. This is an # output-only field which is present when the permission type is user or group. # Corresponds to the JSON property `emailAddress` # @return [String] attr_accessor :email_address # The ETag of the permission. # Corresponds to the JSON property `etag` # @return [String] attr_accessor :etag # The time at which this permission will expire (RFC 3339 date-time). Expiration # dates have the following restrictions: # - They cannot be set on shared drive items # - They can only be set on user and group permissions # - The date must be in the future # - The date cannot be more than a year in the future # - The date can only be set on drive.permissions.update or drive.permissions. # patch requests # Corresponds to the JSON property `expirationDate` # @return [DateTime] attr_accessor :expiration_date # The ID of the user this permission refers to, and identical to the # permissionId in the About and Files resources. When making a drive.permissions. # insert request, exactly one of the id or value fields must be specified unless # the permission type is anyone, in which case both id and value are ignored. # Corresponds to the JSON property `id` # @return [String] attr_accessor :id # This is always drive#permission. # Corresponds to the JSON property `kind` # @return [String] attr_accessor :kind # The name for this permission. # Corresponds to the JSON property `name` # @return [String] attr_accessor :name # Details of whether the permissions on this shared drive item are inherited or # directly on this item. This is an output-only field which is present only for # shared drive items. # Corresponds to the JSON property `permissionDetails` # @return [Array] attr_accessor :permission_details # A link to the profile photo, if available. # Corresponds to the JSON property `photoLink` # @return [String] attr_accessor :photo_link # The primary role for this user. While new values may be supported in the # future, the following are currently allowed: # - owner # - organizer # - fileOrganizer # - writer # - reader # Corresponds to the JSON property `role` # @return [String] attr_accessor :role # A link back to this permission. # Corresponds to the JSON property `selfLink` # @return [String] attr_accessor :self_link # Deprecated - use permissionDetails instead. # Corresponds to the JSON property `teamDrivePermissionDetails` # @return [Array] attr_accessor :team_drive_permission_details # The account type. Allowed values are: # - user # - group # - domain # - anyone # Corresponds to the JSON property `type` # @return [String] attr_accessor :type # The email address or domain name for the entity. This is used during inserts # and is not populated in responses. When making a drive.permissions.insert # request, exactly one of the id or value fields must be specified unless the # permission type is anyone, in which case both id and value are ignored. # Corresponds to the JSON property `value` # @return [String] attr_accessor :value # Indicates the view for this permission. Only populated for permissions that # belong to a view. published is the only supported value. # Corresponds to the JSON property `view` # @return [String] attr_accessor :view # Whether the link is required for this permission. # Corresponds to the JSON property `withLink` # @return [Boolean] attr_accessor :with_link alias_method :with_link?, :with_link def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @additional_roles = args[:additional_roles] if args.key?(:additional_roles) @auth_key = args[:auth_key] if args.key?(:auth_key) @deleted = args[:deleted] if args.key?(:deleted) @domain = args[:domain] if args.key?(:domain) @email_address = args[:email_address] if args.key?(:email_address) @etag = args[:etag] if args.key?(:etag) @expiration_date = args[:expiration_date] if args.key?(:expiration_date) @id = args[:id] if args.key?(:id) @kind = args[:kind] if args.key?(:kind) @name = args[:name] if args.key?(:name) @permission_details = args[:permission_details] if args.key?(:permission_details) @photo_link = args[:photo_link] if args.key?(:photo_link) @role = args[:role] if args.key?(:role) @self_link = args[:self_link] if args.key?(:self_link) @team_drive_permission_details = args[:team_drive_permission_details] if args.key?(:team_drive_permission_details) @type = args[:type] if args.key?(:type) @value = args[:value] if args.key?(:value) @view = args[:view] if args.key?(:view) @with_link = args[:with_link] if args.key?(:with_link) end # class PermissionDetail include Google::Apis::Core::Hashable # Additional roles for this user. Only commenter is currently possible, though # more may be supported in the future. # Corresponds to the JSON property `additionalRoles` # @return [Array] attr_accessor :additional_roles # Whether this permission is inherited. This field is always populated. This is # an output-only field. # Corresponds to the JSON property `inherited` # @return [Boolean] attr_accessor :inherited alias_method :inherited?, :inherited # The ID of the item from which this permission is inherited. This is an output- # only field. # Corresponds to the JSON property `inheritedFrom` # @return [String] attr_accessor :inherited_from # The permission type for this user. While new values may be added in future, # the following are currently possible: # - file # - member # Corresponds to the JSON property `permissionType` # @return [String] attr_accessor :permission_type # The primary role for this user. While new values may be added in the future, # the following are currently possible: # - organizer # - fileOrganizer # - writer # - reader # Corresponds to the JSON property `role` # @return [String] attr_accessor :role def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @additional_roles = args[:additional_roles] if args.key?(:additional_roles) @inherited = args[:inherited] if args.key?(:inherited) @inherited_from = args[:inherited_from] if args.key?(:inherited_from) @permission_type = args[:permission_type] if args.key?(:permission_type) @role = args[:role] if args.key?(:role) end end # class TeamDrivePermissionDetail include Google::Apis::Core::Hashable # Deprecated - use permissionDetails/additionalRoles instead. # Corresponds to the JSON property `additionalRoles` # @return [Array] attr_accessor :additional_roles # Deprecated - use permissionDetails/inherited instead. # Corresponds to the JSON property `inherited` # @return [Boolean] attr_accessor :inherited alias_method :inherited?, :inherited # Deprecated - use permissionDetails/inheritedFrom instead. # Corresponds to the JSON property `inheritedFrom` # @return [String] attr_accessor :inherited_from # Deprecated - use permissionDetails/role instead. # Corresponds to the JSON property `role` # @return [String] attr_accessor :role # Deprecated - use permissionDetails/permissionType instead. # Corresponds to the JSON property `teamDrivePermissionType` # @return [String] attr_accessor :team_drive_permission_type def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @additional_roles = args[:additional_roles] if args.key?(:additional_roles) @inherited = args[:inherited] if args.key?(:inherited) @inherited_from = args[:inherited_from] if args.key?(:inherited_from) @role = args[:role] if args.key?(:role) @team_drive_permission_type = args[:team_drive_permission_type] if args.key?(:team_drive_permission_type) end end end # An ID for a user or group as seen in Permission items. class PermissionId include Google::Apis::Core::Hashable # The permission ID. # Corresponds to the JSON property `id` # @return [String] attr_accessor :id # This is always drive#permissionId. # Corresponds to the JSON property `kind` # @return [String] attr_accessor :kind def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @id = args[:id] if args.key?(:id) @kind = args[:kind] if args.key?(:kind) end end # A list of permissions associated with a file. class PermissionList include Google::Apis::Core::Hashable # The ETag of the list. # Corresponds to the JSON property `etag` # @return [String] attr_accessor :etag # The list of permissions. # Corresponds to the JSON property `items` # @return [Array] attr_accessor :items # This is always drive#permissionList. # Corresponds to the JSON property `kind` # @return [String] attr_accessor :kind # The page token for the next page of permissions. This field will be absent if # the end of the permissions list has been reached. If the token is rejected for # any reason, it should be discarded, and pagination should be restarted from # the first page of results. # Corresponds to the JSON property `nextPageToken` # @return [String] attr_accessor :next_page_token # A link back to this list. # Corresponds to the JSON property `selfLink` # @return [String] attr_accessor :self_link def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @etag = args[:etag] if args.key?(:etag) @items = args[:items] if args.key?(:items) @kind = args[:kind] if args.key?(:kind) @next_page_token = args[:next_page_token] if args.key?(:next_page_token) @self_link = args[:self_link] if args.key?(:self_link) end end # A key-value pair attached to a file that is either public or private to an # application. # The following limits apply to file properties: # - Maximum of 100 properties total per file # - Maximum of 30 private properties per app # - Maximum of 30 public properties # - Maximum of 124 bytes size limit on (key + value) string in UTF-8 encoding # for a single property. class Property include Google::Apis::Core::Hashable # ETag of the property. # Corresponds to the JSON property `etag` # @return [String] attr_accessor :etag # The key of this property. # Corresponds to the JSON property `key` # @return [String] attr_accessor :key # This is always drive#property. # Corresponds to the JSON property `kind` # @return [String] attr_accessor :kind # The link back to this property. # Corresponds to the JSON property `selfLink` # @return [String] attr_accessor :self_link # The value of this property. # Corresponds to the JSON property `value` # @return [String] attr_accessor :value # The visibility of this property. Allowed values are PRIVATE and PUBLIC. ( # Default: PRIVATE). Private properties can only be retrieved using an # authenticated request. An authenticated request uses an access token obtained # with a OAuth 2 client ID. You cannot use an API key to retrieve private # properties. # Corresponds to the JSON property `visibility` # @return [String] attr_accessor :visibility def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @etag = args[:etag] if args.key?(:etag) @key = args[:key] if args.key?(:key) @kind = args[:kind] if args.key?(:kind) @self_link = args[:self_link] if args.key?(:self_link) @value = args[:value] if args.key?(:value) @visibility = args[:visibility] if args.key?(:visibility) end end # A collection of properties, key-value pairs that are either public or private # to an application. class PropertyList include Google::Apis::Core::Hashable # The ETag of the list. # Corresponds to the JSON property `etag` # @return [String] attr_accessor :etag # The list of properties. # Corresponds to the JSON property `items` # @return [Array] attr_accessor :items # This is always drive#propertyList. # Corresponds to the JSON property `kind` # @return [String] attr_accessor :kind # The link back to this list. # Corresponds to the JSON property `selfLink` # @return [String] attr_accessor :self_link def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @etag = args[:etag] if args.key?(:etag) @items = args[:items] if args.key?(:items) @kind = args[:kind] if args.key?(:kind) @self_link = args[:self_link] if args.key?(:self_link) end end # A revision of a file. class Revision include Google::Apis::Core::Hashable # # Corresponds to the JSON property `downloadUrl` # @return [String] attr_accessor :download_url # The ETag of the revision. # Corresponds to the JSON property `etag` # @return [String] attr_accessor :etag # Links for exporting Docs Editors files to specific formats. # Corresponds to the JSON property `exportLinks` # @return [Hash] attr_accessor :export_links # The size of the revision in bytes. This will only be populated on files with # content stored in Drive. # Corresponds to the JSON property `fileSize` # @return [Fixnum] attr_accessor :file_size # The ID of the revision. # Corresponds to the JSON property `id` # @return [String] attr_accessor :id # This is always drive#revision. # Corresponds to the JSON property `kind` # @return [String] attr_accessor :kind # Information about a Drive user. # Corresponds to the JSON property `lastModifyingUser` # @return [Google::Apis::DriveV2::User] attr_accessor :last_modifying_user # Name of the last user to modify this revision. # Corresponds to the JSON property `lastModifyingUserName` # @return [String] attr_accessor :last_modifying_user_name # An MD5 checksum for the content of this revision. This will only be populated # on files with content stored in Drive. # Corresponds to the JSON property `md5Checksum` # @return [String] attr_accessor :md5_checksum # The MIME type of the revision. # Corresponds to the JSON property `mimeType` # @return [String] attr_accessor :mime_type # Last time this revision was modified (formatted RFC 3339 timestamp). # Corresponds to the JSON property `modifiedDate` # @return [DateTime] attr_accessor :modified_date # The original filename when this revision was created. This will only be # populated on files with content stored in Drive. # Corresponds to the JSON property `originalFilename` # @return [String] attr_accessor :original_filename # Whether this revision is pinned to prevent automatic purging. This will only # be populated and can only be modified on files with content stored in Drive, # excluding Docs Editors files. Revisions can also be pinned when they are # created through the drive.files.insert/update/copy by using the pinned query # parameter. Pinned revisions are stored indefinitely using additional storage # quota, up to a maximum of 200 revisions. # Corresponds to the JSON property `pinned` # @return [Boolean] attr_accessor :pinned alias_method :pinned?, :pinned # Whether subsequent revisions will be automatically republished. This is only # populated and can only be modified for Docs Editors files. # Corresponds to the JSON property `publishAuto` # @return [Boolean] attr_accessor :publish_auto alias_method :publish_auto?, :publish_auto # Whether this revision is published. This is only populated and can only be # modified for Docs Editors files. # Corresponds to the JSON property `published` # @return [Boolean] attr_accessor :published alias_method :published?, :published # A link to the published revision. This is only populated for Google Sites # files. # Corresponds to the JSON property `publishedLink` # @return [String] attr_accessor :published_link # Whether this revision is published outside the domain. This is only populated # and can only be modified for Docs Editors files. # Corresponds to the JSON property `publishedOutsideDomain` # @return [Boolean] attr_accessor :published_outside_domain alias_method :published_outside_domain?, :published_outside_domain # A link back to this revision. # Corresponds to the JSON property `selfLink` # @return [String] attr_accessor :self_link def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @download_url = args[:download_url] if args.key?(:download_url) @etag = args[:etag] if args.key?(:etag) @export_links = args[:export_links] if args.key?(:export_links) @file_size = args[:file_size] if args.key?(:file_size) @id = args[:id] if args.key?(:id) @kind = args[:kind] if args.key?(:kind) @last_modifying_user = args[:last_modifying_user] if args.key?(:last_modifying_user) @last_modifying_user_name = args[:last_modifying_user_name] if args.key?(:last_modifying_user_name) @md5_checksum = args[:md5_checksum] if args.key?(:md5_checksum) @mime_type = args[:mime_type] if args.key?(:mime_type) @modified_date = args[:modified_date] if args.key?(:modified_date) @original_filename = args[:original_filename] if args.key?(:original_filename) @pinned = args[:pinned] if args.key?(:pinned) @publish_auto = args[:publish_auto] if args.key?(:publish_auto) @published = args[:published] if args.key?(:published) @published_link = args[:published_link] if args.key?(:published_link) @published_outside_domain = args[:published_outside_domain] if args.key?(:published_outside_domain) @self_link = args[:self_link] if args.key?(:self_link) end end # A list of revisions of a file. class RevisionList include Google::Apis::Core::Hashable # The ETag of the list. # Corresponds to the JSON property `etag` # @return [String] attr_accessor :etag # The list of revisions. If nextPageToken is populated, then this list may be # incomplete and an additional page of results should be fetched. # Corresponds to the JSON property `items` # @return [Array] attr_accessor :items # This is always drive#revisionList. # Corresponds to the JSON property `kind` # @return [String] attr_accessor :kind # The page token for the next page of revisions. This field will be absent if # the end of the revisions list has been reached. If the token is rejected for # any reason, it should be discarded and pagination should be restarted from the # first page of results. # Corresponds to the JSON property `nextPageToken` # @return [String] attr_accessor :next_page_token # A link back to this list. # Corresponds to the JSON property `selfLink` # @return [String] attr_accessor :self_link def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @etag = args[:etag] if args.key?(:etag) @items = args[:items] if args.key?(:items) @kind = args[:kind] if args.key?(:kind) @next_page_token = args[:next_page_token] if args.key?(:next_page_token) @self_link = args[:self_link] if args.key?(:self_link) end end # class StartPageToken include Google::Apis::Core::Hashable # Identifies what kind of resource this is. Value: the fixed string "drive# # startPageToken". # Corresponds to the JSON property `kind` # @return [String] attr_accessor :kind # The starting page token for listing changes. # Corresponds to the JSON property `startPageToken` # @return [String] attr_accessor :start_page_token def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @kind = args[:kind] if args.key?(:kind) @start_page_token = args[:start_page_token] if args.key?(:start_page_token) end end # Deprecated: use the drive collection instead. class TeamDrive include Google::Apis::Core::Hashable # An image file and cropping parameters from which a background image for this # Team Drive is set. This is a write only field; it can only be set on drive. # teamdrives.update requests that don't set themeId. When specified, all fields # of the backgroundImageFile must be set. # Corresponds to the JSON property `backgroundImageFile` # @return [Google::Apis::DriveV2::TeamDrive::BackgroundImageFile] attr_accessor :background_image_file # A short-lived link to this Team Drive's background image. # Corresponds to the JSON property `backgroundImageLink` # @return [String] attr_accessor :background_image_link # Capabilities the current user has on this Team Drive. # Corresponds to the JSON property `capabilities` # @return [Google::Apis::DriveV2::TeamDrive::Capabilities] attr_accessor :capabilities # The color of this Team Drive as an RGB hex string. It can only be set on a # drive.teamdrives.update request that does not set themeId. # Corresponds to the JSON property `colorRgb` # @return [String] attr_accessor :color_rgb # The time at which the Team Drive was created (RFC 3339 date-time). # Corresponds to the JSON property `createdDate` # @return [DateTime] attr_accessor :created_date # The ID of this Team Drive which is also the ID of the top level folder of this # Team Drive. # Corresponds to the JSON property `id` # @return [String] attr_accessor :id # This is always drive#teamDrive # Corresponds to the JSON property `kind` # @return [String] attr_accessor :kind # The name of this Team Drive. # Corresponds to the JSON property `name` # @return [String] attr_accessor :name # A set of restrictions that apply to this Team Drive or items inside this Team # Drive. # Corresponds to the JSON property `restrictions` # @return [Google::Apis::DriveV2::TeamDrive::Restrictions] attr_accessor :restrictions # The ID of the theme from which the background image and color will be set. The # set of possible teamDriveThemes can be retrieved from a drive.about.get # response. When not specified on a drive.teamdrives.insert request, a random # theme is chosen from which the background image and color are set. This is a # write-only field; it can only be set on requests that don't set colorRgb or # backgroundImageFile. # Corresponds to the JSON property `themeId` # @return [String] attr_accessor :theme_id def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @background_image_file = args[:background_image_file] if args.key?(:background_image_file) @background_image_link = args[:background_image_link] if args.key?(:background_image_link) @capabilities = args[:capabilities] if args.key?(:capabilities) @color_rgb = args[:color_rgb] if args.key?(:color_rgb) @created_date = args[:created_date] if args.key?(:created_date) @id = args[:id] if args.key?(:id) @kind = args[:kind] if args.key?(:kind) @name = args[:name] if args.key?(:name) @restrictions = args[:restrictions] if args.key?(:restrictions) @theme_id = args[:theme_id] if args.key?(:theme_id) end # An image file and cropping parameters from which a background image for this # Team Drive is set. This is a write only field; it can only be set on drive. # teamdrives.update requests that don't set themeId. When specified, all fields # of the backgroundImageFile must be set. class BackgroundImageFile include Google::Apis::Core::Hashable # The ID of an image file in Drive to use for the background image. # Corresponds to the JSON property `id` # @return [String] attr_accessor :id # The width of the cropped image in the closed range of 0 to 1. This value # represents the width of the cropped image divided by the width of the entire # image. The height is computed by applying a width to height aspect ratio of 80 # to 9. The resulting image must be at least 1280 pixels wide and 144 pixels # high. # Corresponds to the JSON property `width` # @return [Float] attr_accessor :width # The X coordinate of the upper left corner of the cropping area in the # background image. This is a value in the closed range of 0 to 1. This value # represents the horizontal distance from the left side of the entire image to # the left side of the cropping area divided by the width of the entire image. # Corresponds to the JSON property `xCoordinate` # @return [Float] attr_accessor :x_coordinate # The Y coordinate of the upper left corner of the cropping area in the # background image. This is a value in the closed range of 0 to 1. This value # represents the vertical distance from the top side of the entire image to the # top side of the cropping area divided by the height of the entire image. # Corresponds to the JSON property `yCoordinate` # @return [Float] attr_accessor :y_coordinate def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @id = args[:id] if args.key?(:id) @width = args[:width] if args.key?(:width) @x_coordinate = args[:x_coordinate] if args.key?(:x_coordinate) @y_coordinate = args[:y_coordinate] if args.key?(:y_coordinate) end end # Capabilities the current user has on this Team Drive. class Capabilities include Google::Apis::Core::Hashable # Whether the current user can add children to folders in this Team Drive. # Corresponds to the JSON property `canAddChildren` # @return [Boolean] attr_accessor :can_add_children alias_method :can_add_children?, :can_add_children # Whether the current user can change the copyRequiresWriterPermission # restriction of this Team Drive. # Corresponds to the JSON property `canChangeCopyRequiresWriterPermissionRestriction` # @return [Boolean] attr_accessor :can_change_copy_requires_writer_permission_restriction alias_method :can_change_copy_requires_writer_permission_restriction?, :can_change_copy_requires_writer_permission_restriction # Whether the current user can change the domainUsersOnly restriction of this # Team Drive. # Corresponds to the JSON property `canChangeDomainUsersOnlyRestriction` # @return [Boolean] attr_accessor :can_change_domain_users_only_restriction alias_method :can_change_domain_users_only_restriction?, :can_change_domain_users_only_restriction # Whether the current user can change the background of this Team Drive. # Corresponds to the JSON property `canChangeTeamDriveBackground` # @return [Boolean] attr_accessor :can_change_team_drive_background alias_method :can_change_team_drive_background?, :can_change_team_drive_background # Whether the current user can change the teamMembersOnly restriction of this # Team Drive. # Corresponds to the JSON property `canChangeTeamMembersOnlyRestriction` # @return [Boolean] attr_accessor :can_change_team_members_only_restriction alias_method :can_change_team_members_only_restriction?, :can_change_team_members_only_restriction # Whether the current user can comment on files in this Team Drive. # Corresponds to the JSON property `canComment` # @return [Boolean] attr_accessor :can_comment alias_method :can_comment?, :can_comment # Whether the current user can copy files in this Team Drive. # Corresponds to the JSON property `canCopy` # @return [Boolean] attr_accessor :can_copy alias_method :can_copy?, :can_copy # Whether the current user can delete children from folders in this Team Drive. # Corresponds to the JSON property `canDeleteChildren` # @return [Boolean] attr_accessor :can_delete_children alias_method :can_delete_children?, :can_delete_children # Whether the current user can delete this Team Drive. Attempting to delete the # Team Drive may still fail if there are untrashed items inside the Team Drive. # Corresponds to the JSON property `canDeleteTeamDrive` # @return [Boolean] attr_accessor :can_delete_team_drive alias_method :can_delete_team_drive?, :can_delete_team_drive # Whether the current user can download files in this Team Drive. # Corresponds to the JSON property `canDownload` # @return [Boolean] attr_accessor :can_download alias_method :can_download?, :can_download # Whether the current user can edit files in this Team Drive # Corresponds to the JSON property `canEdit` # @return [Boolean] attr_accessor :can_edit alias_method :can_edit?, :can_edit # Whether the current user can list the children of folders in this Team Drive. # Corresponds to the JSON property `canListChildren` # @return [Boolean] attr_accessor :can_list_children alias_method :can_list_children?, :can_list_children # Whether the current user can add members to this Team Drive or remove them or # change their role. # Corresponds to the JSON property `canManageMembers` # @return [Boolean] attr_accessor :can_manage_members alias_method :can_manage_members?, :can_manage_members # Whether the current user can read the revisions resource of files in this Team # Drive. # Corresponds to the JSON property `canReadRevisions` # @return [Boolean] attr_accessor :can_read_revisions alias_method :can_read_revisions?, :can_read_revisions # Deprecated - use canDeleteChildren or canTrashChildren instead. # Corresponds to the JSON property `canRemoveChildren` # @return [Boolean] attr_accessor :can_remove_children alias_method :can_remove_children?, :can_remove_children # Whether the current user can rename files or folders in this Team Drive. # Corresponds to the JSON property `canRename` # @return [Boolean] attr_accessor :can_rename alias_method :can_rename?, :can_rename # Whether the current user can rename this Team Drive. # Corresponds to the JSON property `canRenameTeamDrive` # @return [Boolean] attr_accessor :can_rename_team_drive alias_method :can_rename_team_drive?, :can_rename_team_drive # Whether the current user can share files or folders in this Team Drive. # Corresponds to the JSON property `canShare` # @return [Boolean] attr_accessor :can_share alias_method :can_share?, :can_share # Whether the current user can trash children from folders in this Team Drive. # Corresponds to the JSON property `canTrashChildren` # @return [Boolean] attr_accessor :can_trash_children alias_method :can_trash_children?, :can_trash_children def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @can_add_children = args[:can_add_children] if args.key?(:can_add_children) @can_change_copy_requires_writer_permission_restriction = args[:can_change_copy_requires_writer_permission_restriction] if args.key?(:can_change_copy_requires_writer_permission_restriction) @can_change_domain_users_only_restriction = args[:can_change_domain_users_only_restriction] if args.key?(:can_change_domain_users_only_restriction) @can_change_team_drive_background = args[:can_change_team_drive_background] if args.key?(:can_change_team_drive_background) @can_change_team_members_only_restriction = args[:can_change_team_members_only_restriction] if args.key?(:can_change_team_members_only_restriction) @can_comment = args[:can_comment] if args.key?(:can_comment) @can_copy = args[:can_copy] if args.key?(:can_copy) @can_delete_children = args[:can_delete_children] if args.key?(:can_delete_children) @can_delete_team_drive = args[:can_delete_team_drive] if args.key?(:can_delete_team_drive) @can_download = args[:can_download] if args.key?(:can_download) @can_edit = args[:can_edit] if args.key?(:can_edit) @can_list_children = args[:can_list_children] if args.key?(:can_list_children) @can_manage_members = args[:can_manage_members] if args.key?(:can_manage_members) @can_read_revisions = args[:can_read_revisions] if args.key?(:can_read_revisions) @can_remove_children = args[:can_remove_children] if args.key?(:can_remove_children) @can_rename = args[:can_rename] if args.key?(:can_rename) @can_rename_team_drive = args[:can_rename_team_drive] if args.key?(:can_rename_team_drive) @can_share = args[:can_share] if args.key?(:can_share) @can_trash_children = args[:can_trash_children] if args.key?(:can_trash_children) end end # A set of restrictions that apply to this Team Drive or items inside this Team # Drive. class Restrictions include Google::Apis::Core::Hashable # Whether administrative privileges on this Team Drive are required to modify # restrictions. # Corresponds to the JSON property `adminManagedRestrictions` # @return [Boolean] attr_accessor :admin_managed_restrictions alias_method :admin_managed_restrictions?, :admin_managed_restrictions # Whether the options to copy, print, or download files inside this Team Drive, # should be disabled for readers and commenters. When this restriction is set to # true, it will override the similarly named field to true for any file inside # this Team Drive. # Corresponds to the JSON property `copyRequiresWriterPermission` # @return [Boolean] attr_accessor :copy_requires_writer_permission alias_method :copy_requires_writer_permission?, :copy_requires_writer_permission # Whether access to this Team Drive and items inside this Team Drive is # restricted to users of the domain to which this Team Drive belongs. This # restriction may be overridden by other sharing policies controlled outside of # this Team Drive. # Corresponds to the JSON property `domainUsersOnly` # @return [Boolean] attr_accessor :domain_users_only alias_method :domain_users_only?, :domain_users_only # Whether access to items inside this Team Drive is restricted to members of # this Team Drive. # Corresponds to the JSON property `teamMembersOnly` # @return [Boolean] attr_accessor :team_members_only alias_method :team_members_only?, :team_members_only def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @admin_managed_restrictions = args[:admin_managed_restrictions] if args.key?(:admin_managed_restrictions) @copy_requires_writer_permission = args[:copy_requires_writer_permission] if args.key?(:copy_requires_writer_permission) @domain_users_only = args[:domain_users_only] if args.key?(:domain_users_only) @team_members_only = args[:team_members_only] if args.key?(:team_members_only) end end end # A list of Team Drives. class TeamDriveList include Google::Apis::Core::Hashable # The list of Team Drives. # Corresponds to the JSON property `items` # @return [Array] attr_accessor :items # This is always drive#teamDriveList # Corresponds to the JSON property `kind` # @return [String] attr_accessor :kind # The page token for the next page of Team Drives. # Corresponds to the JSON property `nextPageToken` # @return [String] attr_accessor :next_page_token def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @items = args[:items] if args.key?(:items) @kind = args[:kind] if args.key?(:kind) @next_page_token = args[:next_page_token] if args.key?(:next_page_token) end end # Information about a Drive user. class User include Google::Apis::Core::Hashable # A plain text displayable name for this user. # Corresponds to the JSON property `displayName` # @return [String] attr_accessor :display_name # The email address of the user. # Corresponds to the JSON property `emailAddress` # @return [String] attr_accessor :email_address # Whether this user is the same as the authenticated user for whom the request # was made. # Corresponds to the JSON property `isAuthenticatedUser` # @return [Boolean] attr_accessor :is_authenticated_user alias_method :is_authenticated_user?, :is_authenticated_user # This is always drive#user. # Corresponds to the JSON property `kind` # @return [String] attr_accessor :kind # The user's ID as visible in the permissions collection. # Corresponds to the JSON property `permissionId` # @return [String] attr_accessor :permission_id # The user's profile picture. # Corresponds to the JSON property `picture` # @return [Google::Apis::DriveV2::User::Picture] attr_accessor :picture def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @display_name = args[:display_name] if args.key?(:display_name) @email_address = args[:email_address] if args.key?(:email_address) @is_authenticated_user = args[:is_authenticated_user] if args.key?(:is_authenticated_user) @kind = args[:kind] if args.key?(:kind) @permission_id = args[:permission_id] if args.key?(:permission_id) @picture = args[:picture] if args.key?(:picture) end # The user's profile picture. class Picture include Google::Apis::Core::Hashable # A URL that points to a profile picture of this user. # Corresponds to the JSON property `url` # @return [String] attr_accessor :url def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @url = args[:url] if args.key?(:url) end end end end end end