// Copyright 2026 Google LLC
//
// 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
//
//    https://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.
//

edition = "2024";

package credentio;

import "cbor/tags.proto";
import "google/protobuf/struct.proto";

// Schema for Repository Receipt Metadata (c2pa.repository-receipt)
// Matches C2PA 2.4 technical specification.
message RepositoryReceiptAssertion {
  message Repository {
    // Required. The URI of the repository.
    string uri = 1;

    // Required. The unique ID of the ingested manifest.
    string manifest_id = 2;
  }

  message Anchor {
    // Required. A reference URI for the receipt.
    string uri = 1;

    // Optional. Parameters used when referencing the ingestion proof.
    google.protobuf.Struct parameters = 2 [(cbor.tags) = { mode: MODE_SKIP }];

    // Required. Cryptographic proof confirming the ingestion.
    google.protobuf.Struct proof = 3 [(cbor.tags) = { mode: MODE_SKIP }];
  }

  // Required. Details of the repository.
  Repository repository = 1;

  // Required. Details of the anchor/proof.
  Anchor anchor = 2;
}
