// 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 "proto/actions_assertion.proto";
import "proto/ai_disclosure_assertion.proto";
import "proto/bmff_based_hash_assertion.proto";
import "proto/boxes_hash_assertion.proto";
import "proto/collection_data_hash_assertion.proto";
import "proto/data_hash_assertion.proto";
import "proto/environmental_sustainability_assertion.proto";
import "proto/ingredient_assertion.proto";
import "proto/metadata_assertion.proto";
import "proto/multi_asset_hash_assertion.proto";
import "proto/redacted_assertion.proto";
import "proto/repository_receipt_assertion.proto";
import "proto/soft_binding_assertion.proto";
import "proto/thumbnail_assertion.proto";

// A standard assertion used by C2PA implementations about when, where and how
// an asset or an ingredient of a composed asset was originated or transformed.
//
// See
// https://spec.c2pa.org/specifications/specifications/2.4/specs/C2PA_Specification.html#_c2pa_standard_assertions
// for more details.
message Assertion {
  // A label defined by the C2PA specification. The list of publicly known
  // labels can be found at
  // https://spec.c2pa.org/specifications/specifications/2.4/specs/C2PA_Specification.html#_c2pa_standard_assertions.
  string label = 1;
  reserved 2, 3, 8;
  oneof assertion {
    ActionsAssertion actions = 4;
    ActionsAssertionV1 actions_v1 = 13;
    // No longer produced by the assertion parser.
    IngredientAssertionV1 ingredient_v1 = 12 [deprecated = true];
    // No longer produced by the assertion parser.
    IngredientAssertionV2 ingredient_v2 = 5 [deprecated = true];
    IngredientAssertionV3 ingredient_v3 = 14;
    BmffBasedHashAssertion bmff_based_hash = 6;
    DataHashAssertion data_hash = 7;
    BoxesHashAssertion boxes_hash = 9;
    ThumbnailAssertion claim_thumbnail = 10;
    ThumbnailAssertion ingredient_thumbnail = 11;
    MetadataAssertion metadata = 15;
    RedactedCustomAssertion redacted_custom = 16;
    RedactedGatheredAssertion redacted_gathered = 17;
    RedactedDeprecatedAssertion redacted_deprecated = 18;
    RedactedByGeneratorAssertion redacted_by_generator = 20;
    MultiAssetHashAssertion multi_asset_hash = 19;
    CollectionDataHashAssertion collection_data_hash = 21;
    AiDisclosureAssertion ai_disclosure = 22;
    EnvironmentalSustainabilityAssertion environmental_sustainability = 23;
    RepositoryReceiptAssertion repository_receipt = 24;
    SoftBindingAssertion soft_binding = 25;
  }
}
