/*
 * Copyright (C) 2022 The Android Open Source Project
 *
 * 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 = "proto3";

package pcc.chronicle.api.storage;

option java_multiple_files = true;
option java_package = "com.android.libraries.pcc.chronicle.api.storage";

message Timestamp {
  // Represents seconds of UTC time since Unix epoch
  // 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to
  // 9999-12-31T23:59:59Z inclusive.
  int64 seconds = 1;

  // Non-negative fractions of a second at nanosecond resolution. Negative
  // second values with fractions must still have non-negative nanos values
  // that count forward in time. Must be from 0 to 999,999,999
  // inclusive.
  int32 nanos = 2;
}

/**
 * Encompasses metadata related to entities which may be useful for policy
 * enforcement or deletion propagation purposes.
 */
message EntityMetadata {
  /**
   * Unique Identifier for the entity associated with this metadata.
   */
  string id = 1;

  /**
   * Timestamp corresponding to when the entity associated with this metadata
   * was created.
   */
  Timestamp created = 2;

  /**
   * Timestamp corresponding to when the entity associated with this metadata
   * was last updated.
   */
  Timestamp updated = 3;

  /**
   * PackageNames of the applications from which the entity associated with this
   * metadata originated, or the applications it may be related-to via an entity
   * or entities it was derived-from.
   */
  repeated string associated_package_names = 4;
}