// Copyright 2023 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
//
//     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 google.ads.googleads.v13.errors;

option csharp_namespace = "Google.Ads.GoogleAds.V13.Errors";
option go_package = "google.golang.org/genproto/googleapis/ads/googleads/v13/errors;errors";
option java_multiple_files = true;
option java_outer_classname = "ConversionUploadErrorProto";
option java_package = "com.google.ads.googleads.v13.errors";
option objc_class_prefix = "GAA";
option php_namespace = "Google\\Ads\\GoogleAds\\V13\\Errors";
option ruby_package = "Google::Ads::GoogleAds::V13::Errors";

// Proto file describing conversion upload errors.

// Container for enum describing possible conversion upload errors.
message ConversionUploadErrorEnum {
  // Enum describing possible conversion upload errors.
  enum ConversionUploadError {
    // Enum unspecified.
    UNSPECIFIED = 0;

    // The received error code is not known in this version.
    UNKNOWN = 1;

    // The request contained more than 2000 conversions.
    TOO_MANY_CONVERSIONS_IN_REQUEST = 2;

    // The specified gclid could not be decoded.
    UNPARSEABLE_GCLID = 3;

    // The specified conversion_date_time is before the event time
    // associated with the given identifier or iOS URL parameter.
    CONVERSION_PRECEDES_EVENT = 42;

    // The click associated with the given identifier or iOS URL parameter is
    // either too old to be imported or occurred outside of the click through
    // lookback window for the specified conversion action.
    EXPIRED_EVENT = 43;

    // The click associated with the given identifier or iOS URL parameter
    // occurred too recently. Try uploading again after 6 hours have
    // passed since the click occurred.
    TOO_RECENT_EVENT = 44;

    // The click associated with the given identifier or iOS URL parameter could
    // not be found in the system. This can happen if the identifier or iOS URL
    // parameter are collected for non Google Ads clicks.
    EVENT_NOT_FOUND = 45;

    // The click associated with the given identifier or iOS URL parameter is
    // owned by a customer account that the uploading customer does not manage.
    UNAUTHORIZED_CUSTOMER = 8;

    // No upload eligible conversion action that matches the provided
    // information can be found for the customer.
    INVALID_CONVERSION_ACTION = 9;

    // The specified conversion action was created too recently.
    // Try the upload again after 4-6 hours have passed since the
    // conversion action was created.
    TOO_RECENT_CONVERSION_ACTION = 10;

    // The click associated with the given identifier does not contain
    // conversion tracking information.
    CONVERSION_TRACKING_NOT_ENABLED_AT_IMPRESSION_TIME = 11;

    // The specified conversion action does not use an external attribution
    // model, but external_attribution_data was set.
    EXTERNAL_ATTRIBUTION_DATA_SET_FOR_NON_EXTERNALLY_ATTRIBUTED_CONVERSION_ACTION =
        12;

    // The specified conversion action uses an external attribution model, but
    // external_attribution_data or one of its contained fields was not set.
    // Both external_attribution_credit and external_attribution_model must be
    // set for externally attributed conversion actions.
    EXTERNAL_ATTRIBUTION_DATA_NOT_SET_FOR_EXTERNALLY_ATTRIBUTED_CONVERSION_ACTION =
        13;

    // Order IDs are not supported for conversion actions which use an external
    // attribution model.
    ORDER_ID_NOT_PERMITTED_FOR_EXTERNALLY_ATTRIBUTED_CONVERSION_ACTION = 14;

    // A conversion with the same order id and conversion action combination
    // already exists in our system.
    ORDER_ID_ALREADY_IN_USE = 15;

    // The request contained two or more conversions with the same order id and
    // conversion action combination.
    DUPLICATE_ORDER_ID = 16;

    // The call occurred too recently. Try uploading again after 12 hours
    // have passed since the call occurred.
    TOO_RECENT_CALL = 17;

    // The click that initiated the call is too old for this conversion to be
    // imported.
    EXPIRED_CALL = 18;

    // The call or the click leading to the call was not found.
    CALL_NOT_FOUND = 19;

    // The specified conversion_date_time is before the call_start_date_time.
    CONVERSION_PRECEDES_CALL = 20;

    // The click associated with the call does not contain conversion tracking
    // information.
    CONVERSION_TRACKING_NOT_ENABLED_AT_CALL_TIME = 21;

    // The caller's phone number cannot be parsed. It should be formatted either
    // as E.164 "+16502531234", International "+64 3-331 6005" or US national
    // number "6502531234".
    UNPARSEABLE_CALLERS_PHONE_NUMBER = 22;

    // A conversion with this timestamp already exists for this click. To upload
    // another conversion, use a different timestamp.
    CLICK_CONVERSION_ALREADY_EXISTS = 23;

    // A conversion with this timestamp already exists for this call. To upload
    // another conversion, use a different timestamp.
    CALL_CONVERSION_ALREADY_EXISTS = 24;

    // This conversion has the same click and timestamp as another conversion in
    // the request. To upload another conversion for this click, use a
    // different timestamp.
    DUPLICATE_CLICK_CONVERSION_IN_REQUEST = 25;

    // This conversion has the same call and timestamp as another conversion in
    // the request. To upload another conversion for this call, use a
    // different timestamp.
    DUPLICATE_CALL_CONVERSION_IN_REQUEST = 26;

    // The custom variable is not enabled.
    CUSTOM_VARIABLE_NOT_ENABLED = 28;

    // The value of the custom variable contains personally identifiable
    // information (PII), such as an email address or phone number.
    CUSTOM_VARIABLE_VALUE_CONTAINS_PII = 29;

    // The click associated with the given identifier or iOS URL parameter isn't
    // from the account where conversion tracking is set up.
    INVALID_CUSTOMER_FOR_CLICK = 30;

    // The click associated with the given call isn't from the account where
    // conversion tracking is set up.
    INVALID_CUSTOMER_FOR_CALL = 31;

    // The conversion can't be uploaded because the conversion source didn't
    // comply with the App Tracking Transparency (ATT) policy or the person who
    // converted didn't consent to tracking.
    CONVERSION_NOT_COMPLIANT_WITH_ATT_POLICY = 32;

    // No click was found for the provided user identifiers. This may be because
    // the conversion did not come from a Google Ads campaign.
    CLICK_NOT_FOUND = 33;

    // The provided user identifier is not a SHA-256 hash. It is either unhashed
    // or hashed using a different hash function.
    INVALID_USER_IDENTIFIER = 34;

    // Conversion actions which use an external attribution model cannot be used
    // with UserIdentifier.
    EXTERNALLY_ATTRIBUTED_CONVERSION_ACTION_NOT_PERMITTED_WITH_USER_IDENTIFIER =
        35;

    // The provided user identifier is not supported. ConversionUploadService
    // only supports hashed_email and hashed_phone_number.
    UNSUPPORTED_USER_IDENTIFIER = 36;

    // gbraid and wbraid are both set in the request. Only one is allowed.
    GBRAID_WBRAID_BOTH_SET = 38;

    // The specified wbraid could not be decoded.
    UNPARSEABLE_WBRAID = 39;

    // The specified gbraid could not be decoded.
    UNPARSEABLE_GBRAID = 40;

    // Conversion actions which use the one-per-click counting type cannot be
    // used with gbraid or wbraid.
    ONE_PER_CLICK_CONVERSION_ACTION_NOT_PERMITTED_WITH_BRAID = 46;

    // Per our customer data policies, enhanced conversions have been prohibited
    // in your account. If you have any questions, contact your Google
    // representative.
    CUSTOMER_DATA_POLICY_PROHIBITS_ENHANCED_CONVERSIONS = 47;

    // The customer has not accepted the customer data terms in the conversion
    // settings page.
    CUSTOMER_NOT_ACCEPTED_CUSTOMER_DATA_TERMS = 48;

    // The order_id contains personally identifiable information (PII), such as
    // an email address or phone number.
    ORDER_ID_CONTAINS_PII = 49;

    // The customer has not enabled enhanced conversions for leads in the
    // conversion settings page.
    CUSTOMER_NOT_ENABLED_ENHANCED_CONVERSIONS_FOR_LEADS = 50;
  }
}
