// Copyright 2013 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
//
// Protocol buffer definitions for Drive backend of Syncable FileSystem.
syntax = "proto2";
option optimize_for = LITE_RUNTIME;
package sync_file_system.drive_backend;
enum FileKind {
FILE_KIND_UNSUPPORTED = 0;
FILE_KIND_FILE = 1;
FILE_KIND_FOLDER = 2;
}
enum TrackerKind {
TRACKER_KIND_REGULAR = 0;
TRACKER_KIND_APP_ROOT = 1;
TRACKER_KIND_DISABLED_APP_ROOT = 2;
}
message ServiceMetadata {
optional int64 largest_change_id = 1;
optional int64 sync_root_tracker_id = 2;
// The sequence number of FileTrackers. Must be positive.
optional int64 next_tracker_id = 3;
optional bool sync_root_revalidated = 4;
}
// Holds details of file/folder metadata.
message FileDetails {
repeated string parent_folder_ids = 1;
optional string title = 2;
optional FileKind file_kind = 3;
optional string md5 = 4;
optional string etag = 5;
// Creation time and modification time of the resource.
// Serialized by Time::ToInternalValue.
optional int64 creation_time = 6;
optional int64 modification_time = 7;
optional bool missing = 8;
optional int64 change_id = 9;
}
// Represents a server-side file.
message FileMetadata {
// File ID of the remote file/folder which the FileMetadata represents.
required string file_id = 1;
optional FileDetails details = 2;
}
// Represents synced local file.
message FileTracker {
// A unique sequence number to identify the tracker. Must be positive.
required int64 tracker_id = 1;
// Points the parent tracker in the tracker tree. 0 if there's no parent.
required int64 parent_tracker_id = 2;
required string file_id = 3;
optional string app_id = 4;
optional TrackerKind tracker_kind = 5;
// Available on an active tracker.
// Represents detailed file information on last remote-to-local sync.
optional FileDetails synced_details = 6;
// True if the file is changed since the last update for this file.
optional bool dirty = 7;
// True if the FileTracker is active.
// Remote file modification should only be applied to active trackers.
// Active FileTracker must have a unique title under its parent.
optional bool active = 8;
// Valid only for folders.
// True if the folder contents have not yet been fetched.
optional bool needs_folder_listing = 9;
}