def modify_attribute(options = {})
      options = options.merge(snapshot_id: @id)
      resp = @client.modify_snapshot_attribute(options)
      resp.data
    end
def modify_attribute(options = {})
      options = options.merge(snapshot_id: @id)
      resp = @client.modify_snapshot_attribute(options)
      resp.data
    end
@example Request syntax with placeholder values

   snapshot.modify_attribute({
     attribute: "productCodes", # accepts productCodes, createVolumePermission
     create_volume_permission: {
       add: [
         {
           group: "all", # accepts all
           user_id: "String",
         },
       ],
       remove: [
         {
           group: "all", # accepts all
           user_id: "String",
         },
       ],
     },
     group_names: ["String"],
     operation_type: "add", # accepts add, remove
     user_ids: ["String"],
     dry_run: false,
   })
 @param [Hash] options ({})
 @option options [String] :attribute
   The snapshot attribute to modify. Only volume creation permissions can
   be modified.
 @option options [Types::CreateVolumePermissionModifications] :create_volume_permission
   A JSON representation of the snapshot attribute modification.
 @option options [Array<String>] :group_names
   The group to modify for the snapshot.
 @option options [String] :operation_type
   The type of operation to perform to the attribute.
 @option options [Array<String>] :user_ids
   The account ID to modify for the snapshot.
 @option options [Boolean] :dry_run
   Checks whether you have the required permissions for the action,
   without actually making the request, and provides an error response.
   If you have the required permissions, the error response is
   `DryRunOperation`. Otherwise, it is `UnauthorizedOperation`.
 @return [EmptyStructure]