// Copyright 2018 The Feed Authors.
//
// 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.

syntax = "proto2";

package search.now.wire.feed;

option optimize_for=LITE_RUNTIME;

import "src/main/proto/search/now/wire/feed/action_properties.proto";
import "src/main/proto/search/now/wire/feed/content_id.proto";
import "src/main/proto/search/now/wire/feed/semantic_properties.proto";

option java_package = "com.google.search.now.wire.feed";
option java_outer_classname = "PayloadMetadataProto";

// Metadata common to all payloads in a DataOperation.
message PayloadMetadata {
  // The unique identifier of the payload.
  optional ContentId content_id = 1;

  // Payload semantic properties
  optional SemanticProperties semantic_properties = 2;

  // Data relevant for actions that can be taken on this content.
  optional ActionProperties action_properties = 3;
}
