# encoding: utf-8
# Code generated by Microsoft (R) AutoRest Code Generator.
# Changes may cause incorrect behavior and will be lost if the code is
# regenerated.

module Azure::Cosmosdb::Mgmt::V2020_06_01_preview
  module Models
    #
    # Parameters to indicate the information about the restore.
    #
    class RestoreParameters

      include MsRestAzure

      # @return [RestoreMode] Describes the mode of the restore. Possible
      # values include: 'PointInTime'
      attr_accessor :restore_mode

      # @return [String] The id of the restorable database account from which
      # the restore has to be initiated. For example:
      # /subscriptions/{subscriptionId}/providers/Microsoft.DocumentDB/locations/{location}/restorableDatabaseAccounts/{restorableDatabaseAccountName}
      attr_accessor :restore_source

      # @return [DateTime] Time to which the account has to be restored
      # (ISO-8601 format).
      attr_accessor :restore_timestamp_in_utc

      # @return [Array<DatabaseRestoreResource>] List of specific databases
      # available for restore.
      attr_accessor :databases_to_restore


      #
      # Mapper for RestoreParameters class as Ruby Hash.
      # This will be used for serialization/deserialization.
      #
      def self.mapper()
        {
          client_side_validation: true,
          required: false,
          serialized_name: 'RestoreParameters',
          type: {
            name: 'Composite',
            class_name: 'RestoreParameters',
            model_properties: {
              restore_mode: {
                client_side_validation: true,
                required: false,
                serialized_name: 'restoreMode',
                type: {
                  name: 'String'
                }
              },
              restore_source: {
                client_side_validation: true,
                required: false,
                serialized_name: 'restoreSource',
                type: {
                  name: 'String'
                }
              },
              restore_timestamp_in_utc: {
                client_side_validation: true,
                required: false,
                serialized_name: 'restoreTimestampInUtc',
                type: {
                  name: 'DateTime'
                }
              },
              databases_to_restore: {
                client_side_validation: true,
                required: false,
                serialized_name: 'databasesToRestore',
                type: {
                  name: 'Sequence',
                  element: {
                      client_side_validation: true,
                      required: false,
                      serialized_name: 'DatabaseRestoreResourceElementType',
                      type: {
                        name: 'Composite',
                        class_name: 'DatabaseRestoreResource'
                      }
                  }
                }
              }
            }
          }
        }
      end
    end
  end
end
